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