1

我在打开文档时将击键发送到错误消息时遇到了一些问题。

我试图在缺少样式表的 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 只是为了看看我在做什么,但消息只是坐在那里。

4

1 回答 1

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. (因为我需要咖啡......,虽然问题是关于 Word,但我完全专注于 Excel)。

不幸的是,该方法存在于 Excel 中,但Object中没有 SendKeys 方法Word.Application

于 2013-08-24T16:52:18.733 回答