我正在尝试以Niels Bosma的名为SeoTools的加载项作为宏运行自定义Excel函数XpathOnUrl
。该函数运行正常,似乎我能够将其结果存储在变量中。然后可以将此变量正确输出到Excel单元格,但是当我尝试在宏的下一部分中查找其中的字符串时,我收到错误Run-time error '13': Type mismatch
。根据我从here的理解,该函数返回一个数组,但当我尝试将其作为数组的第一项访问时,我得到了同样的错误。我试图将变量转换为CStr
的字符串,但也没有运气。我错过了什么?
以下是代码中有问题的部分:
WebSite = Sheet1.Range("A1")
contactPage = Application.Run("XPathOnUrl", WebSite, "//a[contains(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),""contact"")]", "href")
MsgBox TypeName(contactPage) 'trying to find out the data type results in 'Error'
If Left(contactPage(0), 4) = "http" Then
Sheet1.Range("B1").Value = contactPage
ElseIf InStr(contactPage, "/") = 1 Then
Sheet1.Range("B1").Value = WebSite & contactPage
End If
只是说清楚:问题仅从条件语句开始。如果我将变量的值直接分配给像Sheet1.Range("B1").Value = contactPage
这样的单元格,它会输出正确的结果。
答案 0 :(得分:2)
这是一个简单的解决方法:
让XpathURL
吐出它返回的范围。然后,使用Range.value
将返回值分配给contactpage
,并使用.Clearcontents
属性清除范围。我认为Application.Run
不允许XpathURL
返回contactpage
。
编辑:添加以下评论:
Sheet1.Range("B1").Value = Application.Run("XPathOnUrl", WebSite, "//a[contains(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),""contact"")]", "href")
contactPage = Sheet1.Range("B1").Value
答案 1 :(得分:0)
您是否尝试过Formula和FormulaR1C1功能?只是我的假设。
尝试告诉我们是否有帮助。
Sheet1.Range("B1").Formula = WebSite & contactPage
或
Sheet1.Range("B1").FormulaR1C1 = WebSite & contactPage
MsgBox TypeName(contactPage)
显示什么?
答案 2 :(得分:0)
此外,我建议将Set
与WebSite
:
Dim WebSite As Range
...
Set WebSite = Sheet1.Range("A1")