尝试运行此代码时,出现对象必需错误。我不确定如何解决此问题。
我正在尝试从excel运行vba以运行邮件合并。
// Page object file code
let copyP = "Some test text"
let copyP2 = "Some text text 2"
module.exports = {
elements: {
p: 'CSS_selector',
p2: 'CSS_selector',
},
commands: [{
checkText: function() {
return this
.expect.element('@p').text.to.equal( copyP, 'Text is ok')
.expect.element('@p2').text.to.equal( copyP2, 'Text2 is ok')
}
}]
}
答案 0 :(得分:0)
由于它在Excel VBA中运行,因此代码需要专门引用属于Word的内容。这意味着该行:
With ActiveDocument.MailMerge
需要成为
With wordApp.ActiveDocument.MailMerge
由于Excel对ActiveDocument
一无所知。但是,更好的做法是在文档打开时将其分配给文档,而不要依赖ActiveDocument
:
Dim wordDoc as Object
Set wordDoc = wordapp.documents.Open("C:\Users\me\Desktop\hello.docx", ReadOnly:=True)
With wordDoc.MailMerge
工作正常后,您将获得针对所有以wd
开头的枚举值的其他错误消息。这些也属于Word VBA。由于您在Object
中使用Word.Application
而不是wordapp
,因此代码不能使用wd
枚举-VBA无法查找它们。使用Word.Application
意味着需要在“工具/参考”中设置对Word对象模型的参考。如果需要由具有不同(较旧)Office版本的其他人使用该宏,则可能会很困难,这就是为什么许多用于从Excel运行Word的代码示例都使用Object
的原因。
如果要使用Object
,则需要用其数值等效项替换所有wd
枚举值。例如wdSendToEmail
的值为2,所以
.Destination = 2
我留给您查找其他值,这很简单。打开Word的VBA编辑器,按F2打开对象浏览器,然后搜索每个wd
值。当您单击一个值时,等效的数字将位于窗口的底部。