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

Forumthread: Datum aus anderer Datei auslesen

Datum aus anderer Datei auslesen
09.05.2022 08:40:04
Jörg
Hallo Zusammen,
ich muss aus über 8.0000 Exceldateien in einem Verzeichnis bestimmte Daten auslesen und in eine Tabelle einfügen.
Dazu öffne ich die Datei, lese die Daten aus und speichere diese in meiner Tabelle.
Den Code dafür habe ich fertig.
Nun muss ich noch das letzte Speicherdatum in Spalte "iSpalte + 29" bringen und verzweifle daran.
Kann mir jemand helfen?
So sieht mein Code bisher aus:

Private Sub CommandButton3_Click()
Set oMe = ThisWorkbook.ActiveSheet 'ZielDatei/-Tabelle (= die aktuelle Tabelle der aktuellen Datei)
Const sDateiPfad As String = "C:\Users\seiche\Desktop\Test\" 'Pfad für zu durchsuchende Excel-Dateien; mit Backslash am Ende
sZelle1 = "C21" 'auszulesende Zelle
sZelle2 = "C22" 'weitere auszulesende Zelle
sZelle3 = "C23" 'weitere auszulesende Zelle
sZelle4 = "C24" 'weitere auszulesende Zelle
sZelle5 = "C25" 'weitere auszulesende Zelle
sZelle6 = "d21" 'auszulesende Zelle
sZelle7 = "d22" 'weitere auszulesende Zelle
sZelle8 = "d23" 'weitere auszulesende Zelle
sZelle9 = "d24" 'weitere auszulesende Zelle
sZelle10 = "d25" 'weitere auszulesende Zelle
sZelle11 = "e21" 'auszulesende Zelle
sZelle12 = "e22" 'weitere auszulesende Zelle
sZelle13 = "e23" 'weitere auszulesende Zelle
sZelle14 = "e24" 'weitere auszulesende Zelle
sZelle15 = "e25" 'weitere auszulesende Zelle
sZelle16 = "f21" 'auszulesende Zelle
sZelle17 = "f22" 'weitere auszulesende Zelle
sZelle18 = "f23" 'weitere auszulesende Zelle
sZelle19 = "f24" 'weitere auszulesende Zelle
sZelle20 = "f25" 'weitere auszulesende Zelle
sZelle21 = "g21" 'auszulesende Zelle
sZelle22 = "g22" 'weitere auszulesende Zelle
sZelle23 = "g23" 'weitere auszulesende Zelle
sZelle24 = "g24" 'weitere auszulesende Zelle
sZelle25 = "g25" 'weitere auszulesende Zelle
sZelle26 = "c4" 'weitere auszulesende Zelle
sZelle27 = "c5" 'weitere auszulesende Zelle
sZelle28 = "c6" 'weitere auszulesende Zelle
sZelle29 = "c7" 'weitere auszulesende Zelle
iZeile = 20 'ab Zeile 2 in Zieltabelle eintragen
iSpalte = 2 'ab Spalte A in Zieltabelle eintragen
Set oFS = CreateObject("Scripting.FileSystemObject")
For Each oDatei In oFS.GetFolder(sDateiPfad).Files
sWbName = oDatei.Name
If Left(LCase(oFS.GetExtensionName(sWbName)), 3) = "xls" Then
Workbooks.Open (sDateiPfad & sWbName)
oMe.Cells(iZeile, iSpalte).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle1).Value
oMe.Cells(iZeile, iSpalte + 1).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle2).Value
oMe.Cells(iZeile, iSpalte + 2).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle3).Value
oMe.Cells(iZeile, iSpalte + 3).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle4).Value
oMe.Cells(iZeile, iSpalte + 4).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle5).Value
oMe.Cells(iZeile, iSpalte + 5).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle6).Value
oMe.Cells(iZeile, iSpalte + 6).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle7).Value
oMe.Cells(iZeile, iSpalte + 7).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle8).Value
oMe.Cells(iZeile, iSpalte + 8).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle9).Value
oMe.Cells(iZeile, iSpalte + 9).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle10).Value
oMe.Cells(iZeile, iSpalte + 10).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle11).Value
oMe.Cells(iZeile, iSpalte + 11).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle12).Value
oMe.Cells(iZeile, iSpalte + 12).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle13).Value
oMe.Cells(iZeile, iSpalte + 13).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle14).Value
oMe.Cells(iZeile, iSpalte + 14).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle15).Value
oMe.Cells(iZeile, iSpalte + 15).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle16).Value
oMe.Cells(iZeile, iSpalte + 16).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle17).Value
oMe.Cells(iZeile, iSpalte + 17).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle18).Value
oMe.Cells(iZeile, iSpalte + 18).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle19).Value
oMe.Cells(iZeile, iSpalte + 19).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle20).Value
oMe.Cells(iZeile, iSpalte + 20).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle21).Value
oMe.Cells(iZeile, iSpalte + 21).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle22).Value
oMe.Cells(iZeile, iSpalte + 22).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle23).Value
oMe.Cells(iZeile, iSpalte + 23).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle24).Value
oMe.Cells(iZeile, iSpalte + 24).Value = Workbooks(sWbName).ActiveSheet.Range(sZelle25).Value
Workbooks(sWbName).ActiveSheet.Range(sZelle26).Copy
oMe.Cells(iZeile, iSpalte + 25).PasteSpecial Paste:=xlPasteValues
Workbooks(sWbName).ActiveSheet.Range(sZelle27).Copy
oMe.Cells(iZeile, iSpalte + 26).PasteSpecial Paste:=xlPasteValues
Workbooks(sWbName).ActiveSheet.Range(sZelle28).Copy
oMe.Cells(iZeile, iSpalte + 27).PasteSpecial Paste:=xlPasteValues
Workbooks(sWbName).ActiveSheet.Range(sZelle29).Copy
oMe.Cells(iZeile, iSpalte + 28).PasteSpecial Paste:=xlPasteValues
Workbooks(sWbName).Saved = True
Workbooks(sWbName).Close
iZeile = iZeile + 1
End If
Next
End Sub
Ich bedanke mich schon jetzt für eure Mühen.
Jörg
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Datum aus anderer Datei auslesen
09.05.2022 08:49:59
Fennek
Hallo,
das Datum des "Last Save":

