VBS Wert aus Excel in TXT schreiben?
Hallo,
ich würde gerne mit eine .vbs den Wert aus einer speziellen Zelle einer Excel auslesen und in eine TXT-Datei schreiben. Kann mir jemand ein einfaches Beispiel liefern?
Danke.
1 Antwort
Excel-Applikation starten (Excel muss auf dem Computer installiert sein)
Dim XLA: Set XLA = CreateObject("Excel.Application")
Mit Visible=True wird das Fenster sichtbar, mit False wird es wieder unsichtbar. Beim debuggen empfiehlt es sich, wenn man das Fenster sichtbar hat, später ist das je nach Anwendung nicht mehr notwendig.
Damit mögliche Fehlermeldungen aus Excel angezeigt werden können, muss das Fenster einmal Sichtbar geschaltet werden. Dannach kann man es gleich wieder unsichtbar schalten. Ist sicher, dass sich kein Fenster öffnet, kann man die Zeilen auch weglassen
XLA.Visible=True
XLA.Visible=False
Nun muss die Datei geöffnet werden
Set WB = XLA.Workbooks.Open("C:\Users\...\Datei.xlsx")
Wenn nur ein Wert gelesen werden soll, reicht es wenn man es stattdessen nur Read-Only und ohne Update-Links macht. Dann gibt es keine Probleme, wenn die Datei schon offen ist
Set WB = XLA.Workbooks.Open("C:\Users\...\Datei.xlsx", False, True)
Nun könnten wir kurz prüfen, ob kein Fehler aufgetreten ist
If Err.Number <> 0 Then
MsgBox("Fehler beim Öffnen: " & Err.Description)
Err.Clear
else
'Programm hier fortführen...
End If
Auf die einzelnen Worksheets kann mit
WB.Worksheets(1)
oder mit
WB.Worksheets("Name")
'Verwendung
Dim WS
Set WS = WB.Worksheets("Name")
zugegriffen werden
Zellen gibt es mit
WB.Worksheets(1).Cells(Zeile,Spalte)
'Beispiel:
WB.Worksheets(1).Cells(1,2)
Alternativ funktioniert auch
WB.Worksheets(1).Range("A2")
Also z.B.
Wert = WB.Worksheets(1).Range("A2")
'bzw.
Wert = WS.Range("A2")
Will man nicht den Wert der Zelle (.Value), kann man auch die Formel (.Formula) abrufen. Falls du noch weitere Befehle brauchst, kannst du den Excel-Makro-Editor die gewünschte Aktion aufzeichnen lassen.
Dannach muss nur noch Wert als txt-Datei abgespeichert werden.
Am Ende musst du noch die Datei schließen und Excel beenden
'Workbook speichern ohne Änderungen zu speichern (sollen Änderungen gespeichert werden True statt False oder vorher WB.Save ausführen)
WB.Close False
XLA.Quit
Leider wird Excel nicht mehr immer beendet. Es kann passieren, dass Excel als unsichtbarer Prozess im Taskmanager erhalten bleibt und dann im ungünstigsten Fall erst bei einem Neustart verschwindet. Es ist zwar möglich das Beenden zu erzwingen, aber das macht den Code deutlich umständlicher.