Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Inhalt eines Textfiles aus Netz abgreifen

Inhalt eines Textfiles aus Netz abgreifen
03.05.2018 20:28:01
Mike
Hallo Leute,
ich bin jetzt schon fast Stammgast hier und konnte mit Hilfe des Forums einiges realisieren und anlernen.
Allerdings stoße ich grad auf ein Problem, bei dem ich nicht weiterkomme:
Hintergrund:
Ich möchte eine Berechnungstabelle für ein Spiel veröffentlichen welche eine Versionsprüfung besitzen soll. Dazu würde ich gern auf meinem Webspace ein Textfile ablegen, in dem die aktuelle Versionsbezeichnung hinterlegt ist.
Das Textfile könnte beispielsweise "0.80r 2018-05-03" als Inhalt haben.
Den Inhalt der Textdatei würde ich in einem Macro gern einer Variable zuweisen, welche dann mit dem Wert einer Zelle (oder auch direkt im Code hinterlegt) überprüft, ob die Version zusammenpasst und danach einfach eine msgbox-Info auswerfen, dass die Version nicht mehr ident zur genutzten Tabelle ist, bzw. dass eine neuere Datei verfügbar ist.
Im Prinzip scheitere ich an einer brauchbaren Lösung, wie ich den Inhalt des Textfiles in Excel reinbekomme, alles Andere ist dann kein Problem mehr :)
Wie im obigen Beispiel genannt wäre nur die erste Zeile von Interesse, das File wird auch nur diese "Mikro-Information" beinhalten. Der Dateiname der Online-Textdatei für die Prüfung bleibt immer der selbe.
Eine weitere Frage in Bezug zur Ausgangsfrage:
Kann dieser Import jeder Benutzer "einfach so" machen oder braucht er/sie dann spezielle, lokale Rechte dafür? Lässt sich der Import still ohne großartige, bzw. verwirrende Abfragen für den Endnutzer umsetzen?
Ich verwende hier ein Office 2013, konnte die Excel-Version leider nicht bei der Beitragerstellung auswählen. Der Code sollte auf 2013 und 2016 laufen, ältere Versionen würde ich eher nicht berücksichtigen falls dies ein Thema sein sollte.
LG
Mike

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: teste mal mit
03.05.2018 22:20:00
Fennek
Hallo,
hier ein Code, der das leisten könnte:

Sub T_1()
With CreateObject("MSXML2.XMLHTTP")
.Open "get", "https://www.herber.de/bbs/user/121135.txt", 0
.send
c00 = .responsetext
End With
Debug.Print c00
End Sub
mfg
AW: teste mal mit
03.05.2018 22:33:54
Mike
Holla, das ging ja schnell!
Danke für Deinen Code-Vorschlag, er funktioniert einwandfrei :)
LG
Mike
Nachfrage
04.05.2018 21:13:14
Mathisen
Guten Abend,
könnten wir bitte von dir noch ein Beispiel bekommen wie wir per VBA die in diesem Fall Versionsnummer im Netz hinterlegen können.
Vielen Dank Mathisen
AW: Nachfrage
05.05.2018 10:48:19
Mike
Hallo Fennek, natürlich gerne!
Zuerst hab ich mir einfach lokal ein Textfile mit dem Inhalt "0.16.36 (build 36253, win64, steam) / 0.30a" erstellt und in ein Verzeichnis hochgeladen.
Dann folgt der Code im Workbook_open, sprich bei jedem Öffnen der Datei einmal eine automatische Prüfung durchführen:
Im VBA-Code stelle ich anfangs mit einer konstanten Variable die Versionsnummer ein, das macht mir in neuen Version es einfacher die richtige Nummer einzusetzen (Variable "BisherigeVersion").
Der Vergleich erfolgt dann über die Variablen BisherigeVersion und AktuelleVersion.
Zum Testen einfach etwas am Inhalt der Konstante im Code ändern, dann erfolgt der Aufruf der MsgBox.
Hier der Code den ich verwendet habe, müsste auch bei Dir ebenfalls problemlos laufen, sofern ein Sheet mit dem Namen "Optionen" angelegt ist:
Private Sub Workbook_Open()
Dim AktuelleVersion, BisherigeVersion, MsgBoxText As String
AktuelleVersion = ""
BisherigeVersion = ""
Sheets("Optionen").Select
BisherigeVersion = "0.16.36 (build 36253, win64, steam) / 0.30a"
' Immer die genutzte Version in B3 reinschreiben, auch wenn der Nutzer was überschrieben oder  _
geändert hat:
Cells(3, 2).Value = BisherigeVersion
' Überprüfe auf der Website nach Updates:
With CreateObject("MSXML2.XMLHTTP")
.Open "get", "https://www.computersystems4u.net/freigabe/VersionInfo.txt", 0
.send
AktuelleVersion = .responsetext
End With
' Aktuelle Versionsnummer laut Datei VersionsInfo.txt aus dem Netz in Zelle G3 eintragen damit  _
der Benutzer die Änderung auch optisch sieht:
Cells(3, 7).Value = AktuelleVersion
' Ist die Version gleich?
If BisherigeVersion  AktuelleVersion Then
MsgBoxText = MsgBox("Es gibt eine neuere Version. Willst Du die Downloadseite öffnen?",  _
vbYesNo)
If MsgBoxText = vbYes Then
Set wshshell = CreateObject("WScript.Shell")
wshshell.Run "https://www.computersystems4u.net/freigabe/Factorio.htm"
End If
If MsgBoxText = vbNo Then
Exit Sub
End If
End If
End Sub

Hab zum testen das File einfach mal auf mein Freigabeverzeichnis meiner Firmenwebsite gepackt, wird später irgendwann wohl eine eigene Website bekommen. Aber grundsätzlich funktioniert der Code.
Allerdings fiel mir auf, dass der Inhalt des Textfiles nur beim ersten Ausführen geladen wird. Wird der Code erneut ausgeführt, wird eine Änderung im Textfile nicht erkannt. Dazu muss Excel erst geschlossen und neu geöffnet werden.
Das ist in meinem Fall aber kein Problem, da ich ja nicht alle paar Minuten eine neue Version hochziehe.
Daher hab ich den Code auch in _Open reingepackt und nicht wie anfangs gedacht als alleinstehenden, manuell auszuführenden Code.
Danke nochmal für eure Unterstützung,
LG Mike
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige