Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1116to1120
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

Ordner durchsuchen und richtiges XLS öffnen

Ordner durchsuchen und richtiges XLS öffnen
Martin
Guten Tag
Ich haben einen Order "Excellisten" auf dem C:, die eine Excel-Mappe für jeden Tag enthält. Ich möchte nun folgendes mit einem Makro machen:
- die neuste Mappe im Ordner öffnen und schauen, welches das höchste Datum in Spalte D ist.
- falls dieses höchste Datum in dem gegenwärtigen Monat liegt, die Mappe wieder zu machen , die einen Tag ältere Mappe öffnen und das gleiche wiederholen
- falls das höchste Datum im letzten Monat liegt, diese Mappe offen lassen und das Makro beenden
Besten Dank für Eure Hilfe.
Martin
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 11:09:19
JogyB
Hi.
Wie sieht das Datumsformat im Dateinamen aus? Oder soll das nach dem Änderungsdatum der Datei gehen?
Gruss, Jogy
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 11:16:14
Martin
Der Dateiname sieht wie folgt aus: "abcef_20091116.xls", es gibt jeden Tag via Batch-Lauf eine Datei mit entsprechendem Datum im Namen.
Die Datümer (schreib's mal so, damit man es nicht mit Daten verwechselt) in Spalte D der Liste sind als Datum formatiert (TT.MM.JJJJ). Der Tag ist immer 01.
Besten Dank
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 11:24:25
Martin
habe vergessen, Frage noch offen anzukreuzen.....Sorry
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 12:06:19
JogyB
Hi.
Probier das mal aus:
' Anmerkung: Ich habe absichtlich nicht mit FindFile gearbeitet,
' da das in Excel 2007 nicht mehr funktionieren würde
' Die Excel4 Makros, die ich zum auslesen verwende, gibt es glaube
' ich noch
Sub Datum_checken()
Dim i As Long
Dim dateiNum As String
Dim myDatei As String
Dim fileDate As Date
Dim maxDate As Date
Const myPath = "c:\Temp\test\"
Const tabName = "Tabelle1"
' In Frage kommende Dateien zählen - wird als Abbruchkriterium benötigt
' Wenn es keine gibt, dann gleich raus
If Dir(myPath & "*_*.xls") = "" Then
Call MsgBox("Keine Dateien gefunden!", vbCritical)
Exit Sub
Else
dateiNum = 1
End If
' Dateien mit richtigem Format zählen
Do
myDatei = Dir
If myDatei Like "*_########.xls" Then
dateiNum = dateiNum + 1
End If
Loop Until myDatei = ""
' Jetzt die Datei suchen, in der ein Datum von letztem Monat vorkommt
Do
fileDate = DateSerial(Year(Date), Month(Date), Day(Date) - i)
' Habe das hier mit einem variablen Dateibeginn gemacht
' Bei fixem Beginn ersetzt Du myPath durch das "abcdef" (mit Anführungszeichen)
myDatei = Dir(myPath & "*_" & _
Format(DateSerial(Year(Date), Month(Date), Day(Date) - i), "yyyymmdd") & ".xls")
If myDatei  "" Then
' höchstes Datum auslesen
maxDate = CDate(ExecuteExcel4Macro("MAX('" & myPath & _
"[" & myDatei & "]" & tabName & "'!C4:C4)"))
' Wenn Datum aus letztem Monat, dann öffnen
If DateSerial(Year(Date), Month(Date) - 1, 1) = _
DateSerial(Year(maxDate), Month(maxDate), 1) Then
Workbooks.Open (myPath & myDatei)
Exit Do
Else
i = i + 1
End If
End If
Loop Until i = dateiNum
' Wenn i hier auf Dateinum steht, dann wurde nichts gefunden
If i = dateiNum Then
Call MsgBox("Keine Datum aus letztem Monat gefunden!", vbCritical)
End If
End Sub

Gruss, Jogy
Anzeige
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 13:37:00
Martin
Hallo JogyB
Vielen herzlichen Dank für das Makro! Ich werd's gleich mal ausprobieren.
Grüsse aus der Schweiz
Martin
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 15:10:55
Martin
Ich habe das Modul für meine Liste wie folgt angepasst (myPath natürlich auch):
maxDate = CDate(ExecuteExcel4Macro("MAX('" & myPath & _
"[" & myDatei & "]" & Left(myDatei, 20) & "'!C4:C4)"))
Diese Zeile ergibt bei mir einen Laufzeitfehler 13 (***Bei geöffneter Datei funktioniert es aber***).
zur Info: Das Tabellenblatt heisst gleich wie die Datei (es sind 20 Zeichen .xls, daher habe ich ein Left eingefügt.)
Besten Dank
Anzeige
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 15:25:53
JogyB
Hi.
Kann das nicht nachvollziehen, bei mir funktioniert es... probier mal
maxDate = CDate(ExecuteExcel4Macro("MAX('" & myPath & _
"[" & myDatei & "]" & Replace(myDatei, ".xls", "") & "'!C4:C4)"))
oder
maxDate = CDate(ExecuteExcel4Macro("MAX('" & myPath & _
"[" & myDatei & "]" & Left(myDatei, Len(myDatei) - 4) & "'!C4:C4)"))
Dann ist es egal, wie viele Buchstaben es sind, es macht einfach das .xls weg.
Gruss, Jogy
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 15:38:41
Martin
Hallo Jogy
Danke nochmals für die Hilfe.
Ich hab's mit beiden (replace und left-len) probiert, doch es gibt immer noch diesen Laufzeitfehler 13. Wie gesagt, wenn die Datei geöffnet ist, funktioniert es problemlos, daher kann es kein Tippfehler sein, denke ich.
Leider habe ich keine Ahnung, an was es liegen könnte.
Was macht denn diese ExecuteExcel4Macro genau? Gibt es da besondere Einstellungen, die vorhanden sein müssten? (und was ist das !C4:C4? Ist wohl Column 4, aber wieso das "!")
Vielen Dank
Anzeige
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 15:59:12
JogyB
Hi.
Das ist ein zugriff auf alte Excel4 Makros. Das ist nirgends mehr dokumentiert, funktioniert aber noch. Damit gehen einige schöne Dinge, die Excel nicht mehr kann, so z.B. der Zugriff auf geschlossene Dateien.
In der Klammer von ExecuteExcel4Macro muss folgendes stehen, wenn die Datei z.B. abcef_20091113.xls heißt:
MAX('c:\Temp\test\[abcef_20091113.xls]abcef_20091113'!C4:C4)
C4 ist in der Tat Spalte 4, das Ausrufezeichen ist doch eigentlich auch logisch, das ist die ganz normale Syntax für einen Bezug auf eine andere Datei (nur in Z1S1-Schreibweise und auf englisch).
Die Alternative wäre jetzt natürlich, jede Datei aufzumachen. Sähe dann so aus:
Sub Datum_checken2()
Dim i As Long
Dim dateiNum As String
Dim myDatei As String
Dim fileDate As Date
Dim maxDate As Date
Dim testDatei As Workbook
Const myPath = "c:\Temp\test\"
' In Frage kommende Dateien zählen - wird als Abbruchkriterium benötigt
' Wenn es keine gibt, dann gleich raus
If Dir(myPath & "*_*.xls") = "" Then
Call MsgBox("Keine Dateien gefunden!", vbCritical)
Exit Sub
Else
dateiNum = 1
End If
' Dateien mit richtigem Format zählen
Do
myDatei = Dir
If myDatei Like "*_########.xls" Then
dateiNum = dateiNum + 1
End If
Loop Until myDatei = ""
Application.ScreenUpdating = False
' Jetzt die Datei suchen, in der ein Datum von letztem Monat vorkommt
Do
fileDate = DateSerial(Year(Date), Month(Date), Day(Date) - i)
' Habe das hier mit einem variablen Dateibeginn gemacht
' Bei fixem Beginn ersetzt Du myPath durch das "abcdef" (mit Anführungszeichen)
myDatei = Dir(myPath & "*_" & _
Format(DateSerial(Year(Date), Month(Date), Day(Date) - i), "yyyymmdd") & ".xls")
If myDatei  "" Then
' Datei schreibgeschützt öffnen (minimiert mögliche Fehler)
Set testDatei = Workbooks.Open(myPath & myDatei, , True)
' Überprüfen, ob Öffnen geklappt hat
If testDatei Is Nothing Then
Call MsgBox("Konnte Datei '" & myDatei & "' nicht öffnen!" & vbNewLine & _
"Vorgang wird abgebrochen.", vbCritical)
Application.ScreenUpdating = True
Exit Sub
End If
' höchstes Datum auslesen
maxDate = _
Application.Max(testDatei.Sheets(Left(myDatei, Len(myDatei) - 4)).Columns(4))
' Wenn Datum aus letztem Monat, dann Schreibzugriff + raus
If DateSerial(Year(Date), Month(Date) - 1, 1) = _
DateSerial(Year(maxDate), Month(maxDate), 1) Then
testDatei.ChangeFileAccess xlReadWrite
Exit Do
Else
i = i + 1
' Datei wieder zu
testDatei.Close False
Set testDatei = Nothing
End If
End If
Loop Until i = dateiNum
' Wenn i hier auf Dateinum steht, dann wurde nichts gefunden
If i = dateiNum Then
Call MsgBox("Keine Datum aus letztem Monat gefunden!", vbCritical)
End If
Application.ScreenUpdating = True
End Sub

Das fängt jetzt nicht ab, ob die Datei schon offen ist.
Gruss, Jogy
Anzeige
AW: Ordner durchsuchen und richtiges XLS öffnen
16.11.2009 16:12:17
Martin
Besten Dank für die grosse Hilfe. Ich versuchen, dem Problem irgendwie auf den Grund zu kommen, falls nicht, versuch ich's halt mit dem Öffnen der Dateien.
Viele Grüsse
Martin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige