首页 > 解决方案 > 在 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

标签: excelvbamacosms-wordole

解决方案


我正在使用以下 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


推荐阅读