2012-08-11 26 views
0

我是VBA新手,請耐心等待。我有一個簡單的電子表格,其中包含三列,分別代表企業名稱,城市和州(Cols 1,2和3),並使用它們調用WhitePages API來提取一些附加數據。cell.Offset(0,1).Value2返回不可用值?

如果我硬編碼工作正常的價值觀......

url = "http://api.whitepages.com/find_business/1.0/?businessname=ABBOTT LABORATORIES;city=NORTH CHICAGO;state=IL;api_key=key"

如果我使用Value2爲企業名稱,它也能正常工作......

url = "http://api.whitepages.com/find_business/1.0/?businessname=" & cell.Value2 & ";city=NORTH CHICAGO;state=IL;api_key=key"

但是,如果我開始使用Value2作爲商戶名稱之後的任何內容,則完全失敗。

url = "http://api.whitepages.com/find_business/1.0/?businessname= " & cell.Value2 & ";city=" & cell.Offset(0, 1).Value2 & ";state=" & cell.Offset(0, 2).Value2 & ";api_key=key"

當我MsgBox三個值,他們蠻好看的,所以我得到正確的數據。

XMLImport這基本上返回,奇怪的是「成功」和「搜索沒有返回結果。」

我錯過了什麼?我也試圖改變活動單元格,並提取數據的方式,而不是使用偏移量,但也沒有工作。

是否有偏移量返回一個值,而不是我可以使用的東西?

即使是一種解決方法,將不勝感激!

+0

只是thought..Dim一個變量,並寫出來。驗證你的返回值你期望.. – foxtrotZulu 2012-08-11 22:21:12

+0

'cell.Offset(0,1)'的值不是你認爲的值。可能是前導/尾隨空間還是回報?嘗試添加'Debug.Print「|」 &cell.Offset(0,1).Value2&「|」'並檢查立即窗口中的結果 – 2012-08-12 00:09:06

+0

謝謝 - 我確實嘗試了這兩種方法。我做了一個Dim變量作爲一個字符串,它沒有做到這一點。我希望也許它是一些非字符串類型。我還添加了括號,並且沒有任何外部顯示 - 括號與數值正好相反。這會讓我整晚都在: - /。 – 2012-08-12 01:26:49

回答

0

您可以將值2轉換爲字符串之前:

CStr(cell.Offset(0,1).Value2) 
CStr(cell.Offset(0,2).Value2) 

而且MSGBOX這些字符串的結果,要知道什麼是返回的值。

+0

謝謝。我試了這兩個和添加括號,並返回值看起來很好...... city =「[」+ CStr(cell.Offset(0,1).Value2)+「]」 MsgBox city state =「[ 「+ CStr(cell.Offset(0,2).Value2)+」]「 MsgBox狀態 – 2012-08-12 01:14:29

+0

URLEncode是一種將字符串轉換爲另一個字符串以編碼傳遞url參數的方法。您應該添加此方法併爲通過URL發送的每個參數調用它。 URLEncode的代碼示例可在[URLEncode](http://sevenwires.blogspot.fr/2009/07/code-encode-url-in-excel.html)中找到。希望這可以幫助 – user1587368 2012-08-12 14:12:19

0

試試這個

url = "http://api.whitepages.com/find_business/1.0/?businessname= " & Trim(cell.Value) & ";city=" & Trim(cell.Offset(0, 1).Value) & ";state=" & Trim(cell.Offset(0, 2).Value) & ";api_key=key"