Microsoft Excel

Herbers Excel/VBA-Archiv

Alle Dateien in einem Unterordner öffnen


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 Sub
    
Gruss 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 Sub
Gruß
Rudi
  

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

Beiträge aus dem Excel-Forum zum Thema "Alle Dateien in einem Unterordner öffnen"