【发布时间】:2020-02-05 05:49:11
【问题描述】:
问题
我们的办公电脑都运行 Office 365 专业增强版,并且正在逐步更新到版本 1908(内部版本 11929.20562)。随着 PC 的更新,我们的许多 VBA 宏都因各种对象错误而失败。到目前为止,我们在 Outlook 和 WRQ Reflections(终端仿真器)这两个产品中遇到了错误。
示例
Sub master_dailyWhispirSMS_P2(myExcel As Excel.Application, myWorkbook As Excel.Workbook, worksheetName As String, testingMode As Boolean)
While Trim(myWorkbook.Worksheets(worksheetName).Cells(rowNum, 1).Value) <> ""
以上代码导致运行时错误“91”对象变量或未设置块变量
Dim myExcel As Excel.Application
Dim myWorkbook As Excel.Workbook
Set myExcel = GetObject(, "Excel.Application")
myExcel.Workbooks.Open (folderPath & "\" & fileName)
Set myWorkbook = myExcel.Workbooks(fileName)
myWorkbook.Activate
上述代码导致错误编译错误:找不到方法或数据成员。 MyWorkbook.Activate 上出现编译错误。
调查结果
到目前为止,共同的主题是我们正在使用早期绑定并使用 Microsoft Excel 对象库中的对象。
我尝试更改为使用后期绑定,这让我解决了一个问题,但有太多例程可能需要更新。
在 VBA 编辑器中,在“工具”菜单的“参考”下,Microsoft Excel 16.0 对象库显示为选中状态。我尝试删除引用,然后再次将其添加回来,这似乎解决了问题。这也适用于我同事的 PC。
寻求的想法/解决方案
此代码在 Office 更新之前可以正常工作。除了让每个单独的用户执行删除/添加之外,我还试图了解出了什么问题,以及是否有其他方法可以解决这个问题。
请注意,我对早期和后期绑定的理解仍然非常“绿色”,但我认为不知何故,对对象库的引用要么已损坏,要么只是在更新后没有指向正确的 DLL 文件。这可以解释为什么各种方法都不起作用。
【问题讨论】:
-
Dim myExcel As Excel.Application是早期绑定。如果您想使用后期绑定以使其适用于所有版本,请改用它 -Dim myExcel As Object- 您还需要删除项目中的引用。 -
你在哪一行得到编译错误?
-
从订阅转为 MSI 安装? Office 365 的更新可能超出了 Office 2019 中可用的功能。Office 2016 和 2019 是“快照”,而 Office 365 则在不断发展。 O2019 将不具有与 Office 365 相同的内容。“向后”而不是“向前”一直是 VBA 的问题/问题。对较新库的引用不会在较旧的安装上运行。规则一直是:在代码应该运行的最旧版本上开发。我认为不会有一个简单的解决方案。删除和重新附加引用的代码可能有效。
-
感谢您的回复。做了几个编辑。抱歉,我不确定最新版本的 Office 365 指的是什么。我已经输入了实际的版本号/内部版本号。还添加了哪一行出现编译错误。只是想找出我如何实施@Cindy Meister 关于创建代码以删除/重新附加的建议。只是想找出 References 对象中可用的方法和属性。
-
参见*.com/a/51313215/9439330 和相关部分(页面右侧,工作之后,热门网络问题之前)。 Office365 版本 1908 可能等同于 Office 2019。所有 office 库都更改了版本。