从vbs编写脚本脚本

时间:2018-10-21 12:05:26

标签: vbscript ms-word

我正在尝试让Word填写表格中的单元格。该脚本在Word中作为宏运行时有效,但在另存为.vbs文件并双击后或与wscript一起运行时会失败。这是其中的一部分。

set obj = GetObject(,"Word.Application)
With obj
    With .Selection
        MsgBox .text
        If (.Information(wdWithInTable) = True) Then

            .Collapse Direction:=wdCollapseStart
            tCols = .Tables(1).Columns.Count
            tRow = .Information(wdStartOfRangeRowNumber)
            tCol = .Information(wdStartOfRangeColumnNumber)

            For I = 2 To 5
                .Tables(1).Cell(tRow, I).Range.Text = "fred" & Str(I)
            Next

            ` now make new row
            For I = 1 To tCols - tCol + 1
                .MoveRight unit:=wdCell
            Next

        End If
    End With
End With

我有三个问题。首先,除非我注释掉.Collapse.MoveRight行,否则它不会编译。其次,尽管MsgBox .text显示了选定的文本,但是如果尝试访问任何.Information属性,则会出现“超出范围”错误。

我确定我缺少一些非常简单的东西:我通常为Mac编写软件,而我将使用AppleScript进行此操作。这是我在Windows下完成所有工作的第一次尝试。

2 个答案:

答案 0 :(得分:0)

VBScript和VBA是不同的语言。

它们有点相似,但不是很相似。而且,VBScript 不是,类似于AppleScript;它不能让您轻松地与正在运行的程序进行交互。

您将从VBScript获得的接口在VBA和VBScript中的行为可能会有所不同。但是,我认为您在这里遇到两个问题:

  • :=在VBScript中是无效的语法;您需要找到一种替代方法来调用该函数。尝试仅使用位置参数。
  • 您无法保证这将打开预期的文件;可能还有另一个与之交互的Word实例。

答案 1 :(得分:0)

由于您的代码未在Word环境中运行,因此需要引用到Word对象库,才能使用枚举常量(这些以{开头的东西{1}}。

但是,VBScript不能与引用一起使用,这意味着唯一的可能性是使用枚举的wd值等效项。您可以在《文字语言参考》中找到这些内容。最简单的使用方法可能是Word的VBA编辑器中的对象浏览器。 (在Word中:Alt + F11打开VBA编辑器; F2启动对象浏览器;在“搜索”框中键入该术语,单击该术语,然后在底部栏中查看。)

问题中的代码使用例如:

long

出现各种错误的原因取决于使用这些错误的位置。

此外,VBScript不能使用诸如wdWithInTable wdCollapseStart wdStartOfRangeRowNumber wdStartOfRangeColumnNumber wdCell 之类的命名参数。如果有多个参数,则必须按照方法或属性指定的顺序,以逗号分隔的格式传递任何参数。如果有不想使用的可选参数,则应将其保留为“空白”:

Unit:=