excel - 使用 VBA 复制模块后的 MacOS Excel 内部错误
问题描述
我需要以编程方式将一个模块(来自 Tim Hall 的词典 - https://github.com/timhall/VBA-Dictionary)从一个工作簿复制到另一个工作簿。为此,我正在使用这段代码:
Sub CopyMacrosToExistingWorkbook(SourceWB As Workbook, strModuleName As String, TargetWB As Workbook)
Dim SourceVBProject As VBIDE.VBProject, DestinationVBProject As VBIDE.VBProject
Set SourceVBProject = SourceWB.VBProject
Set DestinationVBProject = TargetWB.VBProject
Dim SourceModule As VBIDE.CodeModule, DestinationModule As VBIDE.VBComponent
Set SourceModule = SourceVBProject.VBComponents(strModuleName).CodeModule
Set DestinationModule = DestinationVBProject.VBComponents.Add(SourceModule.Parent.Type)
DestinationModule.Name = strModuleName
With SourceModule
DestinationModule.CodeModule.AddFromString .Lines(1, .CountOfLines)
End With
End Sub
在 Windows 上一切顺利,但在Mac (Office 365 版本 16.29)上,我将导入此 Dictionary 模块的文件不起作用。它无法保存,它会将这个内部错误写给我:
有趣的是,将这个损坏的文件复制到 Windows、打开、保存并返回给 Mac 就足够了。但这对我来说还不够。
我发现,如果我从 Dictionary 类模块中删除这段代码,“内部错误”不会显示,但我不能在没有这段代码的情况下使用该模块:
Public Enum CompareMethod
BinaryCompare = VBA.vbBinaryCompare
TextCompare = VBA.vbTextCompare
DatabaseCompare = VBA.vbDatabaseCompare
End Enum
所以我想,这个 Enum 类有问题。什么或哪里可能是问题?我找不到它。谢谢你的帮助。
解决方案
这是一个很长的镜头,但是您是否尝试过使用 Excel 16.28?
自 16.12 以来,我有几个运行良好的宏,但在升级到 16.29 后,我遇到了一些错误,我无法理解代码有什么问题。
我恢复到 16.28,一切都很好。
推荐阅读
- python - Python 烧瓶、apache 和 mod_wsgi 应用程序不工作
- node.js - Garmin API 中的 oAuth 标头错误
- angular - 如何键入规范化状态树的分支?
- hibernate - 创建名称为“entityManagerFactory”HibernateJpaAutoConfigure 的 bean 时出错
- python - PyAutoGui 可以在我的电脑后台运行吗
- office365 - 如何使用onenote api重命名onenote中的部分
- java - 序列化(或解析)一个 Protobuf 对象
- typo3 - Typo3 版本 8.x 异常“未找到连接池”
- sql-server - Sql Server 语言设置 - 在视图中保留英国日期设置
- java - 是否有一个 Java XML 到 JSON 库来生成没有属性的输出 JSON,其中输入 XML 具有 xsi:nil="true"