請問BCB如何抓到目前Excel有哪些Topics? |
答題得分者是:RaynorPao
|
kelon
一般會員 ![]() ![]() 發表:17 回覆:27 積分:18 註冊:2002-07-22 發送簡訊給我 |
請教各位
目前我的程式有個需求要抓到目前開啟的Excel的所有Topics 比如default開啟Excel就有Sheet1,Sheet2,Sheet3這三個Topics 使用的介面是DDE Service 請問各位要怎麼才能抓到目前所有Excel的Topics 謝謝 目前我google了 大概知道要用TDdeClientConv & TDdeClientItem DdeClientConv1->SetLink("Excel","System"); DdeClientConv1->OpenLink(); DdeClientItem1->DdeItem="Topics"; 不過在Item & Line裡還是沒有抓到Topic 是哪裡有問題呢 @@ 編輯記錄
kelon 重新編輯於 2008-08-18 11:12:07, 註解 無‧
|
RaynorPao
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
(1)我沒有用過 DDE Service,因此不清楚你目前的寫法該如何修正
(2)提供我的作法給你參考,利用 BCB 6.0 的元件 ExcelApplication 來達成,請參考以下的範例程式碼,再自行修改 [code cpp] #include "ComObj.hpp" #include "Excel_2K_SRVR.h" void __fastcall TForm1::Button1Click(TObject *Sender) { // Count sheets of a *.xls file Variant ExcelApp, ExcelBooks, ExcelBook, ExcelSheets, ExcelSheet; try { ExcelApp=Variant::CreateObject("Excel.Application"); } catch(Exception &e) { ShowMessage(e.Message); } if(ExcelApp.IsEmpty()) { return; } ExcelApp.OlePropertySet("Visible", true); // 把這行刪掉, Excel 執行畫面就不會出現 ExcelBooks=ExcelApp.OlePropertyGet("Workbooks"); try { AnsiString szXlsFile1=ExtractFilePath(Application->ExeName) "test.xls"; ExcelBook=ExcelBooks.OleFunction("Open", StringToOleStr(szXlsFile1)); } catch(Exception &e) { ShowMessage(e.Message); } if(ExcelBook.IsEmpty()) { return; } Variant SheetCount, SheetName; ExcelSheets=ExcelBook.OlePropertyGet("Worksheets"); SheetCount=ExcelSheets.OlePropertyGet("Count"); int iSheetCount=SheetCount; for(int i=0; i ExcelSheet=ExcelSheets.OlePropertyGet("Item", i 1); SheetName=ExcelSheet.OlePropertyGet("Name"); AnsiString szSheetName=SheetName; ShowMessage(szSheetName); } ExcelBook.OleFunction("Close"); ExcelApp.OleFunction("Quit"); } [/code]
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |