在打开文档时,我在将错误消息发送到错误消息时遇到了一些问题。
我试图在Word for Dos 5.5文档中打开的文档缺少样式表,您可以手动单击忽略并打开文件,但我还有1000多个文件要执行此操作,因此我想自动执行此
我在Office XP,2003或2010中打开此文档,但我无法通过按键来影响消息。
我一直尝试的代码如下:
Dim objWord As New Word.Application
Dim objDoc As New Word.Document
objDoc = objWord.Documents.Open(TempDir + ("\\" + fileInf.Name))
System.Threading.Thread.Sleep(5000)
SendKeys.Send("{Enter}")
System.Threading.Thread.Sleep(5000)
SendKeys.Send("{&I}")
System.Threading.Thread.Sleep(5000)
objWord.WindowState = Word.WdWindowState.wdWindowStateNormal
objWord.Visible = True
我使用了visible = true只是为了看看我发生了什么,但消息就在那里。
答案 0 :(得分:1)
我认为发送keyPress不是解决问题的最佳方案,如果可以的话,这是你应该避免的。
您可以尝试隐藏Word消息。可能的方法:
在打开文件之前,尝试使用Application.DisplayAlerts
属性禁用消息。所以它会是:
objWord.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone
MSDN的重要提示:
如果将此属性设置为wdAlertsNone或wdAlertsMessageBox, Microsoft Word在执行时不会将其设置回wdAlertsAll 停止即可。您应该以始终设置的方式编写代码 当DisplayAlerts属性停止运行时,它返回到wdAlertsAll。
尝试通过设置Documents.Open方法的其他参数来禁用消息。我正在考虑Format
参数,您可以尝试设置为wdOpenFormatAllWord
以查看它是否禁用消息。
wdOpenFormatAllWord:与早期版本的Microsoft Word向后兼容的Microsoft Word格式
当您编写SendKeys.Send("{Enter}")
时,我猜您已导入System.Windows.Forms
名称空间,因此它等于System.Windows.Forms.SendKeys.Send("{Enter}")
。
在我的第一个回答中,我建议,如果您确实需要使用SendKeys
方法,请使用 Excel.Application
中的方法。 (因为我需要咖啡......,我完全专注于Excel,虽然问题是关于Word)。
不幸的是,该方法存在于Excel中,但 Word.Application
对象中没有SendKeys方法。