我想使用VBScript
以下Microsoft示例的代码在VBScript中不起作用,VBScript似乎讨厌:= construct。
With docNew.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource _
Name:="C:\Program Files\Microsoft Office\Office" & _
"\Samples\Northwind.mdb", _
LinkToSource:=True, AddToRecentFiles:=False, _
Connection:="TABLE Customers"
MsgBox .DataSource.ConnectString
End With
为了帮助追踪问题,我在Word文档中尝试了代码作为VBA,将路径替换为Excel文件以获取示例的Access mdb文件。但我似乎无法找到正确的东西作为Connection参数。我试过这些:
Connection:="ExternalData_1"
Connection:="TABLE ExternalData_1"
Connection:="Sheet1$ExternalData_1"
Connection:="TABLE Sheet1$ExternalData_1"
编辑2016年2月2日 有意义的是不使用vbs脚本而是使用Word模板中的vba(邮件合并“主”文档)。所以现在我的代码看起来像这样:
With Me.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource Name:=sPath & XLSM, Connection:="SELECT * FROM [Sheet1$]", ReadOnly:=True, LinkToSource:=False, AddToRecentFiles:=False
End With
我已经使用[Sheet1 $]和[Sheet1 $ ExternalData_1]而没有成功。
此时,呈现图像中显示的对话框是一个微不足道的问题,我不再试图解决它。但是,太糟糕了,答案是如此难以捉摸。
答案 0 :(得分:2)
VBScript不允许使用命名参数,因此您必须使用更像这样的构造:
.OpenDataSource _
"C:\Program Files\Microsoft Office\Office" & _
"\Samples\Northwind.mdb",,,, _
True, False,,,,,, _
"TABLE Customers"
如何指定.OpenDataSource的参数变化很大,具体取决于数据源的类型(例如Access数据库,文本文件,Excel工作簿,Oracle数据库)和你如何连接到该源(例如,使用Word文件转换器,DDE,ODBC,OLEDB。连接参数,如" TABLE Customers"仅适用于Access表(AFAIK),最初用于DDE连接(Access数据库的原始默认连接类型)。现在,大多数连接都是通过OLE DB完成的,通常需要指定一个SQL语句。您也可以省略Excel工作表的连接参数。顺便说一下,我没有&#39 ;在这种情况下,我认为LinkToSource参数会做任何事情。
所以你需要的更像是这样(在&#34之后还有1个逗号; False")
.OpenDataSource _
"C:\Program Files\Microsoft Office\Office" & _
"\Samples\yourxlfile.xls",,,, _
True, False,,,,,,, _
"SELECT * FROM `Sheet1$ExternalData_1`"
Word本身插入"反引号"工作表/表名称周围的字符(UNICODE U + 0060 GRAVE ACCENT)但您应该可以使用
"SELECT * FROM [Sheet1$ExternalData_1]"
如果你愿意的话。
如果数据源是工作表名称,例如" mysheet",则必须附加" $"。值得指出的是,并非所有命名范围都由OLE DB提供程序(或ODBC驱动程序)作为数据源提供。特别是,您可能希望使用“数据”选项卡上的各种数据导入选项插入的表格可用,但它们不可用。此外,某些命名范围仅在工作簿已在Excel中打开时才可用作数据源。