2016-03-01 42 views
0

我有一個Xpath的命令類型,在這裏我想嵌入命令是從一個變量中獲取一個可更新的整數[1] ...在Xpath類型命令中添加變量是否有更好的方法? (VBA)

Set ActiveASIN = objxmldoc.selectSingleNode("//ns1:GetLowestOfferListingsForASINResult[i]/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN") 

但我能得到這個的唯一途徑工作是建立在塊上面的命令&然後串聯....不優雅可言....

firstpart = "//ns1:GetLowestOfferListingsForASINResult[" + CStr(i) + "]" 
secondpart = "/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN" 
complete = firstpart + secondpart 
Set ActiveASIN = objxmldoc.selectSingleNode(complete) 

...它只是不知道正確的語法或做我的情況下,它必須按照我以上所做的來完成?

+0

也許這只是一個錯字,但你知道,字符串連接使用'&'真的做,而不是'+'?請參閱:https://msdn.microsoft.com/de-de/library/gg278870.aspx – Oliver

+0

在vba中的連接可以使用+或http://stackoverflow.com/questions/3365197/vba-difference-between-而VBA中的 – montewhizdoh

+0

對於「優雅」來說,你是有限的。你可以使用split()和join(),你可以使用Replace(),或者你可以在代碼中使用連接運算符。 https://blog.udemy.com/vba-string-functions/ – montewhizdoh

回答

0

我能想到的唯一選擇是使用objxmldoc.selectNodes()將所有節點(不使用[i])選擇到節點列表中,然後使用集合的索引獲取所需的項目。

事情是這樣的:

Set ASINNodes = objxmldoc.selectNodes("//ns1:GetLowestOfferListingsForASINResult/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN") 
Set ActiveASIN = ASINNodes(i) 

根據您的XML和多少我需要檢索的,它可能比你自己的解決方案或多或少效率。

0

如果你想要的是simpilfy你的代碼,我建議:

Set ActiveASIN = objxmldoc.selectSingleNode(_ 
       "//ns1:GetLowestOfferListingsForASINResult[" & i & "]" & _ 
       "/ns1:Product/ns1:Identifiers/ns1:MarketplaceASIN/ns1:ASIN") 
+0

謝謝......這就是我正在尋找的:-) – peskywinnets

相關問題