Word 2003 VBA代码在word 2007中不起作用

时间:2013-06-29 17:54:28

标签: vba ms-word

友 我正在尝试在使用printout命令时禁用显示警报。代码不起作用,因为我得到了运行时错误,例如“只读”,“#转换器”,“无效的引用类型'”。我想压制所有这些错误。我的代码如下 你能否确认如何在2007年对相同的单词进行编码,这在单词2003中可行。

    If optCentral.Value = False Then
        Set oPrint = GetObject(lbxResults.List(varLoop))
    End If
End If

If optCentral.Value = True Then
    'do nothing, already copied
ElseIf optPtrOver.Value = True Then
    With oPrint
        'Store existing print settings
        bValueStoreUFAP = .Application.Options.UpdateFieldsAtPrint
        bValueStoreULAP = .Application.Options.UpdateLinksAtPrint
        bValueStoreDisplayAllerts = .Application.DisplayAlerts

        'Change print settings, stops unwanted pop-up boxes
        .Application.Options.UpdateFieldsAtPrint = False
        .Application.Options.UpdateLinksAtPrint = False
        .Application.DisplayAlerts = wdAlertsNone

        'Print document
        .PrintOut copies:=varCopies

        'Restore original print settings
        .Application.Options.UpdateFieldsAtPrint = bValueStoreUFAP
        .Application.Options.UpdateLinksAtPrint = bValueStoreULAP
        .Application.DisplayAlerts = bValueStoreDisplayAllerts

        .Saved = True
        .Close

1 个答案:

答案 0 :(得分:0)

在VBA代码块的开头(SubFunction),请将第一行设为:

On Error Resume Next

这可以让你做你想做的事。

一般而言,这是不好的做法。这将是一个草率和危险的解决方案。 VBA提供了很好的错误处理工具,您可以应用它们。抑制错误报告的后果很重要。

也就是说,使用Resume Next指令实际上可以用于初始故障排除。完全取决于您的情况,它甚至可能是一个适当的解决方案。

如果仍然收到错误,那么您正在处理Word文档或文件结构中的问题。我认为这很可能。在这种情况下,您将在解决问题方面迈出一大步。只是不要忘记删除Resume Next指令。