Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1580to1584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateien mit Datum in Ordner finden und drucken

Dateien mit Datum in Ordner finden und drucken
18.09.2017 20:32:26
Kulo
Hallo in die Excelpertenrunde,
ich hätte da gern mal wieder ein Problem ... ;-)
In einer Excel Datei erfasse ich meine wöchentlichen Arbeitszeiten in einer Tabelle. Die Daten werden dann etwas sortiert und in Form gebracht und der Ausdruck sieht dem firmeneigenen Formular zum Verwechseln ähnlich. Bei meinem Schriftbild und meinen Kopfrechenkünsten eine echte Alternative zum handschriftlich ausgefüllten Formular.
Jetzt kommt es unter Umständen vor, dass ich während meiner Tätigkeit Online eine Vignette kaufen muss. Den Buchungsbeleg lade ich mir dann als PDF auf meinen Computer. Leider ist es des Öfteren schon vorgekommen, dass ich am Wochenende schlicht und ergreifend vergessen habe, diesen Beleg auszudrucken und meiner Arbeitszeiterfassung hinzuzufügen. Peinliche Telefonate mit dem Chef: "Wo ist...?", "Warum...?", "Kannst Du nicht...?"...
Grundsätzliches:
Die Vignettenbelege liegen im Ordner: D:\Spesen\2017\Vignetten und liegen allesamt als PDF vor.
Die Arbeitszeiterfassungen liegen im Ordner: D:\Spesen\2017 und sind .xlsm-Dateien.
Die Abgabepflicht für Arbeitszeiterfassung und sonstige Belege besteht wöchentlich.
In der Regel fällt nur ein Beleg für Vignetten pro Woche an - Ausnahmen wären aber denkbar.
Meine Idee:
Beim Kauf der Vignette werde ich immer daran denken, den Beleg unter o.g. Ordner abzuspeichern. Beim Ausdrucken der Arbeitszeiterfassung habe ich ihn aber des Öfteren schon mal vergessen.
Aus diesem Grund soll beim Druck auf den Button "Drucken" (druckt bisher nur das aufgehübschte Formular aus) geprüft werden,
- ob sich im Ordner D:\Spesen\2017\Vignetten Dateien befinden, und wenn ja,
- gibt es welche, die ein Erstellungsdatum im Zeitraum >= dem Datum aus z.B. Tabelle1.Range("A1") haben. Trifft das auch zu,
- sollten diese vor dem Druck des Arbeitszeitenformulars gedruckt werden.
Im Netz habe ich folgendes dazu gefunden:
In folgendem Script komme ich an das Erstellungsdatum:
Sub TEST()
Dim fso, f
Const File As String = "c:\...\DeineDatei.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.getfile(File)
Debug.Print "Erstellt: ", f.DateCreated
Debug.Print "letzter Zugriff: ", f.DateLastAccessed
Debug.Print "letzte Änderung: ", f.DateLastModified
End Sub
Mit diesem Script kommt man an alle PDF-Dateien in einem Ordner und druckt sie aus.
Sub prcPrint_PDF()
Dim strPath As String
Dim FSO As Object, F1 As Object
strPath = "C:\MeinPfad\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSO = FSO.Getfolder(strPath)
For Each F1 In FSO.Files
If LCase(CStr(F1.Path)) Like "*.pdf" Then
ShellExecuteA 0&, "Print", F1.Path, vbNullString, vbNullString, 0
End If
Next F1
End Sub
Hajo hat einen Code veröffentlicht, in welchem immer die jeweils neueste Datei in einem Verzeichnis gefunden wird:
Option Explicit
Sub Dateiliste_Neu()
'   erstellt von Hajo.Ziplies@web.de
'   jüngste Datei feststellen
' http://home.media-n.de/ziplies/
Dim strVerzeichnis As String
Dim StrDatei As String
Dim I As Integer
Dim StrTyp As String
Dim Dateiname As String
Dim Dateiname_neu As String
Dim Zeit As Date
strVerzeichnis = "D:\Eigene Dateien\Hajo\"
StrTyp = "*.xls"
Dateiname = Dir(strVerzeichnis & StrTyp)
Dateiname_neu = Dateiname
Zeit = FileDateTime(strVerzeichnis & Dateiname)
Do While Dateiname  ""
If Zeit 
Irgendwie liegt meine Lösung im Zusammenspiel aller drei Codes.
Könnte mir da jemand weiterhelfen? Ich würde mich sehr freuen.
(Mit der Declaration von Variablen kenne ich mich rein garnicht aus.)
Viele Grüße in die Runde
Kulo

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien mit Datum in Ordner finden und drucken
19.09.2017 11:55:06
Kulo
Hallo Zusammen,
ich habe mich jetzt daran versucht, die drei Code-Beispiele mal irgendwie zusammen zu basteln.
Vielleicht findet ja jemand Zeit um da mal kurz drüber zu schauen.
https://www.herber.de/bbs/user/116360.xlsm
Ich würde mich sehr freuen.
Viele Grüße
Kulo
AW: Dateien mit Datum in Ordner finden und drucken
19.09.2017 12:22:23
Michael
Hallo!
Hab mir Deine Datei jetzt nicht angesehen, aber ausgehend von Deinem ursprünglichen Beitrag sollte Dir das reichen:
Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Public Sub PrintFile(ByVal strPathAndFilename As String)
Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString,  _
vbNullString, 0)
End Sub
Sub CheckAndPrint()
Const BELEGORDNER$ = "D:\Spesen\2017\Vignetten\"
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Tabelle1") 'anpassen
Dim Fso As Object: Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Datei As Object, Pfad$
Pfad = IIf(Right(BELEGORDNER, 1) = "\", BELEGORDNER, BELEGORDNER & "\")
For Each Datei In Fso.Files
If LCase(CStr(Datei.Path)) Like "*.pdf" And _
Datei.DateCreated >= CDate(Ws.Range("A1")) Then
PrintFile (Datei.Path)
End If
Next Datei
'Dein Code zum Drucken des Blattes
Set Wb = Nothing: Set Ws = Nothing: Set Fso = Nothing: Set Datei = Nothing
End Sub
Pfad zu den Vignetten hab ich von Dir übernommen, wie das Blatt heißt, auf dem in A1 das Kontroll-Datum steht, musst Du anpassen, ebenso das Blatt das gedruckt wird.
LG
Michael
Anzeige
AW: Dateien mit Datum in Ordner finden und drucken
19.09.2017 19:24:06
Kulo
Hallo Michael,
vielen, vielen Dank für Deine Hilfe.
Das ist mehr als ich mir hätte träumen lassen.
Leider kann ich es noch nicht live testen, da ich gerade im Ausland bin. Aber am Wochenende teste ich ausführlich.
Also vielen Dank nochmal und
viele Grüße aus Brüssel
Kulo
AW: Dateien mit Datum in Ordner finden und drucken
19.09.2017 22:23:28
Kulo
Hallo Michael,
ich konnte doch nicht bis zum Wochenende warten und habe Deinen Code in meine Arbeitsmappe eingepflegt.
Leider lief es nicht auf Anhieb.
Schaust Du bitte mal über meine Änderungen/Anmerkungen im Code?
Sub CheckAndPrint()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Eingabe") 'anpassen
Dim Fso As Object
Dim BELEGORDNER As String
Dim Datei As Object, Pfad$
BELEGORDNER = Worksheets("StammDat").Range("E12") ' _
Belegordner ist ein Wert in WS StammDat, welcher sich aus verschiedenen Zellwerten zusammen  _
setzt. _
Muss der Wert eine Konstante sein?
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fso = Fso.Getfolder(BELEGORDNER) ' Ohne dem klappts nicht. _
"Laufzeitfehler 438, Objekt unterstützt diese Eigenschaft oder Methode nicht." Ist dass  _
Wichtig oder Zufall?
Pfad = IIf(Right(BELEGORDNER, 1) = "\", BELEGORDNER, BELEGORDNER & "\")
For Each Datei In Fso.Files
' Habe hier drunter auf *.txt geändert, da ich keine aktuelle PDF-Datei zur Hand habe.
If LCase(CStr(Datei.Path)) Like "*.txt" And _
Datei.DateCreated >= CDate(Ws.Range("AR6")) Then
MsgBox "Der Druck startet nicht wirklich." 'PrintFile (Datei.Path) Habe  _
gerade keinen Drucker zur Hand
End If
Next Datei
'Dein Code zum Drucken des Blattes
Set Wb = Nothing: Set Ws = Nothing: Set Fso = Nothing: Set Datei = Nothing
End Sub
Über eine kurze Nachricht würde ich mich sehr freuen.
Viele Grüße
Kulo
Anzeige
AW: Dateien mit Datum in Ordner finden und drucken
20.09.2017 09:43:00
Michael
Hallo!
Muss der Wert eine Konstante sein Nein.
Ohne dem klappts nicht. Ja, GetFolder ist erforderlich, hab ich vergessen.
keinen Drucker zur Hand Druck läuft über Standarddrucker, ein solcher muss vorhanden sein.
Daher:
Declare Function apiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Public Sub PrintFile(ByVal strPathAndFilename As String)
Call apiShellExecute(Application.hwnd, "print", strPathAndFilename, vbNullString, _
vbNullString, 0)
End Sub
Sub CheckAndPrint()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim Ws As Worksheet: Set Ws = Wb.Worksheets("Eingabe")
Dim Fso As Object: Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Ordner As Object, Datei As Object, Pfad$
Pfad = Wb.Worksheets("StammDat").Range("E12")
Pfad = IIf(Right(Pfad, 1) = "\", Pfad, Pfad & "\")
Set Ordner = Fso.GetObject(Pfad)
For Each Datei In Ordner.Files
If LCase(CStr(Datei.Path)) Like "*.pdf" And _
CDate(Datei.DateCreated) >= CDate(Ws.Range("AR6")) Then
PrintFile (Datei.Path)
End If
Next Datei
'Dein Code zum Drucken des Blattes
Set Wb = Nothing: Set Ws = Nothing: Set Fso = Nothing
Set Datei = Nothing: Set Ordner = Nothing
End Sub
Die API-Function sowie die Sub "PrintFile" müssen ebenfalls ins Modul, nur damit das klar ist.
LG
Michael
Anzeige
AW: Dateien mit Datum in Ordner finden und drucken
20.09.2017 13:47:19
Kulo
Hallo Michael,
Perfekt! ;-)
Ich danke Dir nochmals für Deine Hilfe.
Natürlich habe ich Drucker installiert. Sitze aber in meinen Lenkpausen im LKW mit dem Laptop auf´m Schoß und lasse mir irgendwelche Dinge einfallen, an denen ich knobeln kann. Der Drucker steht zu Hause. ;-)
Mit API-Function und Sub "PrintFile" ist klar.
Also, vielen Dank nochmal und
viele Grüße aus Luxembourg
Kulo
Alles klar, Gern, danke für die Rückmeldung, owT
20.09.2017 13:59:35
Michael

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige