Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Jüngste Datei aus dem Verzeichnes öffnen

Forumthread: Jüngste Datei aus dem Verzeichnes öffnen

Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:00:42
Kubilay
Hallo Zusammen,
ich brauche bitte dringend eure Hilfe.
Und zwar möchte ich in einer Excel Tabelle durch eine Schaltfläche die aktuellste Datei öffnen und wie unten beschrieben bearbeiten.
Die Dateien haben immer die selbe Endung (.col)
Ich habe auch bereits folgenden Makro erstellt, aber so zieht er mir nur explizit die .col Datei die ich im Verzeichnis ausgewählt habe.
Aber wir erstellen jeden Tag eine neue und ich möchte den kompletten Vorgang im Makro automatisch mit der neusten Datei durchführen.
Die .col Dateien sind immer so aufgebaut DFT12220443.COL (DFT= ORT / 12= Monat / 22=Tag / 0443= Uhrzeit)
Nach dem öffnen der .col Datei muss ich es immer mit dem Textkonventierungs-Assistent trennen deshalb auch im Makro der StartRow Bereich, anschließend kopiere ich die Datei und füge es in eine separate Tabelle ein. Im Makro funktioniert alles super bis auf das auswählen mit der neusten Datei.
Mein Makro:
Sub Makro1()
' Makro1 Makro
Workbooks.OpenText Filename:= _
"C:\Users\Z378\Desktop\test\col\DFT12220443.COL", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(10 _
, 2), Array(23, 2), Array(35, 2), Array(39, 2), Array(47, 2), Array(61, 2)), _
TrailingMinusNumbers:=True
Cells.Select
Selection.Copy
Windows("TNT HLG.xls").Activate
Cells.Select
ActiveSheet.Paste
End Sub

Ich danke euch im vor raus für eure Hilfe.
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitstempel
04.02.2021 11:27:47
Fennek
Hallo,
die jüngste Datei eines Ordners findet der CMD

dir c:\temp\*.col /b/o-d
Mit VBA würde der Aufruf so aussehen:

sn = Split(CreateObject("wscript.shell").exec("cmd /c dir ""c:\temp\*.col"" /b/o-d").stdout. _
readall, vbCrLf)(0)
Es kann aber sein, dass die AV-Software das blockiert, dann müßte der Aufruf etwas anderst gestaltet werden.
mfg
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:35:47
volti
Noch 'ne Alternative:
Code:

[Cc][+][-]

Sub Makro1() Dim sPath As String, oFile As Object Dim sLastFilename As String, oLastFileDate As Variant sPath = "C:\Users\Z378\Desktop\test\col\" With CreateObject("scripting.filesystemobject").GetFolder(sPath) For Each oFile In .Files ' Ordner durchsuchen If Err = 0 Then With oFile If oFile.Name Like "*.xlsb" Then If FileDateTime(oFile) > oLastFileDate Then sLastFilename = oFile.Name oLastFileDate = FileDateTime(oFile) End If End If End With End If Err = 0 Next End With Workbooks.OpenText Filename:= _ sPath & sLastFilename, Origin:=xlMSDOS, _ StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(10 _ , 2), Array(23, 2), Array(35, 2), Array(39, 2), Array(47, 2), Array(61, 2)), _ TrailingMinusNumbers:=True Cells.Select Selection.Copy Windows("TNT HLG.xls").Activate Cells.Select ActiveSheet.Paste End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:37:03
volti
Noch 'ne Alternative:
Code:

[Cc][+][-]

