![Warum bleibt diese VBA-Datenabruffunktion in Access hängen?](https://rvso.com/image/1671466/Warum%20bleibt%20diese%20VBA-Datenabruffunktion%20in%20Access%20h%C3%A4ngen%3F.png)
Ich habe diese Funktion in VBA, die ich zuvor erfolgreich in Excel verwendet habe, um Daten von einer URL abzurufen:
'========================================================
Public Function sURLfetch(ByVal sURL As String) As String
'========================================================
' Return data found at a URL.
' From "www.MyExcelGenius.com/getting-data-from-a-website-in-json-format-using-vba/".
' Requires reference "Microsoft XML, v6.0".
Const bRunAsynch As Boolean = True
Const nProcessComplete As Integer = 4
Dim oRequest As MSXML2.XMLHTTP60
Set oRequest = New MSXML2.XMLHTTP60
Dim sResponse As String
With oRequest
.Open "get", sURL, bRunAsynch
.setRequestHeader "Content-Type", "application/json"
.send
Do While oRequest.ReadyState <> nProcessComplete
DoEvents
Loop
sResponse = .responseText
End With
sURLfetch = sResponse
'========================================================
End Function ' sURLfetch()
'========================================================
Ich rufe diese Funktion nun von einer anderen Funktion aus auf, die ich wiederum von einer Abfrage in Access aus aufrufe. Wenn ich das mache, bleibt der Aufruf dieser Funktion hängen, wenn ich versuche, sie ohne Unterbrechung auszuführen. Aber wenn ich einen Haltepunkt in der Zeile setze:
Do While oRequest.ReadyState <> nProcessComplete
und dann VBA anweisen, fortzufahren, dann läuft es. Wenn ich jedoch diesen Haltepunkt entferne und einen Haltepunkt in der Zeile setze:
sResponse = .responseText
dann bleibt es hängen.
Wenn diese Funktion also von Access aufgerufen wird, bleibt sie anscheinend in der Schleife hängen, sofern sie nicht durch einen Haltepunkt angewiesen wird, vor dem Eintritt in die Schleife anzuhalten.
Ich habe versucht, die Pause zu automatisieren, indem ich einen Aufruf einer Funktion eingefügt habe, die VBA für eine zufällige Zeit anhält. Das hat das Hängenbleiben der Funktion nicht verhindert.
Zusammenfassung:
- Die Funktion hat in der Vergangenheit in Excel funktioniert.
- In Access funktioniert es, wenn es durch einen Haltepunkt am Anfang der Schleife angehalten wird.
- Es bleibt hängen, wenn es in Access ohne diesen Haltepunkt aufgerufen wird.
Was könnte die Ursache dafür sein, dass diese Funktion in Access hängen bleibt und was kann ich ändern, damit sie funktioniert?