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-Key: 553726

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

Printed on: April 19, 2024 at 16:04 o'clock

Member: emeriks
emeriks Mar 03, 2020 updated at 06:41:15 (UTC)
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.
Member: Wusldusl
Wusldusl Mar 03, 2020 at 11:50:17 (UTC)
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?
Member: monstermania
monstermania Mar 03, 2020 updated at 12:23:41 (UTC)
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!
Member: emeriks
emeriks Mar 03, 2020 at 12:52:38 (UTC)
Goto Top
Entweder keine "Sub Aufruf" oder "Aufruf" explizit aufrufen. Das ist doch BASIC Einmaleins und hat nichts mit der Edition zu tun.
Member: Wusldusl
Wusldusl Mar 05, 2020 at 06:59:56 (UTC)
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 ;) )
Member: emeriks
emeriks Mar 05, 2020 updated at 07:29:41 (UTC)
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.
Member: Wusldusl
Wusldusl Mar 05, 2020 at 12:18:35 (UTC)
Goto Top
ok, das schau ich mir gleich mal an - danke für den Tipp ;)