【问题标题】:Word Automation Error - Server machine does not existsWord 自动化错误 - 服务器计算机不存在
【发布时间】:2017-04-04 05:41:28
【问题描述】:

我正在从 Excel 自动化 Word 并使用以下代码。当我第一次运行代码时,我总是能够毫无问题地运行它。但是,在第二种情况下,我总是会收到此错误。然后我必须手动关闭Word文件并再次运行代码,它第一次运行顺利,第二次我再次看到错误。

'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 

【问题讨论】:

  • 由于您的代码没有缩进,因此您“错过”了错误的原因。您正在 If 语句 If intChoice &lt;&gt; 0 Then 中“释放” Word 对象 Set objWord = Nothing。但是,无论如何都会创建 Set objWord = CreateObject("Word.Application"),只需将 Set objWord = Nothing 移到 If 之外,它就会关闭您创建的新 Word 实例。
  • 我尝试了您建议的更改,但仍然出现相同的错误。

标签: excel runtime-error ms-word vba


【解决方案1】:

按照我上面的笔记,试试下面的代码:

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

【讨论】:

  • With Documents(objdoc) - 我仍然在这里得到错误。
  • @AbhinavBajpai 在调试模式下运行时,在哪一行?
  • 在调试模式下,代码在这一行出现错误。 intChoice = Application.FileDialog(msoFileDialogOpen).Show
  • 我将代码更改为 objWord.Documents(objdoc) - 现在可以正常工作了。感谢您的努力。
猜你喜欢
  • 1970-01-01
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
相关资源
最近更新 更多