Debug.Print ActiveWorkbook.BuiltinDocumentProperties("Last save time")
mfg
AW: Datum aus anderer Datei auslesen
09.05.2022 10:53:29
Herbert_Grom
Hallo Jörg,
probiers mal damit:

Option Explicit
Sub Main()
Dim x As Date
MsgBox GetFileDate("E:\Ordner\Datei.xlsx")
End Sub
Public Function GetFileDate(strFile) As Date
Dim objFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(strFile)
GetFileDate = objFile.DateLastModified
End Function
Servus
Anzeige
AW: Datum aus anderer Datei auslesen
09.05.2022 11:05:00
Jörg
Hallo Herbert,
ich bedanke mich schon mal für die Antworten.
Ich bin, wie gesagt, ziemlich unbeleckt, bei VBA.
Ich möchte das letzte Speicherdatum der Datei, die ich über die If-Schschleife gerade geöffnet habe, ermitteln und in Zelle (iZeile, iSpalte + 29) der Listendatei abspeichern (vor der Zeile "Workbooks(sWbName).Close"). Danach soll die Quelldatei wieder geschlossen werden und die nächste Datei in dem Verzeichnis geöffnet werden, bis kein mehr da sind.
Ich möchte das Datum also nicht von einer bestimmten Datei, sondern von allen Dateien, die in dem Ordner sind auslesen.
Danke, Jörg
Anzeige
AW: Datum aus anderer Datei auslesen
09.05.2022 11:22:14
Herbert_Grom
Und was willst du dann mit dem Datum machen, resp. wo soll es hin?
AW: Datum aus anderer Datei auslesen
09.05.2022 11:56:13
Jörg
Hallo Herbert,
mit dem Programm ziehe ich aus vielen Einzeldateien Daten in eine Datei zusammen. Alle Daten einer Einzeldatei werden in eine Zeile geschrieben.
Der Startpunkt jeder Zeile ist Spalte B. Von dort aus werden alle Werte in meine Liste eingetragen. Bis jetzt bin ich bei Spalte AD (was iSpalte + 28 entspricht).
Ich möchte nun in Spalte AC (oder iSpalte + 29) noch das letzte Speicherdatum ergänzen.
Ich benötige diese Angabe, um meine Auswertung damit zu steuern (Wertentwicklung).
Es wäre also toll, wenn folgendes funktionieren würde:
1. Ermittle Datum der letzte Speicherung der im Hintergrund geöffneten Datei
2. Füge Datum der letzten Speicherung der im Hintergrund geöffneten Datei Spalte AC in der gleichen Zeile ein, in der die anderen Daten aus der Datei schon eingefügt sind.
Danke nochmal für die Unterstützung.
Jörg
Anzeige
AW: Datum aus anderer Datei auslesen
09.05.2022 11:57:07
Rudi
Hallo,

oMe.Cells(iZeile, iSpalte + 29).Value = Workbooks(sWbName).BuiltinDocumentProperties("last save time")
Gruß
Rudi
AW: Datum aus anderer Datei auslesen
09.05.2022 12:36:48
Jörg
Hallo Rudi,
perfekt!!!
Danke für die Unterstützung
Gruß Jörg
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Datum aus anderer Datei auslesen in Excel


Schritt-für-Schritt-Anleitung

Um das Datum aus einer anderen Excel-Datei auszulesen und in deine Tabelle einzufügen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (deineDatei.xlsx)“ und wähle „Einfügen“ -> „Modul“.

  3. Füge den folgenden Code ein:

    Private Sub CommandButton3_Click()
        Set oMe = ThisWorkbook.ActiveSheet
        Const sDateiPfad As String = "C:\Users\seiche\Desktop\Test\"
        iZeile = 20
        iSpalte = 2
    
        Set oFS = CreateObject("Scripting.FileSystemObject")
        For Each oDatei In oFS.GetFolder(sDateiPfad).Files
            sWbName = oDatei.Name
            If Left(LCase(oFS.GetExtensionName(sWbName)), 3) = "xls" Then
                Workbooks.Open (sDateiPfad & sWbName)
                oMe.Cells(iZeile, iSpalte + 29).Value = Workbooks(sWbName).BuiltinDocumentProperties("last save time")
                Workbooks(sWbName).Close
                iZeile = iZeile + 1
            End If
        Next
    End Sub
  4. Passen den Dateipfad an: Ändere den sDateiPfad-Wert entsprechend deinem Verzeichnis.

  5. Führe das Makro aus: Klicke auf den Button, um die Daten auszulesen und in die Tabelle einzufügen.


Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden"

    • Überprüfe den sDateiPfad, ob er korrekt ist und die Dateien vorhanden sind.
  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass das VBA-Modul korrekt erstellt wurde und die Excel-Dateien die erwarteten Daten enthalten.
  • Fehler: "Typ nicht definiert"

    • Stelle sicher, dass alle verwendeten Variablen deklariert sind, indem du Option Explicit am Anfang deines Moduls hinzufügst.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die folgende Methode nutzen:

  1. Verwende externe Verknüpfungen: Du kannst in Excel eine Formel erstellen, die auf eine andere Datei verweist und so das Datum aus einer Zelle auslesen.

  2. Power Query: Nutze Power Query, um Daten aus mehreren Excel-Dateien zusammenzuführen. Dabei kannst du auch das letzte Speicherdatum ermitteln.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um das Datum aus einer Zelle auszulesen:

Sub AuslesenDatum()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1")
    ws.Range("A1").Value = Workbooks("ZielDatei.xlsx").Sheets("Tabelle2").Range("B1").Value
End Sub

In diesem Beispiel wird das Datum aus der Zelle B1 der Datei „ZielDatei.xlsx“ in die Zelle A1 der aktuellen Tabelle kopiert.


Tipps für Profis

  • Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler beim Öffnen von Dateien zu ignorieren.

  • Leistung optimieren: Schalte Bildschirmaktualisierungen während der Ausführung des Makros aus, um die Geschwindigkeit zu erhöhen:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Datenüberprüfung: Stelle sicher, dass die Zellen, aus denen du das Datum auslesen möchtest, das korrekte Datumsformat haben.


FAQ: Häufige Fragen

1. Wie kann ich das Datum aus einer bestimmten Zelle auslesen?
Du kannst das Datum aus einer bestimmten Zelle mit dem Befehl Range("Zelle").Value auslesen, z.B. Workbooks("Datei.xlsx").Sheets("Tabelle1").Range("A1").Value.

2. Kann ich das Datum auch in ein anderes Format umwandeln?
Ja, du kannst das Datum formatieren, indem du Format(Date, "dd.mm.yyyy") verwendest, um es in ein bestimmtes Datumsformat umzuwandeln.

3. Welche Excel-Version benötige ich?
Der bereitgestellte VBA-Code funktioniert in Excel 2010 und späteren Versionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige