ワードファイルを開こうとしていますプログラムでExcelのVBAとブックマークを使用してその中の内容を追加/編集します。ただし、代替実行時に "エラー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が呼び出されますが、その理由はわかりません。
みんな、私を助けてください...あなたの助けは大歓迎です。 前もって感謝します
回答:
回答№1は6Wordオブジェクトへの2つの修飾されていない参照があります。
objSelection.Style = ActiveDocument.Styles("Heading 1")
これは2回出現します。
objSelection.Style = objWord.ActiveDocument.Styles("Heading 1")
それ以外の場合は、コード内で破棄できないように、Wordへの暗黙の参照を作成しています。
回答№2については4
あなたは最初にoprhanがないことを確認する必要があります winword.exe
タスクマネージャで。それを殺すか、ログアウト/ログインしてそれらを取り除きます。
それでは、「明示的に」という言葉を閉じるために、次のようなコードを最後に追加してください。
(私は正確な文法についてよくわからない、うまくいけばあなたはそれをうまく行ける)
IF Not(objWord Is Nothing) Then
objWord.Close(False)
Set objWord = Nothing
End If
エラーハンドラに似たものを追加する必要があります。
開発やデバッグ中によく起こることですが、「正しく閉じられなかった」「孤立した」プロセスが見えなくてもハングアップすることがあります。
あなたも使用したいと思うかもしれません
Set objWord = New Word.Application
の代わりに
Set objWord = CreateObject("Word.Application")
それはあなたにオートコンプリート等を与えるので
しかし、それぞれの面で利点があります。