子元';t打开MS word(VBA)
我正在尝试使用一个宏来在Word中生成报告(这个宏不是我写的,编写它的人也不能在这里工作)。不管怎样,它在我同事的电脑上运行良好,但在我的电脑上不会运行(我有一个surface pro 3,如果这很重要的话) 当我运行宏时,它会失败:子元';t打开MS word(VBA),vba,excel,Vba,Excel,我正在尝试使用一个宏来在Word中生成报告(这个宏不是我写的,编写它的人也不能在这里工作)。不管怎样,它在我同事的电脑上运行良好,但在我的电脑上不会运行(我有一个surface pro 3,如果这很重要的话) 当我运行宏时,它会失败:Set VAVdoc=WordApp.Documents.Add 当失败时,我收到以下错误: 运行时错误“91”:未设置对象变量或带块变量 我不知道为什么它不会在我的设置上运行,但会在我的同事上运行。有什么想法吗 非常感谢您的帮助。 更新:尝试后: 设置o=Crea
Set VAVdoc=WordApp.Documents.Add
当失败时,我收到以下错误:
运行时错误“91”:未设置对象变量或带块变量
我不知道为什么它不会在我的设置上运行,但会在我的同事上运行。有什么想法吗
非常感谢您的帮助。
更新:尝试后:
设置o=CreateObject(“Word应用程序”)
再次没有o.quit,我得到了错误
ActiveX组件无法创建对象
Dim i作为整数
Dim WordApp作为Word.Application
Dim HVACdoc作为Word.Document,VAVdoc作为Word.Document,CDWdoc作为Word.Document
Dim FullName为字符串、ShortName为字符串、TrendMonth为字符串、TrendYear为字符串、StartTrend为字符串、EndTrend为字符串
Dim ChartName作为字符串,目录作为字符串,FolderName作为字符串
Dim VAVName为字符串、VAVLocation为字符串、HVACName为字符串、HVACLocation为字符串、CDWName为字符串、CDWLocation为字符串
调用工作表调用(“AHU-1”)
FullName=“莫斯曼大厦”
ShortName=“莫斯曼”
TrendMonth=月份名称(月份(单元格(4,3)))
趋势年=年(单元格(4,3))
StartTrend=格式(单元格(4,3),“dddd,mmmm dd,yyyy”)
EndTrend=格式(单元格(4,3)+6,“dddd,mmmm dd,yyyy”)
Directory=“P:\M&V \-Projects\UNC-G\UNCG第7年报告”
FolderName=MonthName(月(单元格(4,3)),True)&“趋势年”
VAVName=FolderName&“-”和ShortName&“C.2.3.docx”
VAVLocation=目录和文件夹名&“\”和VAVName
HVACName=FolderName&“-”和ShortName&“C.2.4.docx”
hvalocation=目录&FolderName&“\”&HVACName
CDWName=FolderName&“-”和ShortName&“C.2.5.docx”
CDWLocation=Directory&FolderName&“\”&CDWName
出错时继续下一步
Set WordApp=GetObject(,“Word.Application”)
如果错误号为0,则
设置WordApp=CreateObject(“Word.Application”)
如果结束
错误转到0
调用定义说明(趋势月、趋势年、开始趋势、结束趋势)
'报告C.2.3-变风量空调转换
如果Dir(VAVLocation)=“那么
设置VAVdoc=WordApp.Documents.Add
VAVdoc.SaveAs(VAV位置)
如果结束
这不是解决方案,而是调试提示
首先,在任务管理器中关闭所有正在运行的Word应用程序
在Tools-References
中,取消选择对Microsoft Word???的所有引用???对象库
现在尝试以下宏。用F8
单步执行。但最后也要通过.Close
和退出。因为如果没有,系统中会收集未使用的字进程
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对象库的引用
,然后尝试以下宏:
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是否开始时没有对话框?或者显示了哪些对话框?如果出现错误,您可以查看本地窗口。那里如何显示WordApp
?是什么还是什么都没有?请在VBA编辑器(Tools-References
)中查看哪个引用了Microsoft Word???对象库
在此处被选中。您使用的是哪个Office版本?我使用的是Office 2010。VAVdoc失败时的值为零。选择的引用是Microsoft Word 14.0对象库。O抱歉。我错过了。在locals窗口中,WordApp值为Nothing(类型为application).Hm,因此GetObject(,“Word.application”)
和CreateObject(“Word.application”)
都失败了。但这一提法似乎是正确的。您能否在VBA编辑器中放置一个子项,该子项仅包含以下行:Set o=CreateObject(“Word.Application”):o.Quit
,并使用F8
逐步完成此操作?发生了哪个错误?因此,当我添加只包含您提到的代码的新sub时,它运行得很好。很奇怪。编辑:运行代码后,excel似乎会自动挂起并且不会关闭。我得到:“Microsoft Excel正在等待另一个应用程序完成OLE操作。”太棒了!非常感谢你!Excel现在正在打开和编辑Word。早期绑定是个问题。我切换到后期绑定(只需要做一些更改),现在它可以工作了。非常感谢。
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