我们最近从2003年升级到Office 2010. 2003年运行良好的VBScript类型代码现在在2010年间歇性地失败,其中包含对象错误'或者'命令失败'。
从我设法解决的问题来看,这似乎是Normal模板仍在下载/加载的结果,尽管CreateObject调用已完成。当代码工作时,似乎正常加载很快。
代码:
Dim oWord As Object
Set oWord = CreateObject("Word.Application")
oWord.Visible = True
Set document = oWord.Documents.Open("\\networkshare\networkshare\mytemplate.dot")
代码失败"设置文档="
我已经找到了解决方案但是我还没有发现任何人在其他地方遇到这个问题的痕迹。如果我在oWord.Visible和Set文档之间插入延迟,则问题得以解决。我喜欢正确地解决这个问题,因为我们经常在一次运行中处理数百个文档。 我试图检测Normal的加载完成情况,但是在这方面没有成功。
还有其他人看过这个问题并找到了解决方案吗?
非常感谢
菲利普
答案 0 :(得分:0)
可能你应该尝试"抓住"创建它之前的Word对象。
Dim oWord As Object
On Error Resume Next
Set oWord = GetObject(,"Word.Application")
If oWord Is Nothing Then Set oWord = CreateObject("Word.Application")
或者,禁用警报,并将oWord.Documents.Open
置于循环中。有两次等待,或者直到打开.dot模板,然后重新启用警报。
由于它位于网络共享上,因此延迟很可能高于本地存储设备上的延迟。这可以解释为什么等待工作正常。
根据.dot模板的作用,您可能希望它在打开后可见。
答案 1 :(得分:0)
用于解决此问题的代码:
Set oWord = CreateObject("Word.Application")
On Error Resume Next
Set oDoc = Nothing
Do While oDoc Is Nothing
Set oDoc = oWord.Documents.Open([template path])
<Wait 50ms>
Loop On Error Goto 0
偏离主题,但对于遇到此问题的其他人会有用: 从Word 2010开始,ActivePrinter属性现在区分大小写,因此您必须确保大小写与打印机对话框中显示的大写相同。 设置此属性失败时Word 2010生成的错误是&#34; Microsoft Word:出现打印机错误&#34;