2017-07-21 186 views
-1

我在Excel中製作了一個小宏,它有助於使用API​​從timezonedb.com中找到IANA TimeZone名稱。我做了我的電腦正常工作,但是當別人從他們的PC中使用它,它也開始出現類似的錯誤此Excel VBA:錯誤0x800c00008

error message

我發現在互聯網上說,微軟的核心包有解決方案被修復,但我想知道是否可以通過在代碼中添加內容來繞過該內容,也許?有沒有辦法做到這一點?

我在這裏加入的功能代碼:提前

Function FetchTZ(qLat As Double, qLong As Double, c_check As String, rN As Integer) As String   
    Dim JSON_content As String 
    Dim IANAtz As String 
    Dim temp_l As Long 
    Dim XMLobj As Object 
    Dim qURL As String 
    Dim CheckCountry As String 

    temp_l = 0 
    JSON_content = vbNullString 

    qURL = "https://api.timezonedb.com/v2/get-time-zone?key=NB7W9T1K95UT&format=json&by=position&lat=" & qLat & "&lng=" & qLong 
    Set XMLobj = CreateObject("Microsoft.XMLHTTP") 
    With XMLobj 
     .Open "POST", qURL, False 
     .send 
     JSON_content = .responseText 
    End With 
    Set XMLobj = Nothing 

    temp_l = InStr(1, JSON_content, "zoneName") 
    IANAtz = Mid(JSON_content, (temp_l + 11), ((InStr(temp_l, JSON_content, "abbreviation") - 3) - (temp_l + 11))) 

    IANAtz = Replace(IANAtz, "\/", "/") 

    temp_n = InStr(1, JSON_content, "countryCode") 
    CheckCountry = Mid(JSON_content, (temp_n + 14), 2) 


    If CheckCountry <> c_check And Len(c_check) = 2 Then 
     Sheets("TZMacro").Range(Cells(rN, 1), Cells(rN, 4)).Interior.ColorIndex = 3 
    End If 

    FetchTZ = IANAtz 

謝謝,我真的希望你能教我如何破解這一個!

+0

你的代碼工作正常,經度和緯度爲0。我收到了回覆:「{」status「:」OK「,」message「:」「,」countryCode「:」YE「,」countryName「:」也門「,」zoneName「:」Asia \/Aden「縮寫 「:」 + 03" , 「gmtOffset」:10800, 「夏令時」: 「0」, 「dstStart」: - 719636812, 「dstEnd」:0, 「nextAbbreviation」: 「」, 「時間戳」:1500646117,「格式化「:」2017-07-21 14:08:37「}'。建議您多次測試代碼,以至於限制了速度,即您每天只能多次調用API等。 –

+0

聽起來像是一個公平點。我會考慮這一點,也許從這個想法中建立一些東西。非常感謝,羅賓! –

+0

請發佈一個答案,以便它不再出現在「未答覆」隊列中。 – Graham

回答

0

我改變

的CreateObject( 「Microsoft.XMLHTTP」)

的CreateObject( 「MSXML2.ServerXMLHTTP.6.0」)

和錯誤沒有彈出來了。