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

Delphi XE4 以import type library 建立excel2016 wrappered unit 但出錯"類別未登入"

尚未結案
yirunner
一般會員


發表:11
回覆:8
積分:3
註冊:2002-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-06-21 22:38:07 IP:118.168.xxx.xxx 訂閱
大家好:

步驟如下:
1. 安裝了office 2016 以後, 我在Delphi XE4 上, 以import type library 方式, 選擇"Microsoft excel 16 object library" 產生wrapper units


2. 接著以package 將wrapper unit 包裝, install 到元件列中(因為已存在 office 2000 automation server wrapper components, 故要先將此bpl remove, 並先將 [xe4]\bin\dcloffice2K180.bpl 刪除 才能夠安裝成功)

3. 當使用產生的元件時: for i:=0 to fExcelapp.Worksheets.count-1 , 其中fExcelapp 是TExcelApplication type. 會有如下錯誤:
OLE error: 80A03EC

4. 關閉程式時 會出現錯誤:
E: 類別未登錄, CID: {00020819-0000-0000-C000-000000000046}

5. 經過網路上爬文, 嘗試以指令方式註冊com server
C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.exe" /regserver
參考 : http://excel.tips.net/T002952_Library_Not_Registered_Error.html
or
C:\Program Files (x86)\Microsoft Office\root\Office16\Excel.exe" /REGSERVERPERUSER
參考 : http://stackoverflow.com/questions/31089905/registering-ole-server-in-delphi-xe5-and-non-pascal-codes-in-ridl-file
但都無法解決問題

請各位前輩提供經驗, 是否office 2013 以後的版本還能夠用wrapper unit 產生TExcelApplication TExcelWorkBook 等元件來存取Excel ?

感謝大家 !!
編輯記錄
yirunner 重新編輯於 2016-06-22 08:31:33, 註解 無‧
yirunner 重新編輯於 2016-06-22 08:34:01, 註解 無‧
yirunner 重新編輯於 2016-06-22 08:35:26, 註解 無‧
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2016-06-22 08:30:16 IP:59.127.xxx.xxx 訂閱
您使用的作業系統是?
如果是 Windows 8 以上,註冊 COM 元件時是否有「以系統管理員執行」?
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
yirunner
一般會員


發表:11
回覆:8
積分:3
註冊:2002-09-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2016-06-22 08:39:39 IP:220.130.xxx.xxx 訂閱
您好:
感謝您的回覆.

===================引 用 sryang 文 章===================
您使用的作業系統是?
如果是 Windows 8 以上,註冊 COM 元件時是否有「以系統管理員執行」?
<== 我的作業系統是 Win7 64 位元 professional 版本, 步驟最後爬文的註冊方式已經以系統管理員啟動 CMD 後再執行了.

目前已知 office 2013 及 office 2016 都會有問題
謝謝 !
JamesJuan
中階會員


發表:2
回覆:76
積分:80
註冊:2003-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2016-06-22 17:08:25 IP:61.216.xxx.xxx 未訂閱
如果已經產生 xxx_TLB.pas 的檔案了,是不是直接 use 就好,不一定非得要 install 到元件盤中
之前在 XE6 測試使用 powerpoint 是可以的
yirunner
一般會員


發表:11
回覆:8
積分:3
註冊:2002-09-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2016-06-23 16:05:51 IP:220.130.xxx.xxx 訂閱

===================引 用 JamesJuan 文 章===================
如果已經產生 xxx_TLB.pas 的檔案了,是不是直接 use 就好,不一定非得要 install 到元件盤中
之前在 XE6 測試使用 powerpoint 是可以的

<== 感謝 James 的提醒, 我先將元件以object 取代後, 問題仍會發生....
之後逐一排查 最後發現原因是:
因為我會將excel setparent 到自己的form 上, 但excel2013 以上版本, setparent 動作必須在讀入excel 檔案以後 否則就會產生錯誤
但為何會有這樣的差別, 請各位不吝賜教

謝謝 !
系統時間:2024-03-29 6:24:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!