运行到错误462:通过Excel VBA使用WORD时,远程服务器计算机不存在

Sun*_*uza 6 excel vba

我一直试图在excel vba中以编程方式打开一个word文件,并使用书签在其中添加/编辑内容.但是,我发现在备用运行中,我得到'错误462:远程服务器不存在"错误.我研究了很多并且理解这有事做''不合格的引用;

但是我不明白如何将下面的代码片段更正为限定引用?有人可以帮忙吗?

        Set exR = ActiveSheet.Range(TestIdCol & CStr(DataRowNum) & ":" & TestIdCol & CStr(RowEnd))

           ExistingEvidenceDoc = UseFileDialogOpen("Word Documents", "*.doc;*.docx")

           Set objWord = CreateObject("Word.Application")

           If ExistingEvidenceDoc <> "" Then
                Set objDoc = objWord.Documents.Open(ExistingEvidenceDoc)
           Else
                Exit Sub
           End If

           objWord.Visible = True
           Application.Wait Now() + TimeSerial(0, 0, 5)


           Set objSelection = objWord.Selection

           getExistingEvidences = ExistingTestEvidences(objDoc)
           o = DataRowNum
            For Each cell In exR
                If cell.Value <> "" And Not IsInArray(cell.Value, getExistingEvidences) Then
                    objSelection.Style = ActiveDocument.Styles("Heading 1")
                    objSelection.TypeText text:="Heading " + cell.Value
                    objSelection.TypeParagraph
                    objSelection.MoveLeft
                    objSelection.HomeKey Unit:=wdLine
                    objSelection.EndKey Unit:=wdLine, Extend:=wdExtend
                    objDoc.Bookmarks.Add Name:="BMrk" + CStr(o), Range:=objSelection
                    objSelection.Copy
                    ActiveSheet.Range("Q" + CStr(o)).Select
                           ActiveSheet.PasteSpecial Format:="Hyperlink", Link:=False, DisplayAsIcon _
                                   :=False
                    objSelection.MoveRight

                    'objSelection.Style = ActiveDocument.Styles("Paragraph")
                    objSelection.TypeText text:=Range(DescriptionCol + CStr(cell.Row)).Value
                    objSelection.TypeParagraph


                ElseIf IsInArray(cell.Value, getExistingEvidences) = False Then
                    objSelection.EndKey
                    objSelection.Style = ActiveDocument.Styles("Heading 1")
                    objSelection.TypeText text:="Heading " + cell.Value
                    objSelection.TypeParagraph
                    objSelection.MoveLeft
                    objSelection.HomeKey Unit:=wdLine
                    objSelection.EndKey Unit:=wdLine, Extend:=wdExtend
                    objDoc.Bookmarks.Add Name:="BMrk" + CStr(o), Range:=objSelection
                    objSelection.Copy
                    ActiveSheet.Range("Q" + CStr(o)).Select
                           ActiveSheet.PasteSpecial Format:="Hyperlink", Link:=False, DisplayAsIcon _
                                   :=False
                    objSelection.MoveRight

                    'objSelection.Style = ActiveDocument.Styles("Paragraph")
                    objSelection.TypeText text:=Range(DescriptionCol + CStr(cell.Row)).Value
                    objSelection.TypeParagraph
                End If

                o = o + 1

            Next cell


        MyErrorHandler:
                MsgBox "SeeHeadingPageNumber" & vbCrLf & vbCrLf & "Err = " & Err.Number & vbCrLf & "Description: " & Err.Description
Run Code Online (Sandbox Code Playgroud)

另外,无论我定义的exR范围如何,它都会完成整个范围的执行,但最后调用了MyErrorHandler,我不明白为什么?有原因吗?

请大家帮帮我...非常感谢你的帮助.提前致谢

Ror*_*ory 10

您有两个对Word对象的非限定引用:

objSelection.Style = ActiveDocument.Styles("Heading 1")
Run Code Online (Sandbox Code Playgroud)

出现两次,需要:

objSelection.Style = objWord.ActiveDocument.Styles("Heading 1")
Run Code Online (Sandbox Code Playgroud)

否则,您正在创建一个隐含的Word引用,您无法在代码中销毁它.


Nic*_*aid 5

您首先应确保winword.exe任务管理器中没有操作。然后杀死或注销/注销以摆脱它们。

然后,您应该在代码末尾添加“类似”这样的代码:

(我不确定确切的语法,希望您能解决这个问题)

IF Not(objWord Is Nothing) Then

    objWord.Close(False)
    Set objWord = Nothing

End If
Run Code Online (Sandbox Code Playgroud)

您应该添加类似于错误处理程序的内容。

经常发生的是在开发和调试过程中,有时单词无法正确关闭,即使“孤儿”进程不可见,它们也会四处徘徊。

您可能还希望使用

Set objWord = New Word.Application
Run Code Online (Sandbox Code Playgroud)

代替

Set objWord = CreateObject("Word.Application")
Run Code Online (Sandbox Code Playgroud)

因为它可以自动完成等。

但是每种方式都有区域优势。