如何解决设置Word = GetObject,“ Word.Application”在一个子文件夹中起作用,但在同一文档的其他子文件夹中不起作用
我有两个用于从Excel创建和/或打开Word文档的代码,都包含类似的代码,包括语法
设置Word = Getobject(,“ Word.Application”)
在一个子文档中,文档完全打开正常,而在另一个子文档中,我收到上述语法的运行时错误429,但仅当未打开Word时。打开Word时,该功能运行正常。
部分工作代码
['667.378 687.189 474.277 666.181','341.845 245.408 163.417 212.897']
无效子代码的一部分
Cells(ActiveCell.Row,ActiveSheet.Range("zz_templates").Column).Activate
Range("zz_preventloop").Value = "x"
Application.ScreenUpdating = False
Dim DocType As String
If Range("zz_officeversion").Value = "prevIoUs to 2007" Then
DocType = ".doc"
Else
DocType = ".docx"
End If
Dim filename As String
filename = Range("zz_envelope_documents").Value + "/" + Cells(ActiveCell.Row,ActiveSheet.Range("zz_locations_doc").Column).Value + "/"
filename = filename + Cells(ActiveCell.Row,ActiveSheet.Range("zz_eDMSname").Column).Value + DocType
If Len(filename) < 256 Then
'check the document type
If Cells(ActiveCell.Row,ActiveSheet.Range("zz_doctype_doc").Column).Value = ".url" Then ''opening the .url shortcut
On Error Resume Next
ActiveWorkbook.FollowHyperlink Range("zz_envelope_templates").Value + "/" + ActiveSheet.Cells(ActiveCell.Row,ActiveSheet.Range("zz_locations_temp").Column).Value + "/" _
+ ActiveSheet.Cells(ActiveCell.Row,ActiveSheet.Range("zz_hidden_eDMstemp").Column).Value + ".url",NewWindow:=True
Else
If Cells(ActiveCell.Row,ActiveSheet.Range("zz_doctype_doc").Column).Value = ".docx" Then
Application.Calculate
On Error Resume Next
Set Word = Getobject(,"Word.Application")
If Word Is nothing Then
Set Word = CreateObject("Word.Application")
End If
Rest of sub
当Word未打开时,第二个功能使我无法正常工作的原因是什么?
解决方法
有问题的人与工作中的人并不相同:
您的代码缺少On Error Resume Next
。
应该是:
On Error Resume Next
Set Word = GetObject(,"Word.Application")
If Word Is Nothing Then
Err.Clear: On Error GoTo 0 'good to clear the error and let the code raising an error if the case
Set Word = CreateObject("Word.Application")
End If
On Error GoTo 0
以上代码的逻辑是:
- 如果存在这样的会话,它将尝试查找Word打开会话并创建Word对象。
- 如果这样的会话不存在,则会引发错误,但是
On Error Resume Next
会超过该错误。 - 如果无法通过现有会话
Nothing
创建Word对象,则会创建一个新会话。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。