excel - 在 Mac 上从 excel 写入 word 时如何解决运行时错误?
问题描述
我在 Macbook Pro 上使用 Excel 16.54 版。下面是一段代码,它应该从 Excel 工作表中获取一些值并将它们写入 Word 文档。Word 文档与 Excel 文件存储在同一文件夹中。在Word文档中写入的整个过程是由Excel文件中的一个按钮触发的。(点击按钮时运行的一个函数)
起初,我收到“Microsoft Word 是否打开?”的提示。如果我单击是(Word 已打开)... 我会收到运行时自动化错误。如果我单击否(Word 已打开)... 我会收到运行时自动化错误。如果我单击否(Word 已关闭)... 我会收到运行时自动化错误。如果我关闭 Word 并重试,我必须单击否才能开始在 Word 文档中写入。
我的问题是我总是必须至少经历一次错误才能开始工作。我的代码有问题还是仅仅是因为我使用的是 Macbook?
更新:它在 Windows 上运行没有问题。
Dim wdApp As Object
Dim wdDoc As Object
Dim exBk As Workbook
Dim exSht As Worksheet
Set exBk = ThisWorkbook
filepath = exBk.Path & "/" & Worksheets("Content").Range("B2").Value
a = MsgBox("Is Microsoft Word Open?", vbYesNo)
If a = vbYes Then
Set wdApp = GetObject(filepath, "Word.Application")
Else
Set wdApp = CreateObject("Word.Application")
Set wdDoc = wdApp.Documents.Open(filepath)
End If
wdApp.Visible = True
解决方案
我正在使用以下 tryGet 函数来返回 WordApp。这是我接下来使用 On error resume 的场合之一。
在 Windows 上测试 - 不是 Mac
Sub test_getWord()
Dim wdApp As Object
If tryGetWordApp(wdApp) = False Then
MsgBox "Word could not be started."
Exit Sub
End If
wdApp.Visible = True
End Sub
Public Function tryGetWordApp(wdApp As Object) As Boolean
'Generic function to retrieve Word Application - regardless of wether app is already open or has to be opened.
'Returns true if wdApp could be set, otherwise false
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err > 0 Or wdApp Is Nothing Then
'Word not yet open
Err.Clear
Set wdApp = CreateObject("Word.Application")
If Err = 0 Then tryGetWordApp = True
Else
tryGetWordApp = True
End If
On Error GoTo 0
End Function
推荐阅读
- javascript - 什么是编写总结字符串长度的代码的更简单方法,包括 JavaScript 中的空值和未定义值
- python - Read Fernet Key Causes ValueError: Fernet key must be 32 url-safe base64-encoded bytes
- coq - 如何在 Coq 中为 Big Step 和 Small Step 语义定义一个单一的配置?
- react-native - react-native init 不会创建 src 文件夹
- openrave - 在 OSX 上安装 crlibm
- c# - 如何从另一个窗体更改 PictureBox 图像
- python-3.x - Python 3 如何构建文件?
- python-3.x - 如何替换列表中的元素?
- python - 如何通过字符串值查询 NDB 数据库
- node.js - Node.js:如何将 RSA 公钥转换为 OpenSSH 格式?