我正在尝试让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下完成所有工作的第一次尝试。
答案 0 :(得分:0)
VBScript和VBA是不同的语言。
它们有点相似,但不是很相似。而且,VBScript 不是,类似于AppleScript;它不能让您轻松地与正在运行的程序进行交互。
您将从VBScript获得的接口在VBA和VBScript中的行为可能会有所不同。但是,我认为您在这里遇到两个问题:
:=
在VBScript中是无效的语法;您需要找到一种替代方法来调用该函数。尝试仅使用位置参数。答案 1 :(得分:0)
由于您的代码未在Word环境中运行,因此需要引用到Word对象库,才能使用枚举常量(这些以{开头的东西{1}}。
但是,VBScript不能与引用一起使用,这意味着唯一的可能性是使用枚举的wd
值等效项。您可以在《文字语言参考》中找到这些内容。最简单的使用方法可能是Word的VBA编辑器中的对象浏览器。 (在Word中:Alt + F11打开VBA编辑器; F2启动对象浏览器;在“搜索”框中键入该术语,单击该术语,然后在底部栏中查看。)
问题中的代码使用例如:
long
出现各种错误的原因取决于使用这些错误的位置。
此外,VBScript不能使用诸如wdWithInTable
wdCollapseStart
wdStartOfRangeRowNumber
wdStartOfRangeColumnNumber
wdCell
之类的命名参数。如果有多个参数,则必须按照方法或属性指定的顺序,以逗号分隔的格式传递任何参数。如果有不想使用的可选参数,则应将其保留为“空白”:
Unit:=