2017-04-04 14 views
0

WordをExcelから自動化して、次のコードを使用しています。私が最初にコードを実行するとき、私はいつも問題なく実行することができます。しかし、2番目のインスタンスでは、私はいつもこのエラーを受け取ります。その後、Wordファイルを手動で閉じてコードを再実行する必要があります。最初はスムーズに実行され、もう一度エラーが表示されます。上記の私のノートに続きWordオートメーションエラー - サーバーマシンが存在しません

enter image description here

'On Error Resume Next 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 
    Application.Calculation = xlCalculationManual 
    Application.DisplayAlerts = False 
    Dim intChoice As Integer 
    Dim strPath As String 
    Dim objWord As Object 
    Set objWord = CreateObject("Word.Application") 
    objWord.Visible = True 
    Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False 
    intChoice = Application.FileDialog(msoFileDialogOpen).Show 
    If intChoice <> 0 Then 
'get the path selected 
    strPath = Application.FileDialog(_ 
    msoFileDialogOpen).SelectedItems(1) 
'opens the document 
    Set objdoc = objWord.Documents.Open(strPath) 
    With Documents(objdoc) '''This is where error points to in yellow ''' 
    Set myrange = ActiveDocument.Content 
    ''' My execution code here 
    end with 
    objWord.ActiveDocument.SaveAs ThisWorkbook.Path & "\" & 
    ActiveSheet.Range("E3").Value & "_MVR" 
    'objWord.ActiveDocument.Close 
    objdoc.Close 
    objWord.Quit 
    Set objdoc = Nothing 
    Set objWord = Nothing  
    Application.DisplayAlerts = True 
    Application.EnableEvents = True 
    Application.Calculation = xlCalculationAutomatic 
    Application.ScreenUpdating = True 
+0

を。あなたは、If文の中でWordオブジェクト 'Set objWord = Nothing'を「解放しています」If intChoice <> 0 Then Then'です。しかし、Set objWord = CreateObject( "Word.Application")は、とにかく作成され、 'Set objWord = Nothing'を' If'の外に移動するだけで作成した新しい** Word **インスタンスを閉じます。 –

+0

あなたが提案した変更を試しましたが、同じエラーが発生しました。 –

答えて

1

、以下のコード試してください:あなたのコードはまったくインデントされていないので、あなたはエラーのresonを "行方不明" されている

Option Explicit 

Sub AutoWord() 

Dim objWord As Object 
Dim objdoc As Object 
Dim intChoice As Integer 
Dim strPath As String 
Dim myRange As Range 

'On Error Resume Next 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Application.Calculation = xlCalculationManual 
Application.DisplayAlerts = False 

Set objWord = CreateObject("Word.Application") 
objWord.Visible = True 

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False 
intChoice = Application.FileDialog(msoFileDialogOpen).Show 

If intChoice <> 0 Then 
    'get the path selected 
    strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1) 

    'opens the document 
    Set objdoc = objWord.Documents.Open(strPath) 

    With objdoc 
     ' all your code related to opened Word document goes here 

    End With 
    objdoc.SaveAs ThisWorkbook.Path & "\" & ActiveSheet.Range("E3").Value & "_MVR" 

    objdoc.Close 
End If 

objWord.Quit 
Set objdoc = Nothing 
Set objWord = Nothing 

Application.DisplayAlerts = True 
Application.EnableEvents = True 
Application.Calculation = xlCalculationAutomatic 
Application.ScreenUpdating = True 

End Sub 
+0

ドキュメント(objdoc) - ここでもエラーが表示されます。 –

+0

@AbhinavBajpaiをデバッグモードで実行すると、どの行に表示されますか? –

+0

デバッグモードでは、この行にエラーが表示されます。 intChoice = Application.FileDialog(msoFileDialogOpen).Show –

関連する問題