Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS - Exceldatei öffnen, drucken und schließen

Frage Entwicklung VB for Applications

Mitglied: Kyrinja

Kyrinja (Level 1) - Jetzt verbinden

11.10.2014, aktualisiert 14:40 Uhr, 2362 Aufrufe, 8 Kommentare

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

01.
 
02.
Set WshShell = WScript.CreateObject("WScript.Shell") 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Set oFile = fso.OpenTextFile("C:\test\Druck.txt") 
06.
i=0 
07.
while not oFile.AtEndOfStream 
08.
i=i+1 
09.
oFile.ReadLine 
10.
Wend 
11.
oFile.Close 
12.
' Array definieren 
13.
REDIM sEingabe(i) 
14.
Set oFile = fso.OpenTextFile("C:\test\Druck.txt") 
15.
i=0 
16.
while not oFile.AtEndOfStream 
17.
sEingabe(i)=oFile.ReadLine 
18.
i=i+1 
19.
Wend 
20.
oFile.Close 
21.
 
22.
 
23.
dim excel 
24.
set excel = CreateObject("Excel.Application") 
25.
excel.visible = true 
26.
 
27.
Dim iMyMonth, sMyMonth 
28.
iMyMonth = Month(Now) 
29.
sMyMonth = MonthName(iMyMonth) 
30.
 
31.
excel.workbooks.open sEingabe 
32.
excel.Worksheets(sMyMonth).Select 
33.
 
34.
Wscript.Sleep 1500 
35.
WshShell.AppActivate "Excel" 
36.
 
37.
 
38.
WshShell.SendKeys "^p" 
39.
WshShell.SendKeys "{Enter}" 
40.
Wscript.Sleep 1500 
41.
 
42.
excel.DisplayAlerts = False 
43.
excel.Quit 
44.
 
45.
Set excel = Nothing
kann mir jemand weiterhelfen?

Vielen Dank schon mal

PS: bin nicht so wirklich der Programierheld .... :/
Mitglied: colinardo
LÖSUNG 11.10.2014, aktualisiert um 14:40 Uhr
Hallo Kyrinja,
das könntest du so abkürzen: (Kommentare befinden sich im Code)
01.
Dim excel, fso, sMyMonth, line, filepath 
02.
Const TEXTFILE = "C:\test\Druck.txt" 
03.
'Monatsname 
04.
sMyMonth = MonthName(Month(Now)) 
05.
'Objekte erzeugen 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
set excel = CreateObject("Excel.Application") 
08.
'Excel sichtbar machen 
09.
excel.visible = True 
10.
'Dialoge unterdrücken 
11.
excel.DisplayAlerts = False 
12.
'Für jede Zeile in der Textdatei ... (Trennung erfolgt durch Zeilenumbruch am Ende jeder Zeile) 
13.
For Each line In Split(fso.OpenTextFile(TEXTFILE).ReadAll,vbNewLine) 
14.
  filepath = Trim(line) ' führende oder abschließende Leerzeichen der Zeile entfernen 
15.
  'Wenn Zeile nicht leer ist und die Datei existiert... 
16.
  If filepath <> "" And fso.FileExists(filepath) Then 
17.
        ' Datei öffnen 
18.
	Set wb = excel.workbooks.Open(filepath) 
19.
        'gewünschtes Worksheet drucken 
20.
	wb.Worksheets(sMyMonth).PrintOut 
21.
        'Workbook wieder schließen (ohne es zu speichern) 
22.
	wb.Close False 
23.
  End If 
24.
Next 
25.
'Warnmeldungen wieder aktivieren und Excel schließen 
26.
excel.DisplayAlerts = True 
27.
excel.Quit 
28.
'Objekte releasen 
29.
Set excel = Nothing 
30.
Set fso = Nothing  
31.
Set wshSHell = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: Kyrinja
11.10.2014 um 14:11 Uhr
Super!

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

Grüße
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.10.2014, aktualisiert um 14:40 Uhr
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 
Bitte warten ..
Mitglied: Kyrinja
11.10.2014 um 14:16 Uhr
Keine Fehlermeldung...öffnet und schließt sauber aber es geht kein Druckauftrag raus.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 11.10.2014, aktualisiert um 14:43 Uhr
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 !
Bitte warten ..
Mitglied: Kyrinja
11.10.2014 um 14:32 Uhr
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 ?
Bitte warten ..
Mitglied: colinardo
11.10.2014, aktualisiert um 14:36 Uhr
Zitat von Kyrinja:
Wie würde ich denn den Drucker übergeben ?
siehe letzter Post ...
Bitte warten ..
Mitglied: Kyrinja
11.10.2014 um 14:40 Uhr
Ups das hatte ich übersehen! die Info war der Schlüssel zum Erfolg

das Sheet war leer

vielen vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Server-Hardware
Kann wav Datei im Handy nicht öffnen (2)

Frage von Chrisch zum Thema Server-Hardware ...

HTML
Link aus Iframe in neuem Tab öffnen (5)

Frage von frank1983 zum Thema HTML ...

Festplatten, SSD, Raid
Ich kann meine externe Festplatte nicht mehr öffnen! (22)

Frage von MikeMueller zum Thema Festplatten, SSD, Raid ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(8)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte