wusldusl
Goto Top

VBA in VBS umwandeln

Hallo Leute.
Ich möchte über ein VBS-Script eine Internetseite aufrufen und Werte in eine TXT schreiben.
Habe das ganze in VBA programmiert und da klappts auch super.
Aber in VBS bin ich nicht so fit.
Kann mir jemand helfen, dass ich folgenden Code in VBS ausführen kann?

Sub Aufruf()
   Call URL_Load("http://tabelle.de?h=1")  
End Sub

Private Sub URL_Load(ByVal sURL As String)
   Dim appIE As Object
   Dim sTxt As String
   Set appIE = CreateObject("InternetExplorer.Application")  
   appIE.navigate sURL
   Do: Loop Until appIE.Busy = False
   Do: Loop Until appIE.Busy = False
   sTxt = appIE.document.DocumentElement.outerHTML
   Set appIE = Nothing
   Close
   Open ThisWorkbook.Path & "\test.txt" For Output As #1  
   Print #1, sTxt
   Close
   MsgBox "Der Text wurde gespeichert unter:" & vbLf & _  
      Application.Path & "\test.txt"  
End Sub

Content-ID: 553726

Url: https://administrator.de/contentid/553726

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

emeriks
emeriks 03.03.2020 aktualisiert um 07:41:15 Uhr
Goto Top
Hi,
ohne es jetzt getestet zu haben. Aber so in etwa:
Sub Aufruf()
   Call URL_Load("http://tabelle.de?h=1")  
End Sub

Private Sub URL_Load(sURL)
   Dim appIE
   Dim sTxt
   Set appIE = CreateObject("InternetExplorer.Application")  
   appIE.navigate sURL
   Do: Loop Until appIE.Busy = False
   Do: Loop Until appIE.Busy = False
   sTxt = appIE.document.DocumentElement.outerHTML
   Set appIE = Nothing
   CreateObject("Scripting.FileSystemObject").CreateTextFile("test.txt").Write sTxt  
   MsgBox "Der Text wurde gespeichert unter: test.txt"  
End Sub

E.
Wusldusl
Wusldusl 03.03.2020 um 12:50:17 Uhr
Goto Top
Hallo emeriks.
Ich hab das jetzt mal getestet.
Leider passiert nach dem Klick auf dem Skript nichts.
Also weder eine Fehlermeldung noch wird was in das txt-File geschrieben.
MsgBox wird auch nicht ausgegeben.
Hast du vielleicht eine Idee, woran es liegen kann?
monstermania
monstermania 03.03.2020 aktualisiert um 13:23:41 Uhr
Goto Top
Bei vbs benötigt man keine "Sub...End Sub" um die Subroutine auszuführen.
Einfach die Subroutine direkt aufrufen.
Call URL_Load("http://tabelle.de?h=1")  

Private Sub URL_Load(sURL)
   Dim appIE
   Dim sTxt
   Set appIE = CreateObject("InternetExplorer.Application")  
   appIE.navigate sURL
   Do: Loop Until appIE.Busy = False
   Do: Loop Until appIE.Busy = False
   sTxt = appIE.document.DocumentElement.outerHTML
   Set appIE = Nothing
   CreateObject("Scripting.FileSystemObject").CreateTextFile("test.txt").Write sTxt  
   MsgBox "Der Text wurde gespeichert unter: test.txt"  
End Sub
PS: Ich habe es nicht getestet!
emeriks
emeriks 03.03.2020 um 13:52:38 Uhr
Goto Top
Entweder keine "Sub Aufruf" oder "Aufruf" explizit aufrufen. Das ist doch BASIC Einmaleins und hat nichts mit der Edition zu tun.
Wusldusl
Wusldusl 05.03.2020 um 07:59:56 Uhr
Goto Top
Ich hab das jetzt nochmal getestet und selber noch ein paar Sachen probiert.
Also erstmal - dickes Merci - der Code geht zumindest bis Zeile 14.
Ich hab mir mal die Variable sTxt via Echo anzeigen lassen - also das klappt schon mal super.
Aber es scheint, als hätte der Rechner in die test.txt zu schreiben.
Beiläufig:
Kann es sein, dass die txt bereits angelegt ist und er hier das Problem hat, dass er die test.txt nicht erstellen kann (weil schon existiert)?

kann man eigentlich irgendwie prüfen, ob bereits Werte in einer TXT stehen? Ich würde nämlich Werte ständig auslesen wollen aus der Abfrage und in der TXT zum bestehenden Text anhängen wollen (also nicht überschreiben)?
(Zur Info: Mach gerade eine Stromverbrauchermessung ;) )
emeriks
emeriks 05.03.2020 aktualisiert um 08:29:41 Uhr
Goto Top
Zitat von @Wusldusl:
Kann es sein, dass die txt bereits angelegt ist und er hier das Problem hat, dass er die test.txt nicht erstellen kann (weil schon existiert)?
Ja. Aber das findest Du selbst im Web, wenn Du Dir mal die Syntax von Scripting.FileSystemObject.CreateTextFile anzeigen lässt. Dafür gibt es einen Parameter.
kann man eigentlich irgendwie prüfen, ob bereits Werte in einer TXT stehen? Ich würde nämlich Werte ständig auslesen wollen aus der Abfrage und in der TXT zum bestehenden Text anhängen wollen (also nicht überschreiben)?
Ja, sowas geht.
Wusldusl
Wusldusl 05.03.2020 um 13:18:35 Uhr
Goto Top
ok, das schau ich mir gleich mal an - danke für den Tipp ;)