Jump to content

automatisches drucken von MS-Excel Tabellen mit VBScript


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

folgende Frage: Wir haben bei uns im Unternehmen wöchentlich eine Excelliste auszudrucken, wobei jede Woche eine neue Datei erstellt wird. Der Name der Datei ist

 

immer "Schichtplan 2014 01.xlsx", wobei der hintere Teil also die "01" dann durch "02" usw. ersetzt wird. Diese soll nach Möglichkeit zeitgesteuert jeden Montag nach

 

Computerstart gedruckt werden.

 

Durch wiederholtes Googlen versuch Ich es nun mit einem VBScript zu realisieren, da ich aber ein Anfänger im Bereich scripting bin funktioniert mein Script noch nicht

 

so ganz. Ich bekomm es hin das eine Datei gedruckt wird aber noch nicht das sich das Script immer die aktuellste .xlsx-Datei raussucht.

 

Hier mal mein erster Versuch:

 

' Excel (versteckt) öffnen
    Set appXLS = CreateObject("Excel.Application")

' Workbook (versteckt) und schreibgeschützt öffnen
    Set wbkXLS = appXLS.Workbooks.Open("C:\Users\Niklas Vitt\Documents\Schichtplaene\Schichtplan 2014 25.xlsx", , True)
    Aktuell = ""
    Pre = "Schichtplan 2014 "
    For Each Blatt in wbkXLS.worksheets
    BN = Blatt.Name
    If Left (BN, Len(Pre)) = Pre Then
        Woche = Split(BN) (1)
        If Woche > Aktuell Then Aktuell = Woche
    End If
    Next

    MsgBox "Neuestes Blatt: " & Pre & Aktuell
    
' Tabelle1 ausdrucken
    wbkXLS.sheets("Tabelle1").PrintOut
' Workbook schließen
    wbkXLS.Close



    Set wbkXLS = Nothing
    appXLS.Quit
    Set appXLS = Nothing

 

freue mich über jede Hilfe

 

MfG

 

Niklas_V

 

 

Link zu diesem Kommentar
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\MeinOrdner\")

predate=date()
for each file in folder.Files
  filedate = file.datelastmodified
  if filedate > predate then Dateiname=file.path
  predate=filedate
next


so in der Art könntest Du zumindest die neueste Datei raussuchen. Sollte es da noch mehr ausser "Wochenplan" geben, kannst ja innerhalb der For-Each-Schleife noch filtern...

Link zu diesem Kommentar
MyPath= "J:\DIV\XLS"

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(MyPath)

for each file in folder.Files
  filedate = file.datelastmodified
  if filedate > predate then 
	Dateiname=file.path
  	predate=filedate
  end if
next

Set appXLS = CreateObject("Excel.Application")
Set wbkXLS = appXLS.Workbooks.Open(Dateiname,,True)

maybe like this? ... dannach dann halt noch den "Printout-Befehl etc...

Link zu diesem Kommentar

Hi nochmal,

 

Ein letzter Feinschliff fehlt mir noch... und zwar legt mein Skript jetzt fleißig ein Log an aber überschreibt dieses immer weil es ja den gleichen Namen erhält.

Wie schaff ich es das immer das Datum angehangen wird? Also das quasi immer wieder eine neue Log entsteht mit dem Erstellungsdatum.

Soweit bin ich:

Dim fso, MeineDatei
Set fso = CreateObject("Scripting.FileSystemObject")
Set MeineDatei = fso.CreateTextFile("C:\Users\XXX XXX\XXX\LogFiles\TestLog.txt", True, True)
MeineDatei.WriteLine("Der Schichtplan wurde gedruckt")
MeineDatei.Close

 

MfG

 

Niklas

Link zu diesem Kommentar

Hmm... liegt das an mir oder warum schreibt der sowas hier in die Log: "敄⁲捓楨档灴慬畷摲⁥敧牤捵瑫愠㉭⸶㘰㈮㄰ഴ" ?  :confused:

so sieht der Code aus .. eig nicht groß verändert:

Dim fso, MeineDatei
Set fso = CreateObject("Scripting.FileSystemObject")
Set MeineDatei = fso.OpenTextFile("C:\Users\XXX XXX\XXX\LogFiles\SchichtplanLog.log", 8, True)
MeineDatei.WriteLine "Der Schichtplan wurde gedruckt am" & Date()
MeineDatei.Close


 

Link zu diesem Kommentar
  • 3 Wochen später...

Moin nochma ;)

 

Das Skript funktioniert soweit ganz gut,

jetzt hab ich noch ein Problem, und zwar kann ich auch nach der aktuellsten .xls-datei filtern das er mir nur die ausdruckt? Weil das Skript gibt einen Fehler aus wenn zum Beispiel eine .txt-Datei im Ordner enthalten ist die neuer ist als das zu Druckende xls-file.

Also muss ich das Skript so anpassen, dass auch wenn eine andere Datei im Ordner liegt die neuer ist, das Skript trotzdem die neueste .xls-Datei druckt.

Ich bin für jeden Lösungsvorschlag dankbar :)

 

MfG

Niklas

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...