我有一個文件中有VBA宏,當我試圖打開它在Word 2010 64位 它抱怨代碼應該更新使用在64位系統上。 我添加了條件編譯子句#如果不是64Bit,但這沒有幫助。 還有什麼可以做的?保存在Word 2003中的文檔中的MS Word VBA在2010年導致錯誤在2010 64位
回答
您是否在使用任何ActiveX控件?例如,如果您的Word應用程序顯示一個自定義用戶窗體,那麼很可能它上面的控件(包括某些內置窗體)將無法正常工作。
從here:
ActiveX控件和COM加載 兼容性
現有32位的ActiveX控件,既 第三方和Microsoft提供的, 不與64兼容位 版本的Office 2010.對於ActiveX 控件和COM對象,有 三種可能的解決方案:
如果你的源代碼,您可以生成一個64位版本的自己,
您可以與供應商聯繫的更新版本,
可以搜索的替代解決方案。
Office 2010中的本機64位進程 無法加載32位二進制文件。此 包括 MSComCtl(TabStrip控件,工具欄, 狀態條,進度條,樹視圖, 列表視圖,ImageList中,滑塊, ImageComboBox)和 MSComCt2的對照(動畫,增減的, MonthView,的DateTimePicker, FlatScrollBar)的共同控制。這些對照者 微軟Office的早期版本安裝 和由 32位Office 2010安裝一種替代 必須找到現有利用 這些控件當代碼是 遷移到64微軟辦公 VBA的解決方案-bit Office 2010. 64位 Office 2010不提供公共控件的64位 版本。使用Office的64位版本時
Declare
statments也受到了影響:
在VBA以前的版本,有 沒有具體的指針數據類型,這樣 Long數據類型被使用。並且由於 Long數據類型始終爲32位,所以在具有 64位內存的系統上使用時會中斷,因爲32位可能會被截斷,或者可能被 覆蓋其他內存地址。 以上任何一種情況都可能導致 出現不可預知的行爲或系統 崩潰。
老Declare
聲明的例子:
Declare Function RegOpenKeyA Lib "advapi32.dll" (ByVal Key As Long, ByVal SubKey As String, NewKey As Long) As Long
要解決此問題,VBA現在包含一個 真正的指針數據類型:LongPtr。
新版本:
Declare PtrSafe Function RegOpenKeyA Lib "advapi32.dll" (ByVal Key As LongPtr, ByVal SubKey As String, NewKey As LongPtr) As Long
這種數據類型和新的PTRSAFE 屬性使您可以使用此 聲明語句在32位或 64位系統。該PTRSAFE屬性 表明對VBA編譯器的 Declare語句是針對Office 2010中的 64位版本沒有 這個屬性,使用Declare 聲明在64位系統將 結果在編譯期一時間錯誤。注意 在32位版本的Office 2010上,PtrSafe屬性爲可選 。 這使現有的Declare 語句可以像其始終 一樣工作。從here採取
行情再次
- 1. vb.net保存在Word 2010
- 2. 在WCF錯誤中創建MS-Word 2003?
- 3. 如何使用流在MS word 2010中加載和保存文檔
- 4. 使用自定義xml將Word 2003文檔轉換爲word 2010
- 5. 讀/寫/保存MS Word文檔在c#
- 6. 保存Word文檔 - 錯誤
- 7. 獲得「隱藏模塊中的編譯錯誤:SmartTagsMod」,而在MS Word中打開一個Word文檔2010
- 8. Word 2010在保存到WebDAV服務器後報告錯誤
- 9. 在Word 2007/2010
- 10. 將Word 97-2003 .dot加載到Word 2010時出現錯誤
- 11. 添加「ENTER」鍵在Word 2010中VBA宏
- 12. 如何在Word 2010
- 13. 刪除Word字段VBA不能在Word 2013中工作,在Word 2010中工作
- 14. 如何在Visual Studio 2010中保存MS Word中的文本框值?
- 15. Visual Studio 2010中的Word 2007文檔
- 16. Word文檔2010中的內容控件
- 17. Ms Word Vba命令按鈕在Word文檔上插入文本
- 18. 查看MS Word 2010中的.doc文件的VBA腳本
- 19. MS Word Macros 2003-2007
- 20. MS Word 2010中的內容列表
- 21. 從MS Word 2003中轉換Word模板MS Word 2007中
- 22. Word 2003模板 - 文檔保存
- 23. VBA在Word 2016中編譯但不是Word 2010
- 24. 在MS Word 2010中另存爲的鍵盤快捷鍵
- 25. 如何在2010年編輯頁腳宏 - 啓用word文檔
- 26. 在Word 2003中xml:space =「preserve」XML文檔
- 27. MS Word 2010.如何訪問存儲在我正在使用的文檔以外的文檔中的宏?
- 28. Word 2010 VBA複選框
- 29. Word 2010中的互操作:編輯word文檔頁眉
- 30. Word 2010中 - 強制格式化文檔
謝謝。它抱怨在VBA中聲明語句,所以我不認爲ActiveX控件是責備 – SparcU 2011-07-05 13:02:55
@SparcU - Declare語句也受到影響 - 我會更新我的答案 – barrowc 2011-07-06 05:40:21