kyrinja
Goto Top

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..

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 face-smile

PS: bin nicht so wirklich der Programierheld .... :/

Content-ID: 251686

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

Ausgedruckt am: 22.11.2024 um 22:11 Uhr

colinardo
Lösung colinardo 11.10.2014 aktualisiert um 14:40:12 Uhr
Goto Top
Hallo Kyrinja,
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
Grüße Uwe
Kyrinja
Kyrinja 11.10.2014 um 14:11:57 Uhr
Goto Top
Super!

Vielen Dank doch leider Druckt es nicht :/ kann das mit Excel 2013 zusammen hängen?

Grüße
colinardo
Lösung colinardo 11.10.2014 aktualisiert um 14:40:10 Uhr
Goto Top
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 ....
lass mal folgende Zeile raus, damit du siehst woran es bei dir beim Drucken hängt:
excel.DisplayAlerts = False 
Kyrinja
Kyrinja 11.10.2014 um 14:16:08 Uhr
Goto Top
Keine Fehlermeldung...öffnet und schließt sauber aber es geht kein Druckauftrag raus.
colinardo
Lösung colinardo 11.10.2014 aktualisiert um 14:43:09 Uhr
Goto Top
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 ?
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"
Noch zur Info: Wenn das Sheet leer sein sollte, wird auch nichts gedruckt !
Kyrinja
Kyrinja 11.10.2014 um 14:32:04 Uhr
Goto Top
Nein da steht z.b.
C:\test.xls
C:\test1.xls
...


Ich habe auch mehrere Drucker versucht als Standart zu verwenden..auch den PDFCreator aber es funktioniert bei keinem ...
Bin anscheinend zu blöd und mache irg. etwas falsch

Wie würde ich denn den Drucker übergeben ?
colinardo
colinardo 11.10.2014 aktualisiert um 14:36:17 Uhr
Goto Top
Zitat von @Kyrinja:
Wie würde ich denn den Drucker übergeben ?
siehe letzter Post ...
Kyrinja
Kyrinja 11.10.2014 um 14:40:01 Uhr
Goto Top
Ups das hatte ich übersehen! die Info war der Schlüssel zum Erfolg

das Sheet war leer face-smile

vielen vielen Dank!