文章編號: 288902 - 上次校閱: 2007年3月19日 - 版次: 9.2 Office 自動化伺服器的 GetObject 和 CreateObject 行為
在此頁中結論 本文將告訴您,當您在各種版本的 Microsoft Office 應用程式使用 GetObject 和 CreateObject 函數時,所發生的不同行為。GetObject 和 CreateObject 是由 Microsoft Visual Basic 和 Microsoft Visual Basic for
Applications (VBA) 提供的函數。不過,如果您將 GetObject 的參照當成對 GetActiveObject API 的呼叫處理,以及將 CreateObject 的參照當成對 CoCreateInstance API 的呼叫處理,則此資訊也適用於 Microsoft Visual C++。 其他相關資訊GetObjectGetObject 用於附加至自動化伺服器的執行中執行個體。有幾種不同的方法可以呼叫 GetObject,但是針對 Microsoft Office 應用程式建議的語法如下: 執行階段錯誤
'429': ActiveX component can't create object (ActiveX 元件無法建立物件) 如果您知道執行個體中開啟之文件的名稱,則可以附加至特定的執行個體。例如,如果有一個 Excel 的執行個體在執行中,並開啟了名為 Book2 的活頁簿,則即使該執行個體並非最早啟動的執行個體,下列程式碼仍會成功地附加至該執行個體: CreateObjectCreateObject 用於啟動自動化伺服器的新執行個體。例如:下表可做為實作 Microsoft Office 解決方案時的實用參照。表中列出 Microsoft Office 的各種版本和應用程式的行為與屬性,例如,伺服器啟動時是否預設為可見、是屬於 SingleUse 或 MultiUse、是否有 UserControl 屬性、是否有 Quit 方法,以及其主視窗的類別名稱。 摺疊此表格
當您想要輕鬆地知道是否已有任何執行個體在執行時,主視窗類別名稱對呼叫 FindWindow API 非常有用。UserControl 屬性是布林屬性,指出當伺服器應用程式的最後參照釋放 (設定為無) 後,伺服器應用程式是否會自動關閉。Quit 方法可讓您在必要時 (例如執行個體未在最後參照釋放後關閉) 覆寫 UserControl 屬性。 一般而言,Microsoft 建議您使用新的 Office 應用程式執行個體,而不要附加至使用者可能正在使用的執行個體。最好是使用應用程式 ProgID 建立執行個體,然後從該執行個體開啟或建立新物件。其他 ProgID,例如 Excel.Sheet 和 Word.Document...等等,是要在 OLE (物件連結與內嵌) 中使用,搭配 CreateObject 使用時可能會產生不一致的結果。使用應用程式 ProgID,可明確地啟動自動化 (而非內嵌) 的伺服器,以避免潛在的問題。 當您完成自動化伺服器之後,請釋放對伺服器的所有參照,並呼叫其 Quit 方法 (如果有),讓伺服器能如預期地關閉。如果您要透過自動化來設定執行個體,然後讓其保持開啟以供使用者使用,則必須將 UserControl 屬性設定為 TRUE,再釋放您所有的參照。之後伺服器會保持執行 (因為 UserControl 屬性為 TRUE),並在使用者關閉應用程式時適當地關閉 (因為沒有未處理的參照)。 請注意 Word 的 UserControl 屬性是唯讀的。無法設定為 True 或 False。Word 一律會在最後一個參照釋放後保持執行。 ?考 如需有關使用 GetObject/CreateObject
的詳細資訊,以及了解在 Microsoft Office 使用自動化的例外和問題,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件: 222783?
(http://support.microsoft.com/kb/222783/
)
PPT2000:CreateObject Does Not Create New PowerPoint Session
188546?
(http://support.microsoft.com/kb/188546/
)
BUG:Starting Word Manually Uses Same Instance as Automation
265385?
(http://support.microsoft.com/kb/265385/
)
INFO:PowerPoint 97 和 PowerPoint 2000 Viewers 的 Automation 模式
259940?
(http://support.microsoft.com/kb/259940/
)
BUG:Word 2000 Does Not Quit When Keybindings.ClearAll Is Called
258511?
(http://support.microsoft.com/kb/258511/
)
HOWTO:Obtain Window Handle to Office Application For Automation
249169?
(http://support.microsoft.com/kb/249169/
)
PPT97:PowerPoint 97 Remains in Memory After Getting a Presentation and Being Closed
159922?
(http://support.microsoft.com/kb/159922/
)
XL97:Using Quit Method May Cause Illegal Operation
這篇文章中的資訊適用於:
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
回此頁最上方
