簡體   English   中英

Word-VBA 函數“對象的方法 Saveas2 失敗”

[英]Word-VBA Functions “Method Saveas2 of object failed”

我有一個也使用 word-vba 的 access-vba 應用程序。 在我的本地機器上運行該應用程序時,它運行良好。 一旦它被移動到其他人(相同版本的 access 和 word),它會在涉及到 word 的 vba 部分時崩潰。 諸如 document.open 或 .saveas2 之類的命令失敗:例如Method 'SaveAs2' of object failed

我還注意到,任何其他最終用戶都需要我在應用程序中引用的庫。 我習慣於只使用庫進行編譯,從那時起它們總是包含在 .jar/.exe/etc 中,但是,當您將應用程序移動到其他計算機時,它似乎總是試圖重新編譯?

我不太精通 VBA,所以我推測我失敗的 word-vba 函數是因為引用錯誤,還有其他想法嗎?

VBA 可以引用的“庫”實際上是COM 對象,通常打包為 DLL 文件。 它們是在運行時(如果還沒有)在請求時動態實例化的對象。 它們由 Windows 加載到內存中,您的程序使用 COM 標准與它們交互,調用方法以及獲取或設置屬性(進程間通信)。 與它們交互的方式一般有兩種:早期綁定和后期綁定。

使用早期綁定,您可以在編寫代碼的同時添加對庫的引用,這允許 VBA IDE 提供自動完成和一些編譯時錯誤檢查。 您可以使用“new”關鍵字並直接鍵入對象名稱來實例化對象。 但是,早期綁定要求您選擇特定的 dll 以及可能的特定版本的接口。 如果您引用某個用戶沒有的特定界面版本,這可能會導致問題。

使用后期綁定,您可以使用 CreateObject 或 GetObject 實例化對象,並按名稱從 Windows 請求它們。 Windows 將查找名稱並返回對對象的引用。 代碼中的變量只是對象,調用方法有點危險,因為編譯器允許你輸入任何你想要的方法名稱,並且不提供編譯時警告。 這樣做的好處是,只要您調用的是成熟的方法並且沒有新的或不贊成使用的方法,無論用戶的版本如何,代碼都可以運行。

至於您遇到的錯誤,您可能需要檢查用戶計算機上的 Office 版本 - Office 2010 中添加了SaveAs2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM