Stappelverarbeitung
15.07.2022 21:01:46
Alex
Ich kämpfe schon seit Wochen (kein Profi, Selbstbeibringer halt) mit einem Problem.
Ich habe ein Sammelordner. In diesem liegen einzelne Projektordner (beliebige Anzahl, beliebige Namen). In den Projektordnern liegen dazugehörige .xlsm-Dateien (beliebige Name, id-Endung von 1 bis 5).
Sammelordner
Projekt_1
Basis1_id1.xlsm
Basis1_id2.xlsm
Projekt_2
Basis2_id1.xlsm
Basis2_id2.xlsm
Projekt_3
Basis3_id1.xlsm
Basis3_id2.xlsm
Projekt_...
Basis_...
Ich möchte In der Datei Basis1_id1.xlsm ein Button erstellen, welche mir die Zahl aus Tabelle1 und Zelle A1 ausliest und 1 dazu addiert (so, dass z.B aus Ursprungswert 1 2 wird) und A1 überschreibt. Danach sollen alle xlsm-Dateien mit Endung id1, welche im Sammelordner und Unterordern liegen nacheinander geöffnet werden, gleiche Operation durchgeführt werden (Wert in A1-Zelle), gespeichert und geschlossen werden. Ausgangsmappe Basis1_id1 bleibt offen.
Soweit mit Onkel Internet habe ich es hinbekommen, so lange der Ordner Projekt_1 außerhalb des Sammelordners liegt.
Das Ziel ist, damit Projekt_1 sich, wie auch alle anderen Projekte im Sammelordner befindet.
Wenn es der Fall ist, erhalte ich immer eine Meldung:
Auf Ja zu drucken ist keine Option. Wenn ich auf Nein gehe bekomme ich folgende Meldung:
Wie erreiche ich, dass Basis1_id1 nicht wieder geöffnet wird (anders gesagt übersprungen wird).
Parallel eine Frage: wie kriege ich das hin, dass nur die Files mit Endung id1 bearbeitet werden?
Hier ist mein Code:
Sub Stappelverarbeitung_von_Innen()
'Basisdokument
Range("A1").Value = Range("A1").Value + 1
'Wetere Dokumente
Const sSourcePath As String = "C:\Users\-\aL\surv-aL\9-Konfig_Baustelle\Tests\Stappelverarbeitung\"
Dim fld, file
Dim fso As Object
Dim objFld As Object
Dim objSubFld As Object
Dim objFiles As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set objFld = fso.getfolder(sSourcePath)
Set objSubFld = objFld.SubFolders
For Each fld In objSubFld
Set objFiles = fld.Files
For Each file In objFiles
Application.Workbooks.Open(file.Path).Activate
'Operation
ActiveWorkbook.Sheets("Tabelle1").Range("A1").Value = ActiveWorkbook.Sheets("Tabelle1").Range("A1").Value + 1
ActiveWorkbook.Close SaveChanges:=True
Next
Next
End Sub
Ich bitte Euch ganz herzlich um die Hilfe!)Mit recht herzlichen Gruß an alle
Alex