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, 2185 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Drucker und Scanner
gelöst PCL-Drucker drucken nur Hieroglyphen (5)

Frage von diwaffm zum Thema Drucker und Scanner ...

Windows Server
Drucken via RDP, Papier kommt aus falschem Schacht

Frage von torcolato zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (24)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...