我有一个文件中有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. 在WCF错误中创建MS-Word 2003?
- 2. 如何使用流在MS word 2010中加载和保存文档
- 3. 保存Word文档 - 错误
- 4. 获得“隐藏模块中的编译错误:SmartTagsMod”,而在MS Word中打开一个Word文档2010
- 5. 将Word 97-2003 .dot加载到Word 2010时出现错误
- 6. 如何在Word 2010
- 7. Ms Word Vba命令按钮在Word文档上插入文本
- 8. Word文档2010中的内容控件
- 9. Visual Studio 2010中的Word 2007文档
- 10. 查看MS Word 2010中的.doc文件的VBA脚本
- 11. MS Word 2010中的内容列表
- 12. MS Word Macros 2003-2007
- 13. 从MS Word 2003中转换Word模板MS Word 2007中
- 14. Word 2003模板 - 文档保存
- 15. VBA在Word 2016中编译但不是Word 2010
- 16. 如何在2010年编辑页脚宏 - 启用word文档
- 17. 在Word 2003中xml:space =“preserve”XML文档
- 18. Word 2010 VBA复选框
- 19. 如何使用VBA将变量永久存储在Word 2010文档中?
- 20. 创建2007年和2010年的Word Addin
- 21. 转换Word文档的MS WORD 2003到Tiff图像
- 22. 用C#Windows窗体在MS Word中打开MS Word文档
- 23. 无法在Word 2010中引入框架
- 24. word 2010 vba,计数列
- 25. 如何将Word文档中的文本框值复制到使用VBA的不同Word文档中的文本框中(MS Word 2003)
- 26. 如何使用VBA在Word 2003文档中创建表格
- 27. 在Silverlight 3中显示Ms Word 2003 .doc
- 28. PowerShell - 处理多个Word文档(Office 2010)
- 29. 在github中合并MS Word文档
- 30. 将Word Doc保存为2003 XML与VBA
谢谢。它抱怨在VBA中声明语句,所以我不认为ActiveX控件是责备 – SparcU 2011-07-05 13:02:55
@SparcU - Declare语句也受到影响 - 我会更新我的答案 – barrowc 2011-07-06 05:40:21