我们最近从2003年升级到2010年办公室。2003年运行良好的VBScript类型代码在2010年断断续续地失败,“对象错误”或“命令失败”。
从我的计算结果来看,这似乎是正常模板仍然在下载/加载的结果,尽管CreateObject调用已经完成。当代码正常工作时,看起来正常情况下加载得很快。
代码:
Dim oWord As Object
Set oWord = CreateObject("Word.Application")
oWord.Visible = True
Set document = oWord.Documents.Open("\\networkshare\networkshare\mytemplate.dot")
代码在"Set document =“上失败
我一直在寻找解决这个问题的方法,但是我没有在其他地方发现有这个问题的人的任何踪迹。如果我在oWord.Visible和Set文档之间插入延迟,问题就解决了。不过,我倾向于正确地解决这个问题,因为我们经常一次处理数百个文档。我试图检测正常的装车完成,但在这方面没有成功。
还有人看到这个问题并找到解决办法了吗?
非常感谢
菲利普
发布于 2014-04-14 06:12:27
也许你应该尝试“抓取”一个单词对象,然后再创建它。
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模板的操作,您可能希望它在打开后可见。
发布于 2014-04-17 04:31:01
用于解决此问题的代码:
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属性现在是区分大小写的,因此您必须确保大写化与打印机对话框中显示的相同。设置此属性失败时生成的错误词2010是"Microsoft Word:存在打印机错误“。
https://stackoverflow.com/questions/23052759
复制相似问题