Betrifft: Alle Dateien in einem Unterordner öffnen
von: David
Geschrieben am: 12.09.2019 12:57:59
Hallo zusammen,
folgender Sachverhalt:
In meinen eigenen Dokumenten habe ich einen Unterordner "Test".
In diesen Ordner kommen Dateien rein, welche schreibgeschützt sind.
Nun wurde bisher immer, wenn alle Dateien in dem Ordner abgelegt sind, jede einzelne Datei geöffnet und manuell ein Makro abgerufen, welches den Schreibschutz wieder entfernt, damit man die Dateien bearbeiten kann.
Nun zu meiner Frage:
Gibt es einen Code, welcher sagt, öffne Datei 1 unter Pfad "C:\Users\m\Documents\Test", rufe Makro Blattschutz_entfernen () auf, speichere die Datei ab und öffne Datei 2. So sollte im Idealfall alles durchlaufen, bis jede Datei wieder entsperrt ist.
Kann mir damit jemand weiterhelfen?
Vielen Dank!
David
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1712673.html
Geschrieben am: 12.09.2019 13:06:30
Hallo David,
versuch mal:
Sub test2() Application.ScreenUpdating = False Dim Pfad As String, Datei As String Pfad = "C:\Users\m\Documents\Test\" Datei = Dir(Pfad & "*.xlsx") 'wenn xlsx Dateien Do While Datei <> "" Workbooks.Open Filename:=Pfad & Datei With Workbooks(Datei) Application.Run Workbooks(Datei) & "'!Blattschutz_entfernen" End With Datei = Dir() Loop End SubGruss Torsten
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1712674.html
Geschrieben am: 12.09.2019 13:07:16
hallo,
sowas wurde schon 100x gefragt.
Sub aaa() dim strfile as string, wkb as workbook strfile=dir("C:\Users\m\Documents\Test\*.xlsx") do while strfile <>"" set wkb=workbooks.open(C:\Users\m\Documents\Test\" &strfile call Blattschutz_entfernen wkb.close true strfile=dir loop End SubGruß
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1712675.html
Geschrieben am: 12.09.2019 13:09:29
Hallo,
Application.Run Workbooks(Datei) & "'!Blattschutz_entfernen"
Die Prozedur steht mit Sicherheit nicht in Workbooks(Datei), da es eine .xlsx ist.
Gruß
Rudi
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1712677.html
Geschrieben am: 12.09.2019 13:10:25
Oh Hab vergessen zu schliessen. Sorry.
Sub test2() Application.ScreenUpdating = False Dim Pfad As String, Datei As String Pfad = "C:\Users\torsten.wetzel\Downloads\" Datei = Dir(Pfad & "*.xlsx") 'wenn xlsx Dateien Do While Datei <> "" Workbooks.Open Filename:=Pfad & Datei With Workbooks(Datei) Application.Run Workbooks(Datei) & "'!Blattschutz_entfernen" .Close savechanges:=True End With Datei = Dir() Loop End Sub
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1713635.html
Geschrieben am: 18.09.2019 12:25:11
Hallo Torsten,
sorry für die späte Antwort, aber funktioniert wunderbar!
Nun wollte ich mal noch fragen, gibt es eine Möglichkeit, dass man quasi einen "Oberordner" angibt in welchen dann mind. ein Unterordner sich befindet, ggf. hat dieser Unterordner auch nochmals Unterordner. Nun soll das Makro genau das selbe machen, also sprich
C:\Users\m\Documents\Test (Oberordner) öffnen, dann den ersten Unterordner C:\Users\m\Documents\Test\Test 2 öffnen, dort alle Datein öffnen, Makro laufen lassen und anschließend abspeichern.
Daraufhin soll Unterordner 3, C:\Users\m\Documents\Test\Test 3 geöffnet werden.
Hier gibt es bspw. einen Unterordner 4, C:\Users\m\Documents\Test\Test 3\Test 4, in welchem sich dann die Dateien befinden. Dort soll wieder das Procedere mit Makro abrufen, abspeichern etc. ablaufen.
Sprich nochmals zusammengefasst:
Es gibt einen Oberordner, C:\Users\m\Documents\Test,in welchem sich 3 Unterordner befinden.
Diese 3 Unterordner bestehen jeweils auch oftmals aus weiteren Unterordnern, aber in manchen sind auch die Dateien direkt in dem Unterordner abgelegt.
Das Makro soll also nun alle 3 Unterordner mit sämtlichen weiteren Ordnern darin durchackern, die Dateien öffnen, das Makro "Blattschutz" abrufen, abspeichern und schließen.
Ich hoffe es war einigermaßen verständlich formuliert :)
Vielen Dank!
Gruß,
David
Betrifft: AW: Alle Dateien in einem Unterordner öffnen
von: 1713964.html
Geschrieben am: 19.09.2019 19:23:24
Hallo Torsten,
habe nun mal den Code umgeschrieben, da die finalen Dateien mit Makros abgespeichert sind, also sprich .xlsm.
Datei = Dir(Pfad & "*.xlsx") 'wenn xlsx Dateien
Datei = Dir(Pfad & "*.xlsm") 'wenn xlsx Dateien
Funktioniert allerdings irgendwie nicht.
Wenn ich den Code in einzel Schritten durchgehe, springt der Code von
Do While Datei <> ""
zu End Sub direkt.
Und zu meiner Frage mit den verschiedenen Pfaden der Unterordner:
Eigentlich könnte ich doch alle Pfade in einer Excelübersicht auflisten (A1,B1,C1,...) und der Code ruft sich bei:
Pfad = "C:\Users\torsten.wetzel\Downloads\"
quasi hinten immer den nächsten Wert aus der Liste. Sprich er beginnt in A1, fügt den Pfad ein, lässt alles durchrattern, geht dann auf B1 usw.
Hoffe auch das ist verständlich formuliert.
Gruß,
David