Sub Makro1() Dim sPath As String, oFile As Object Dim sLastFilename As String, oLastFileDate As Variant sPath = "C:\Users\Z378\Desktop\test\col\" With CreateObject("scripting.filesystemobject").GetFolder(sPath) For Each oFile In .Files ' Ordner durchsuchen If Err = 0 Then With oFile If oFile.Name Like "*.col" Then If FileDateTime(oFile) > oLastFileDate Then sLastFilename = oFile.Name oLastFileDate = FileDateTime(oFile) End If End If End With End If Err = 0 Next End With Workbooks.OpenText Filename:= _ sPath & sLastFilename, Origin:=xlMSDOS, _ StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(10 _ , 2), Array(23, 2), Array(35, 2), Array(39, 2), Array(47, 2), Array(61, 2)), _ TrailingMinusNumbers:=True Cells.Select Selection.Copy Windows("TNT HLG.xls").Activate Cells.Select ActiveSheet.Paste End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:46:09
Kubilay
Hallo volti,
vielen Dank ich werde das heute Abend direkt probieren auf der Arbeit.
Kurze Frage noch muss ich in diesen Zeilen was ergänzen?
For Each oFile In .Files ' Ordner durchsuchen
und
Workbooks.OpenText Filename:=
Danke
Grüße
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:50:21
volti
Nein,
nichts ergänzen, das sollte alles so wie vorgefunden funktionieren.
VG KH
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 12:51:47
Kubilay
Vielen Dank,
ich habe da noch eine Frage die etwas komplizierter sein könnte.
Und zwar: Ich habe eine weitere Tabelle (bsp. Datei A) die ich in eine weitere Excel Datei einfügen muss (Bsp. Datei B). Die Excel Datei ist von Montag-Freitag aufgeteilt (Jeweils ein Sheet) ich bekomme Morgens die Zahlen für den Vortrag das heißt z.B Dienstag morgens die Zahlen vom Montag ich möchte es so haben das es zb. Dienstag morgens die Daten von Tabelle (Datei A) in die (Datei B) sheet (Montag) einfügt, und mittwochs das selbe spiel mit den Daten von der Tabelle (Datei A) in die (Datei B) sheet Dienstag einfügt, so dass ich Samstag morgens die letzte Datei in den Freitag von der (Datei B) einfüge.
Ist sowas möglich? Das wäre sehr hilfreich.
Vielen vielen vielen Dank.
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 13:02:22
volti
Hallo Kubilay,
grundsätzlich ist ja (fast) alles möglich, meistens nur eine Frage des Aufwandes.
Hierfür solltest Du mal eine Beispielmappe (Datei A, Datei B)hier hochladen, woraus Dein Anliegen besser hervorgeht als die Prosabeschreibung und mit der man dann auch mal testen könnte.
viele Grüße
Karl-Heinz
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 21:05:32
Kubilay
Guten Abend Karl-Heinz,
ich habe soeben dein Makro ausprobiert und es funktioniert hervorragend.
Vielen Dank noch einmal.
Anbei zwei Screenshots bezüglich meiner zweiten Frage.
Die Tabelle vom (Bild-Tabelle1) möchte ich gerne kopieren und in die Tabelle2 Dienstag morgens bei Montag einfügen.
Mein bestehendes Makro ist wie folgt:
Sub outfeed()
' outfeed Makro
Sheets("Chute+Outfeed").Select
Columns("A:BB").Select
Selection.Copy
ChDir "C:\Users\78DQJ\Desktop\test"
Workbooks.Open Filename:="C:\Users\78DQJ\Desktop\test\outfeed testtt.xlsx"
ActiveSheet.Paste
Windows("HLG.xls").Activate
End Sub

Userbild
Userbild
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 23:38:19
volti
Hallo Kubilay,
eigentlich hatte ih eine Mappe erwartet. Aber nun gut, teste mal dieses ersten Versuch....
Code:

[Cc][+][-]

Option Explicit Option Compare Text Sub Kopieren() Dim Wkb As Workbook, WSh As Worksheet Dim sPfad As String, sDateiname As String Dim sTag As String, i As Integer, iZeile As Long sPfad = "C:&bsol;Users&bsol;78DQJ&bsol;Desktop&bsol;test&bsol;" ' Pfad <<< ggf. anpassen>>> sDateiname = "outfeed testtt.xlsx" ' Dateiname <<< ggf. anpassen>>> On Error GoTo Fehler ' Zielblatt anhand des Datums ermitteln i = Weekday(Date - 1) If i < 3 Then i = 7 sTag = Choose(i - 2, "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag") Set WSh = ThisWorkbook.Sheets(sTag) ' Feststellen, ob Quelldatei schon offen ist For Each Wkb In Workbooks If Wkb.Name Like sDateiname Then GoTo Weiter Next Wkb Set Wkb = Workbooks.Open(Filename:=sPfad & sDateiname) Weiter: ' Jetzt die Daten übertragen With Wkb.Sheets("Chute+Outfeed") iZeile = .Cells(Rows.Count, "C").End(xlUp).Row WSh.Range("A1:BB" & iZeile).Value = .Range("A1:BB" & iZeile).Value End With ' Datei schließen Wkb.Close Savechanges:=False MsgBox "Die Daten wurden übertragen!", vbInformation, "Kopieren" Exit Sub Fehler: MsgBox "Es ist der Fehler " & Error & " aufgetreten!", vbCritical, "Kopieren" End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
05.02.2021 20:19:14
Kubi
Guten Abend Karl-Heinz,
ich habe es eben versucht da kommt eine Fehlermeldung.
"Es ist der Fehler Index außerhalb des gültigen Bereichs aufgetreten"
Ich würde mich dann am Montag wieder melden und es dir ausführlicher berichten. Falls du Lust und Zeit hast können wir der Sache dann gerne erneut nachgehen.
Bis dahin schönes Wochenende.
Viele Grüße
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
06.02.2021 10:15:56
volti
Hallo Kubi,
da könntest Du das on Error mal ausremmen und genau mitteilen, an welcher Stelle der Fehler vorkommt.
Oder am besten gleich die Mappe (ggf. anonymisiert) hier hochladen.
Wünsche auch ein schönes Wochenende aus Hessen (hier gießt ohne Ende)
KH
AW: Jüngste Datei aus dem Verzeichnes öffnen
08.02.2021 13:44:58
Kubilay
Hallo Karl-Heinz,
ich würde dir gerne die Mappe per Mail schicken wenn es für dich OK ist.
Falls du deine Mail adresse nicht veröffentlichen möchtest kann ich dir gerne meine da lassen und du meldest dich.
Das wäre echt super.
Grüße
Kubi
Anzeige
AW: Jüngste Datei aus dem Verzeichnes öffnen
08.02.2021 14:38:47
volti
Hallo Kubi,
da lass mal Deine da.
Gruß KH
AW: Jüngste Datei aus dem Verzeichnes öffnen
08.02.2021 14:55:20
Kubilay
Hallo,
kubilaygedik1907@gmail.com
Grüße
AW: Jüngste Datei aus dem Verzeichnes öffnen
04.02.2021 11:37:39
Kubilay
Hallo Fennek,
leider bin ich nicht so erfahren, dass ich jetzt wüsste wie ich es umbauen kann.
Könntest du mir bitte es ausführlicher hinschreiben evtl.so das ich es direkt einfügen könnte.
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Jüngste Datei aus dem Verzeichnis automatisch öffnen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und gehe zu den Entwicklertools. Wenn die Entwicklertools nicht angezeigt werden, aktiviere sie über die Optionen.
  2. Erstelle ein neues Modul:
    • Klicke auf "Visual Basic" in den Entwicklertools.
    • Klicke im VBA-Editor mit der rechten Maustaste auf "VBAProject (deinProjektName)" und wähle "Modul einfügen".
  3. Füge den folgenden VBA-Code ein:
