Dateien auf Eintrag prüfen

Hallo zusammen,

in einem Verzeichnis liegen ca. 50 leere Excelformulare,
die von Mitarbeitern nach und nach bearbeitet werden sollen.
Um zu prüfen, ob eine Bearbeitung erfolgt ist, müßte ich
jede Datei einzeln öffnen.

Gibt es eine Möglichkeit, z.B. in einer weiteren Exceldatei
alle im Verzeichnis vorhandenen Dateien auf einen Eintrag
in z.B. Zelle C4 zu überprüfen und die Dateien anzeigen
zu lassen, in denen ein Eintrag vorhanden ist?

Oder ist das jetzt sehr weit hergeholt?

Danke für jeden Lösungsansatz.

Gruß

Rolf

Hallo Rolf,

ja, das müsste gehen!
Mach einfach eine Excel-Kontroll-Datei mit externen Bezügen auf all diese 50 Excel-Formulare, die du „überwachen“ möchtest, dann hast du eine Info, wenn in Zelle C4 ein Eintrag gemacht wurde.

Gruß Finus

Hallo Rolf,

hier zwei Lösungen per Makro. Die 2. Lösung generiert die von Finus vorgeschlagenen Formeln.

Sub PruefenDokumente1()
 ' Öffnet die Dokumente, und trägt die Werte aus "C4" in Tabelle ein
 Dim Dateiname, Verzeichnis As String, wks As Worksheet, wb As Workbook
 Verzeichnis = "C:\Lokale Daten\Test\EXCEL"
 Dateiname = Dir(Verzeichnis & "\*.XLS")
 Set wks = ThisWorkbook.Sheets(1)
 With wks
 .Cells.ClearContents
 Zeile = 1
 .Cells(Zeile, 1) = "Dateiname"
 .Cells(Zeile, 2) = "Wert C4"
 Application.ScreenUpdating = False
 Do Until Dateiname = ""
 Workbooks.Open Filename:=Verzeichnis & "\" & Dateiname
 Set wb = ActiveWorkbook
 Zeile = Zeile + 1
 .Cells(Zeile, 1) = Dateiname
 .Cells(Zeile, 2) = wb.Sheets(1).Range("C4").Value
 wb.Close False
 Dateiname = Dir
 Loop
 Application.ScreenUpdating = True
 End With
End Sub
 
 
2. Vorschlag
 
 
Sub PruefenDokumente2()
 ' Generiert in einer Tabelle Formeln, die aus den Dateien die Werte in C4 auslesen
 Dim Dateiname, Verzeichnis As String, wks As Worksheet, wb As Workbook
 Verzeichnis = "C:\Lokale Daten\Test\EXCEL"
 Dateiname = Dir(Verzeichnis & "\*.XLS")
 Set wks = ThisWorkbook.Sheets(1)
 With wks
 .Cells.ClearContents
 Zeile = 1
 .Cells(Zeile, 1) = "Dateiname"
 .Cells(Zeile, 2) = "Wert C4"
 Application.ScreenUpdating = False
 Do Until Dateiname = ""
 Zeile = Zeile + 1
 .Cells(Zeile, 1) = Dateiname
 .Cells(Zeile, 2).FormulaR1C1 = \_
 "='" & Verzeichnis & "\[" & Dateiname & "]Tabelle1'!R4C3"
 Dateiname = Dir
 Loop
 Application.ScreenUpdating = True
 End With
End Sub

Gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

vielen Dank Euch beiden.

@Franz,

Deine Lösung 1 ist große Klasse, funktioniert prima.
Läßt sich der in A1 angezeigte Dateiname noch automatisch
mit der Datei verlinken? Das wäre die eierlegende Wollmilchsau :wink:
Wenn nicht, ist nicht tragisch. Du hast mir sehr geholfen.

Gruß

Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

vielen Dank Euch beiden.

@Franz,

Deine Lösung 1 ist große Klasse, funktioniert prima.
Läßt sich der in A1 angezeigte Dateiname noch automatisch
mit der Datei verlinken? Das wäre die eierlegende Wollmilchsau
:wink:
Wenn nicht, ist nicht tragisch. Du hast mir sehr geholfen.

Gruß

Rolf

Hallo Rolf,

hier die Erweiterung zur eierlegenden Wollmilchsau. :smile:

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
 If Target.Column = 1 And Target.Row \> 1 And Not IsEmpty(Target) Then
 Verzeichnis = "C:\Lokale Daten\Test\EXCEL"
 Workbooks.Open Filename:=Verzeichnis & "\" & Target.Value
 End If
End Sub

Dieses Makro muß du im VBA-Editor unter „Tabelle1“ einfügen und das Verzeichnis anpassen. Bei Klick auf einen Dateinamen in Spalte A der Tabelle wird dann die Datei geöffnet.

Gruß
Franz

Moin Franz,

ich bin begeistert *freu*
Ich frage mich immer wieder, wie man sowas lernen kann.
Habe das Makro für andere Tabellenbereiche erweitert - klasse.

Vielen Dank nochmal Franz.

Gruß und frohes Schaffen

Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo zusammen,

in einem Verzeichnis liegen ca. 50 leere Excelformulare,
die von Mitarbeitern nach und nach bearbeitet werden sollen.
Um zu prüfen, ob eine Bearbeitung erfolgt ist, müßte ich
jede Datei einzeln öffnen.

Gibt es eine Möglichkeit, z.B. in einer weiteren Exceldatei
alle im Verzeichnis vorhandenen Dateien auf einen Eintrag
in z.B. Zelle C4 zu überprüfen und die Dateien anzeigen
zu lassen, in denen ein Eintrag vorhanden ist?

Oder ist das jetzt sehr weit hergeholt?

Danke für jeden Lösungsansatz.

Gruß

Rolf

Hallo Rolf,

hier zwei Lösungen per Makro. Die 2. Lösung generiert die von
Finus vorgeschlagenen Formeln.

Sub PruefenDokumente1()
’ Öffnet die Dokumente, und trägt die Werte aus „C4“ in
Tabelle ein
Dim Dateiname, Verzeichnis As String, wks As Worksheet, wb
As Workbook
Verzeichnis = „C:\Lokale Daten\Test\EXCEL“
Dateiname = Dir(Verzeichnis & „*.XLS“)
Set wks = ThisWorkbook.Sheets(1)
With wks
.Cells.ClearContents
Zeile = 1
.Cells(Zeile, 1) = „Dateiname“
.Cells(Zeile, 2) = „Wert C4“
Application.ScreenUpdating = False
Do Until Dateiname = „“
Workbooks.Open Filename:=Verzeichnis & „“ &
Dateiname
Set wb = ActiveWorkbook
Zeile = Zeile + 1
.Cells(Zeile, 1) = Dateiname
.Cells(Zeile, 2) = wb.Sheets(1).Range(„C4“).Value
wb.Close False
Dateiname = Dir
Loop
Application.ScreenUpdating = True
End With
End Sub

Gruß
Franz

Hallo zuammen,

das vorstehende Makro liest mir, Franz sei Dank, Daten aus
Dateien aus, die in einem eigenen Verzeichnis stehen.
Damit man sieht, ob weitere Dateien hinzugekommen sind,
wäre es nett, wenn er mir die Anzahl der eingelesenen Dateien
irgendwo hinschreiben würde, nach B1 z.B.

Kann mir nochmal jemand helfen, bitte?

Gruß und danke

Rolf

das vorstehende Makro liest mir, Franz sei Dank, Daten aus
Dateien aus, die in einem eigenen Verzeichnis stehen.
Damit man sieht, ob weitere Dateien hinzugekommen sind,
wäre es nett, wenn er mir die Anzahl der eingelesenen Dateien
irgendwo hinschreiben würde, nach B1 z.B.

Hi Rolf,

Option Explicit
Sub PruefenDokumente1()
' Öffnet die Dokumente, und trägt die Werte aus "C4" in Tabelle ein
Dim Dateiname, Verzeichnis As String, wks As Worksheet, wb As Workbook
Application.ScreenUpdating = False
On Error GoTo Fehler
Verzeichnis = "C:\Lokale Daten\Test\EXCEL"
Dateiname = Dir(Verzeichnis & "\*.XLS")
Set wks = ThisWorkbook.Sheets(1)
With wks
 .Cells.ClearContents
 Zeile = 1
 .Cells(Zeile, 1) = "Dateiname"
 .Cells(Zeile, 2) = "Wert C4"
 Do Until Dateiname = ""
 Workbooks.Open Filename:=Verzeichnis & "\" & Dateiname
 Set wb = ActiveWorkbook
 Zeile = Zeile + 1
 .Cells(Zeile, 1) = Dateiname
 .Cells(Zeile, 2) = wb.Sheets(1).Range("C4").Value
 wb.Close False
 Dateiname = Dir
 Loop
 .Range("B1") = Zeile
End With
Fehler:
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Hallo Reinhard,

danke für Deine Mühe. Leider kann ich es am Dienstag erst testen.
Melde mich auf jeden Fall, ob es geklappt hat.

Gruß und allen schöne Feiertage.

Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin Reinhard,

… perfekt :smile:

Vielen Dank und ne schöne Woche

Gruß

Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]