ActiveSheet.QueryTables.Add problème avec URL
Bonjour à tous,
Je m'arrache les cheveux sur un problème concernant une url contenue dans une variable qui me fait bugguer la procédure par un message "Erreur définie par l'application ou par l'objet".
Lorsque je met cette URL en "dur" en dehors d'une variable , aucun soucis...
Voici le code (j suis un programmeur du dimanche) :
Sub Macro9()
Dim row
row = 2
Sheets("Feuil1").Select
Do While Range("F" & row & "").Value = "OK"
URLitem = Range("I" & row & "").Value
Sheets("Feuil2").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & URLitem _
, Destination:=Range("$A$1"))
.Name = _
"item_history2.txt?char_name=demo®ion_ids=10000002&type_ids=11561&days=5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = False
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = True
.Refresh BackgroundQuery:=False
.WorkbookConnection.Delete
End WithLe debug souligne en jaune la ligne :
.Refresh BackgroundQuery:=FalseMais c'est bien l'url qui déconne car si je la met en direct ça passe.
URLItem est une URL de ce type :
http://api.eve-marketdata.com/api/item_history2.txt?char_name=demo®ion_ids=10000002&type_ids=11561&days=5Avez vous une piste?
Cordialement,
bonjour,
A priori le système ne comprend pas un URLitem de ce type :
http://api.eve-marketdata.com/api/item_ ... 561&days=5La bonne adresse étant :
"URL;http://api.eve-marketdata.com/api/item_history2.txt?char_name=demo®ion_ids=10000002&type_ids=11561&days=5"enfin dans le code il y a un petit travail de découpage de string car une partie de l'URLitem est reprise dans la ligne suivante :
Name =_Si URLitem est une variable générée par la boucle For... Name sera nécessairement différent à chaque tour de Next
Pour résumer, ton exposé ne suffit pas il faut nécessairement un bout de classeur (en pièce jointe) avec au moins 2 URL différentes (et valide) en F2,F3... pour valider la syntaxe de tes URL et mettre au point l'ensemble.
A+
merci de ta réponse,
J'ai ajouté un extrait du classeur, pour Name ce n'est pas un problème je reprendrai l'url ou ferait générer un nom avec une incrémentation.
Et je tiens à préciser que j'ai changé :
URLitem=Range("I" & row & "").Value par
URLitem=Range("I" & row).valuemais ça revient en même...
Je crois que c'est impossible d'utiliser une variable pour définir l'URL de Query tables.add...
Ca me semble hallucinant mais je ne vois rien d'autre...
Ca me fait pareil avec :
ActiveWorkbook.XmlImport URL:= _
URLitem _
, ImportMap:=Nothing, Overwrite:=True, Destination:=Range("$A$1")
ActiveWorkbook.XmlMaps("emd_Mappage").DeleteSi je remplace la variable URLitem par l'adresse en dur c'est bon, sinon j'ai une erreur : "requiert un élement supérieur"
pour le Xml l'adresse (donc je susi sur qu'elle fonctionne et qui est noté ainsi sans ambiguité dans une feuille :
http://api.eve-marketdata.com/api/item_history2.xml?char_name=demo®ion_ids=10000002&type_ids=11561&days=5Je desespere...
Bonjour,
Voici une syntaxe correcte :
Sub Macro9()
Dim row, URLitem$
row = 2
Sheets("Feuil1").Select
Do While Range("F" & row & "").Value = "OK"
URLitem = "URL;" & Range("I" & row)
Sheets("Feuil2").Select
With ActiveSheet.QueryTables.Add(Connection:=URLitem, Destination:=Range("Feuil2!$A$1"))
.Name = _
"item_history2.txt?char_name=demo®ion_ids=10000002&type_ids=11561&days=5"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = False
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = True
.Refresh BackgroundQuery:=False
.WorkbookConnection.Delete
End With
DoEvents
'La suite sans changementAvec ce code, j'arrive à faire tourner sans problème sur les 2 première adresses (donc les lignes 2 et 3 de Feuil1) ensuite j'ai un erreur au niveau du Refresh donc on peut supposer le programme est bon mais que ce sont les adresses à partir de la ligne 4 qui clochent...
Je te laisse y réfléchir car mon timing est peut serré pour aujourd'hui, mais expérimente et dis moi : Demain sera un nouveau jour et j'aurai un peu plus de temps...
Nota : Avec ce code on est manifestement sur des problèmes d'URL car seules les lignes 2 et 3 renvoient quelque chose les autres renvoient une erreur de Refresh. Donc bien revoir si tu n'as pas zappé quelque chose au niveau des URL...
Et les URL des lignes 7 et 10 renvoient également quelque chose...
A+