Sub JüngsteDateiÖffnen()
    Dim sPath As String
    Dim oFile As Object
    Dim sLastFilename As String
    Dim oLastFileDate As Variant

    sPath = "C:\Users\Z378\Desktop\test\col\" ' Pfad anpassen

    With CreateObject("scripting.filesystemobject").GetFolder(sPath)
        For Each oFile In .Files
            If Err = 0 Then
                With oFile
                    If .Name Like "*.col" Then
                        If FileDateTime(oFile) > oLastFileDate Then
                            sLastFilename = .Name
                            oLastFileDate = FileDateTime(oFile)
                        End If
                    End If
                End With
            End If
            Err = 0
        Next
    End With

    Workbooks.OpenText Filename:=sPath & sLastFilename, Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(10, 2), Array(23, 2)), _
        TrailingMinusNumbers:=True
End Sub
  1. Starte das Makro. Dies öffnet die jüngste .col-Datei im angegebenen Verzeichnis.

Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des gültigen Bereichs"

    • Lösung: Überprüfe, ob der Dateiname korrekt ist und ob die Datei tatsächlich existiert.
  • Fehler: "Datei kann nicht gefunden werden"

    • Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist und die Datei die Endung .col hat.

Alternative Methoden

Eine andere Möglichkeit, die neuesten Dateien zu finden, ist die Verwendung der Windows-Command-Line. Du kannst den dir-Befehl nutzen:

sn = Split(CreateObject("wscript.shell").exec("cmd /c dir ""C:\Users\Z378\Desktop\test\col\*.col"" /b /o-d").stdout.readall, vbCrLf)(0)

Das öffnet ebenfalls die jüngste Datei aus dem Verzeichnis.


Praktische Beispiele

Ein Beispiel für ein Makro, das die jüngste .col-Datei öffnet und die Daten in eine andere Excel-Datei überträgt:

Sub DatenÜbertragen()
    ' ... Code zum Öffnen der jüngsten Datei wie im vorherigen Beispiel ...

    ' Daten in eine andere Datei übertragen
    Cells.Select
    Selection.Copy
    Windows("ZielDatei.xls").Activate
    ActiveSheet.Paste
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung in deinem Makro, um unerwartete Probleme zu lösen.
  • Teste deine Makros in einer sicheren Umgebung, bevor du sie auf wichtige Daten anwendest.
  • Verwende Application.ScreenUpdating = False vor dem Start des Makros, um die Leistung zu verbessern, und setze es am Ende wieder auf True.

FAQ: Häufige Fragen

1. Kann ich die .col-Datei direkt ohne VBA öffnen? Ja, du kannst die Datei manuell öffnen, indem du den Windows Explorer benutzt, aber mit VBA geht es schneller und automatisierter.

2. Muss ich etwas an meinem Code ändern, um ihn in einer anderen Excel-Version zu verwenden? In der Regel nicht, wenn die Funktionen und Befehle in der verwendeten Excel-Version unterstützt werden. Achte darauf, dass du die richtige Version von Excel verwendest, die VBA unterstützt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige