2017-07-21 16 views
-1

Excelで小さなマクロを作成し、timezonedb.comからIANA TimeZoneの名前をAPIで検索しました。私はそれが私のPCのために働く作ったが、他の誰かが自分の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 

おかげで、私は本当にあなたがどのようにこの1をクラックするために私を教えることを願って!

+0

コードは、緯度と経度が0の場合は正常に機能します。 "{" status ":" OK "、" message ":" "countryCode": "YE"、 "countryName": "イエメン"、 "zoneName": "アジア\/Aden" "dstStart": - 719636812、 "dstEnd":0、 "nextAbbreviation": ""、 "timestamp":1500646117、 "書式:" + "03"、 "gmtOffset":10800、 "dst" ":" 2017-07-21 14:08:37 "}'レート制限付きのコードを何回もテストしたことを示すようにしてください。つまり、APIを1日に何回も呼び出すことしかできません。 –

+0

公正な点のように聞こえます。私はそれについて考えて、そのアイデアから何かを構築するかもしれません。ありがとう、ロビン! –

+0

これに答えを投稿して、「未回答」のキューに表示されなくなります。 – Graham

答えて

0

私はのCreateObject( "MSXML2.ServerXMLHTTP.6.0に")

へのCreateObject( "Microsoft.XMLHTTP")

を変更し、エラーはもうポップアップしませんでした。