我正在尝试使用在Word中生成报告的宏(此宏不是我写的,编写它的人在这里也无法使用)。无论如何,它可以在我的同事PC上正常运行,但不能在我的PC上运行(如果重要的话,我有Surface Pro 3)。
当我运行宏时,它失败了: Set VAVdoc = WordApp.Documents.Add
当它失败时,我会收到以下错误:
运行时错误'91':未设置对象变量或With块变量。
我不知道为什么它不能在我的设置上运行,但是会在我的同事上运行。有任何想法吗?
任何帮助,不胜感激。更新:尝试后:
设置o = CreateObject(“ Word应用程序”)
再次没有o.quit我得到了错误
ActiveX组件无法创建对象
Dim i As Integer
Dim WordApp As Word.Application
Dim HVACdoc As Word.Document, VAVdoc As Word.Document, CDWdoc As Word.Document
Dim FullName As String, ShortName As String, TrendMonth As String, TrendYear As String, StartTrend As String, EndTrend As String
Dim ChartName As String, Directory As String, FolderName As String
Dim VAVName As String, VAVLocation As String, HVACName As String, HVACLocation As String, CDWName As String, CDWLocation As String
Call WorksheetCall("AHU-1")
FullName = "Mossman Building"
ShortName = "Mossman"
TrendMonth = MonthName(Month(Cells(4, 3)))
TrendYear = Year(Cells(4, 3))
StartTrend = Format(Cells(4, 3), "dddd, mmmm dd, yyyy")
EndTrend = Format(Cells(4, 3) + 6, "dddd, mmmm dd, yyyy")
Directory = "P:\M&V\- Projects\UNC-G\UNCG Year 7 Report"
FolderName = MonthName(Month(Cells(4, 3)), True) & " " & TrendYear
VAVName = FolderName & " - " & ShortName & " C.2.3.docx"
VAVLocation = Directory & FolderName & "\" & VAVName
HVACName = FolderName & " - " & ShortName & " C.2.4.docx"
HVACLocation = Directory & FolderName & "\" & HVACName
CDWName = FolderName & " - " & ShortName & " C.2.5.docx"
CDWLocation = Directory & FolderName & "\" & CDWName
On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.number <> 0 Then
Set WordApp = CreateObject("Word.Application")
End If
On Error GoTo 0
Call DefineDescriptions(TrendMonth, TrendYear, StartTrend, EndTrend)
'Report C.2.3 - VAV Conversion
If Dir(VAVLocation) = "" Then
Set VAVdoc = WordApp.Documents.Add
VAVdoc.SaveAs (VAVLocation)
End If
这不是解决方案,而是调试提示。
首先,在任务管理器中关闭所有正在运行的Word应用程序。
在中,Tools - References
取消选择对的所有引用Microsoft Word ??? Object Library
。
现在尝试下面的宏。通过逐步执行F8
。但最后还要通过.Close
和.Quit
。因为如果您不这样做,系统中就会收集未使用的Word进程。
Sub testWordAppLateBinding()
Dim oWordApp As Object
Dim oWordDoc As Object
Set oWordApp = CreateObject("Word.Application")
oWordApp.Visible = True
Set oWordDoc = oWordApp.Documents.Add
oWordDoc.Close
oWordApp.Quit
End Sub
这样行吗?是否有用新文档打开的Word?如果是这样,则后期绑定有效。如果不是,会发生哪些错误?
现在,Tools - References
选择对它的引用Microsoft Word 14.0 Object Library
并尝试以下宏:
Sub testWordAppEarlyBinding()
Dim oWordApp As Word.Application
Dim oWordDoc As Word.Document
Set oWordApp = CreateObject("Word.Application")
oWordApp.Visible = True
Set oWordDoc = oWordApp.Documents.Add
oWordDoc.Close
oWordApp.Quit
End Sub
这也可以吗?是否有用新文档打开的Word?如果是这样,那么早期绑定也可以。如果是这样,则错误在其他地方。如果没有,但是后期绑定有效,那么您必须将代码更改为后期绑定。
如果没有任何效果,确定可以完全手动启动Word应用程序吗?Word是否启动时没有对话框?还是显示了哪些对话框?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句