【发布时间】:2022-02-08 03:50:19
【问题描述】:
我在 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
此外,无论我定义什么 exR 范围,它都会完成整个范围的执行,但最后会调用 MyErrorHandler。有什么原因吗?
【问题讨论】:
-
您的错误处理程序被调用,因为您没有在到达子程序之前退出它。在
MyErrorHandler:之前添加exit sub。我也没有在任何地方看到On Error Goto -
@Nick.McDermaid 谢谢,这解决了一个问题......但主要问题仍然是遇到的错误 462。你能帮我解决这个问题吗? :(