因此,我打算循环使用此代码,但我必须先对其进行测试。因此,使用基本的方法:
doc.getElementById("product_basic_product_features_attributes_0_title").Value = ThisWorkbook.Sheets("AEG").Range("E2").Value
我正在将工作表中的值分配给Web表单上的元素ID product_basic_product_features_attributes_0_title 。效果很好。
现在,我想使用包含0的变量,该变量最终应在循环中递增。为了进行测试,我将字符串连接到tempStr变量中以提供 product_basic_product_features_attributes_0_title ,请参见下面的代码。然后将该变量用作getElementbyID()中的参数
Dim tempStr As String
tempStr = "product_basic_product_features_attributes_" & Str(i) & "_title"
doc.getElementById(tempStr).Value = ThisWorkbook.Sheets("AEG").Range("E2").Value
在将变量用作参数的地方出现错误(运行时错误91)
您能帮我什么问题吗? tempStr是一个字符串,应被方法接受。另外,在我的调试中,tempStr的值与我最初使用的元素ID完全相同,但是看起来,出现错误的唯一原因是因为它拒绝在该范围内使用变量。这没有道理。
答案 0 :(得分:0)
如评论中所述,用于VBA的字符串转换方法是Cstr,尽管对于您的用例来说是最佳实践,但不需要。
doc.getElementById("product_basic_product_features_attributes_" & Cstr(i) & "_title").Value = ThisWorkbook.Sheets("AEG").Range("E2").Value
尽管我怀疑您也想在循环中使用它来更改右侧。
效率较低,但也许值得一提的是,如果您可以仅使用product_basic_product_features_attributes_
的起始id属性值来精确匹配所需的元素,则可以收集所有这些id的nodeList,然后在循环(取决于您是否还需要结尾 title 来精确限制)。真的只是一个旁注。
Dim allElements As Object, i As Long
Set allElements = doc.querySelectorAll("[id^='product_basic_product_features_attributes_']")
For i = 0 To allElements.Length - 1
allElements.Item(i).Value = "something..."
Next
答案 1 :(得分:0)