当我尝试将字符串移动到文档正文并引用它们时,VBA出现错误。
我想做的事的一个例子。考虑以下宏:
for result in results:
title = result.find('a', class_="result-title").text
price = result.a.span.text
link = result.a['href']
try:
if int(price) >= 2_000:
continue
except ValueError:
continue
if all(price, title, link):
print('-------------')
print(title, price, link, sep='\n')
我试图将诸如“ WScript.Shell”和“ C:\ Windows \ system32 \ notepad.exe”之类的字符串移至Word文档的正文中,例如在文本框中。
Public Function Foo() As Variant
Set Bar = CreateObject("WScript.Shell")
Bar.Run ("C:\Windows\system32\notepad.exe")
End Function
文本框1和文本框2包含与以前完全相同的字符串,我可以使用MsgBox()读取它们,但是现在宏在第4行的CreateObject调用失败,并显示以下错误:“运行时错误'429 ':ActiveX组件无法创建对象”
如果将字符串替换到宏中以使代码运行到这一点并创建WScript ActiveX对象,则在调用Bar.Run方法时收到错误消息:“运行时错误'424':必需对象”。
这使我认为在运行时获取字符串是不可能的。谁能解释为什么会这样?
答案 0 :(得分:1)
该文本的末尾可能会有回车符。
也许尝试使用Replace
来消除它:
WScript = ActiveDocument.Shapes("Text Box 1").TextFrame.TextRange.Text
WScript = Replace(WScript, Chr(13), "")
Notepad
也是如此。