VBS - Exceldatei öffnen, drucken und schließen
Hallöle,
ich habe da ein Problem...unzwar will ich mehrere Exceldateien nacheinander öffnen jeweils mit dem aktuellen Monatsnamen als Arbeitsblatt.
Hierzu habe ich folgenden Code zusammen gebastelt jedoch wenn die Textdatei, in der die Pfade stehen, zu Ende ist, läuft es in den Fehler das die Datei "" nicht gefunden wurde. Außerdem werden die Exceldateien zusammen und nicht nacheunander geöffnet..
kann mir jemand weiterhelfen?
Vielen Dank schon mal
PS: bin nicht so wirklich der Programierheld .... :/
ich habe da ein Problem...unzwar will ich mehrere Exceldateien nacheinander öffnen jeweils mit dem aktuellen Monatsnamen als Arbeitsblatt.
Hierzu habe ich folgenden Code zusammen gebastelt jedoch wenn die Textdatei, in der die Pfade stehen, zu Ende ist, läuft es in den Fehler das die Datei "" nicht gefunden wurde. Außerdem werden die Exceldateien zusammen und nicht nacheunander geöffnet..
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile("C:\test\Druck.txt")
i=0
while not oFile.AtEndOfStream
i=i+1
oFile.ReadLine
Wend
oFile.Close
' Array definieren
REDIM sEingabe(i)
Set oFile = fso.OpenTextFile("C:\test\Druck.txt")
i=0
while not oFile.AtEndOfStream
sEingabe(i)=oFile.ReadLine
i=i+1
Wend
oFile.Close
dim excel
set excel = CreateObject("Excel.Application")
excel.visible = true
Dim iMyMonth, sMyMonth
iMyMonth = Month(Now)
sMyMonth = MonthName(iMyMonth)
excel.workbooks.open sEingabe
excel.Worksheets(sMyMonth).Select
Wscript.Sleep 1500
WshShell.AppActivate "Excel"
WshShell.SendKeys "^p"
WshShell.SendKeys "{Enter}"
Wscript.Sleep 1500
excel.DisplayAlerts = False
excel.Quit
Set excel = Nothing
kann mir jemand weiterhelfen?
Vielen Dank schon mal
PS: bin nicht so wirklich der Programierheld .... :/
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 251686
Url: https://administrator.de/contentid/251686
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Kyrinja,
das könntest du so abkürzen: (Kommentare befinden sich im Code)
Grüße Uwe
das könntest du so abkürzen: (Kommentare befinden sich im Code)
Dim excel, fso, sMyMonth, line, filepath
Const TEXTFILE = "C:\test\Druck.txt"
'Monatsname
sMyMonth = MonthName(Month(Now))
'Objekte erzeugen
Set fso = CreateObject("Scripting.FileSystemObject")
set excel = CreateObject("Excel.Application")
'Excel sichtbar machen
excel.visible = True
'Dialoge unterdrücken
excel.DisplayAlerts = False
'Für jede Zeile in der Textdatei ... (Trennung erfolgt durch Zeilenumbruch am Ende jeder Zeile)
For Each line In Split(fso.OpenTextFile(TEXTFILE).ReadAll,vbNewLine)
filepath = Trim(line) ' führende oder abschließende Leerzeichen der Zeile entfernen
'Wenn Zeile nicht leer ist und die Datei existiert...
If filepath <> "" And fso.FileExists(filepath) Then
' Datei öffnen
Set wb = excel.workbooks.Open(filepath)
'gewünschtes Worksheet drucken
wb.Worksheets(sMyMonth).PrintOut
'Workbook wieder schließen (ohne es zu speichern)
wb.Close False
End If
Next
'Warnmeldungen wieder aktivieren und Excel schließen
excel.DisplayAlerts = True
excel.Quit
'Objekte releasen
Set excel = Nothing
Set fso = Nothing
Set wshSHell = Nothing
Zitat von @Kyrinja:
Vielen Dank doch leider Druckt es nicht :/ kann das mit Excel 2013 zusammen hängen?
eigentlich nicht ...läuft hier auf einem 2013er ....Vielen Dank doch leider Druckt es nicht :/ kann das mit Excel 2013 zusammen hängen?
lass mal folgende Zeile raus, damit du siehst woran es bei dir beim Drucken hängt:
excel.DisplayAlerts = False
Zitat von @Kyrinja:
Keine Fehlermeldung...öffnet und schließt sauber aber es geht kein Druckauftrag raus.
stehen die Pfade in der Textdatei zufällig mit Anführungszeichen ?Keine Fehlermeldung...öffnet und schließt sauber aber es geht kein Druckauftrag raus.
läuft hier sonst einwandfrei ...
man kann der Funktion auch einen Drucker übergeben, eventuell ist der falsche Drucker als Standard bei dir definiert ...
wb.Worksheets(sMyMonth).PrintOut ,,,,"Exakter Name des Druckers"
siehe letzter Post ...