Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
子元';t打开MS word(VBA)_Vba_Excel - Fatal编程技术网

子元';t打开MS word(VBA)

子元';t打开MS word(VBA),vba,excel,Vba,Excel,我正在尝试使用一个宏来在Word中生成报告(这个宏不是我写的,编写它的人也不能在这里工作)。不管怎样,它在我同事的电脑上运行良好,但在我的电脑上不会运行(我有一个surface pro 3,如果这很重要的话) 当我运行宏时,它会失败:Set VAVdoc=WordApp.Documents.Add 当失败时,我收到以下错误: 运行时错误“91”:未设置对象变量或带块变量 我不知道为什么它不会在我的设置上运行,但会在我的同事上运行。有什么想法吗 非常感谢您的帮助。 更新:尝试后: 设置o=Crea

我正在尝试使用一个宏来在Word中生成报告(这个宏不是我写的,编写它的人也不能在这里工作)。不管怎样,它在我同事的电脑上运行良好,但在我的电脑上不会运行(我有一个surface pro 3,如果这很重要的话)

当我运行宏时,它会失败:
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