2017-09-20 8 views
-3

Je courais le code suivant qui prend une valeur de la colonne A, les recherches sur l'URL: https://gender-api.com et renvoie le sexe de la personne et la colle dans la colonne B.d'exécution 438 sur la recherche et coller le genre

Je reçois un

run-time error 438

lors de l'exécution du code. S'il vous plaît aider.

Sub URL_Get_Gender_Query() 
    strSearch = Range("a4") 
    With ActiveSheet.QueryTables.Add(Connection:="URL;https://gender-api.com?SearchText=" & strSearch & "&safe=active", _Destination:=Range("b4")) 
     '^ Run-time error 438 here 

     .BackgroundQuery = True 
     .TablesOnlyFromHTML = True 
     .Refresh BackgroundQuery:=False 
     .SaveData = True 
    End With 
End Sub 
+2

Qu'est-ce 'ActiveSheet.Gender'? Une feuille n'a pas la propriété 'Gender'! D'où avez-vous eu ce code? –

+0

Je l'ai eu d'un collègue de travail qui a copié un site de forum. Je suis encore un débutant VBA alors ours avec moi –

+0

Okay ont rectifié ActiveSheet.Gender section –

Répondre

1

Voici une autre façon de le faire, en utilisant le WinHttpRequest object:

Dim httpRequest As Object 
Dim url As String 
Dim i As Long 
Dim jsonResponse As String 

Set httpRequest = CreateObject("MSXML2.ServerXMLHTTP") 
url = "https://gender-api.com/get?name=elizabeth" ' For example 
httpRequest.Open "POST", url, False 
httpRequest.send 
jsonResponse = httpRequest.ResponseText 
MsgBox jsonResponse 
+0

Ça ne marche pas pour moi. A-t-il fonctionné avec succès lorsque vous l'avez fait? –

+0

Il a fait. Définir "ne fonctionne pas"? La bonne chose à propos de cette approche est que vous ne polluez pas votre feuille avec toutes sortes de bruit de la requête, comme vous le faites avec 'ActiveSheet.QueryTables'. Vous obtenez juste une simple chaîne JSON qui est ensuite simple à analyser. –

+0

Je reçois une erreur de compilation: invalide en dehors de la procédure –