線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3013
推到 Plurk!
推到 Facebook!

如何利用OLE方法在EXCEL內插入附件

尚未結案
775153
一般會員


發表:1
回覆:3
積分:0
註冊:2006-07-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-26 01:13:49 IP:221.120.xxx.xxx 訂閱
請教大大們,如何能輸出EXCEL檔案時插入一個物件進去

搜尋了很久還是找不到答案,嘗試利用excel的巨集錄製出的程式來轉換

巨集錄製出的程式:
[code vb]
ActiveSheet.OLEObjects.Add(Filename:= _
"D:\Test.txt", Link:=False, _
DisplayAsIcon:=True, IconFileName:="packager.exe", IconIndex:=0, _
IconLabel:="").Select
[/code]


希望轉為BCB:
[code cpp]
AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "Test.txt";
ExcelObjects = ExcelSheet.OlePropertyGet("OLEObjects");
ExcelObjects.OleFunction("Add", StringToOleStr(szXlsFile1) );
[/code]

一直在OleFunction這行都會出錯,不知道要如何修正,還是有其他方法呢?
煩請大大們幫忙,謝謝
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-30 10:29:15 IP:122.116.xxx.xxx 訂閱
您好,

您真是惜字如金啊, 只寫
一直在OleFunction這行都會出錯,
請問出什麼錯, 有訊息代碼或文字嗎?
是 compile time 錯 還是 run time 錯?
這些都是除錯的重要資訊, 不然, 很難

請試一下
先定義一個 range,
然後 oleobject->olefunction 寫成 range->olefunction(.......);
猜的.

等一下,

bcb 是用 -> 而不是 . 吧
先把 ole什麼.什麼 都改成 ole什麼->什麼 看看
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-04-30 10:31:46, 註解 無‧
775153
一般會員


發表:1
回覆:3
積分:0
註冊:2006-07-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-02 15:32:03 IP:221.120.xxx.xxx 訂閱
很抱歉沒有描述清楚

程式編譯會OK,但只要一執行到ExcelObjects.OleFunction("Add", StringToOleStr(szXlsFile1) );
就發生下面的error message

Project Project1.exe raised execption class EOleSysError with message '發生例外狀況。'. Process Stopped. Use Step or Run to continue.


貼出程式不知道會不會較好讓您瞭解?
[code cpp]
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Variant ExcelApp, ExcelBooks, ExcelBook, ExcelSheets, ExcelSheet, UsedRange, ExcelObjects;
Variant ExcelRange, ExcelColumn, ColumnCount, ExcelRow, RowCount;
try
{
ExcelApp=Variant::CreateObject("Excel.Application");
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
if(ExcelApp.IsEmpty())
{
return;
}
ExcelApp.OlePropertySet("Visible", true);
ExcelBooks=ExcelApp.OlePropertyGet("Workbooks");
try
{
AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "test1.xls";
ExcelBook=ExcelBooks.OleFunction("Open", StringToOleStr(szXlsFile1));
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
if(ExcelBook.IsEmpty())
{
return;
}
ExcelSheets=ExcelBook.OlePropertyGet("Worksheets");
ExcelSheet=ExcelSheets.OlePropertyGet("Item", 1);

AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "Test.txt";
ExcelObjects = ExcelSheet.OlePropertyGet("OLEObjects");
ExcelObjects.OleFunction("Add", StringToOleStr(szXlsFile1) );
}

[/code]
編輯記錄
775153 重新編輯於 2009-05-02 15:35:37, 註解 無‧
helsing
一般會員


發表:7
回覆:15
積分:4
註冊:2004-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-09-06 18:13:23 IP:114.25.xxx.xxx 訂閱


AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "Test.txt"; AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "Test.txt"; // test.txt 是錯的吧,應該是test.xls 所以程式才找不到
系統時間:2017-10-21 5:47:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!