【问题标题】:VBScript compilation error: Expected statementVBScript 编译错误:预期语句
【发布时间】:2019-09-02 12:41:11
【问题描述】:

我在编译 VBScript 时遇到错误,该错误将删除 RTF 文件中的特定行。错误指向第 6 行,字符 25,即“Selection.GoTo What:=wdGoToBookmark”语句中的“=”符号,但我认为语法是正确的。


错误信息

行:6 个字符:25

错误:预期的语句

代码:800A0400

来源:Microsoft VBScript 编译错误

Set Word = CreateObject("Word.Application")
Set wordfile = Word.Documents.Open("filename.RTF")
Word.Visible = TRUE

Sub Macro1()
    Selection.GoTo What:=wdGoToBookmark, Name:="IDX12"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.Delete Unit:=wdCharacter, Count:=1
    ActiveDocument.Save
End Sub


Macro1
Word.Quit

【问题讨论】:

标签: vbscript


【解决方案1】:

我在您的脚本中发现了 3 个主要问题。

  • 很遗憾,VBScript 不支持命名参数(而 VBA 支持)。因此,您必须列出方法的所有 null 参数
  • 您使用某些对象(SelectionActiveDocument ...)就好像它们是可用的一样。它们不是:它们是 Word.Application 对象的属性。
  • 最后一个问题:您使用的常量也是 vbs 未知的。因此,要么声明它们,要么使用它们的 Word 内部值。

    Set Word = CreateObject("Word.Application")
    ' !! You also might meet a problem here because you don't use the file full path. The file may not be found !!
    Set wordfile = Word.Documents.Open("filename.RTF")
    Word.Visible = TRUE

    Sub Macro1()
        'Word.Selection.GoTo What:=wdGoToBookmark, Name:="IDX12"
        Word.Selection.GoTo -1, , , "IDX12"
        With Word.ActiveDocument.Bookmarks
            '.DefaultSorting = wdSortByName
            .DefaultSorting = 0
            .ShowHidden = False
        End With
        'Word.Selection.MoveUp Unit:=wdLine, Count:=2
        Word.Selection.MoveUp 5, 2
        'Word.Selection.Delete Unit:=wdCharacter, Count:=1
        Word.Selection.Delete 1, 1
        Word.ActiveDocument.Save
    End Sub

    Macro1
    Word.Quit

【讨论】:

  • 嗨奥利弗。这工作得很好。我不知道 VBA 和 VBS 语法的区别。感谢您列出所有问题,而不仅仅是提供解决方案代码。非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多