Hallo Leute :)
mein Ziel ist es aus einem selbst ausgewählten Ordner (Verzeichnis) in jenem mehrere Excel-Dateien abgespeichert sind (mit unterschiedlichem Namen, aber die Tabellenblätter sind gleich benannt) pro Datei folgengenden Vorgang zu haben = und zwar soll im ersten Schritt eine neue Excel-Datei (Workbook) erstellt werden, in welches dann das Tabellenblatt "Gross", welches aus der ersten Datei aus dem ausgewählten Ordner stammt, kopiert und umbenannt in "Brutto" werden soll und unter einem bestimmten Pfad (s.Code) abgespeichert werden soll. Danach erfolgt das selbe mit der zweiten Datei aus dem ausgewählten Ordnerverzeichnis bis keine Datei im Ordner mehr vorzufinden ist. Absgepeichert soll jede Datei basierend auf dem Dateinamen im Ordnerverzeichnis (pro Datei unterschiedich) in einem neuen Ordner.
Hier der Code:
Sub Transfer()
Dim oTargetBook As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Dim oFileDialog As FileDialog
Dim sFileName As String
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
Application.DisplayAlerts = False 'Keine Fehlermeldungen anzeigen
'Schritt 1: Schleife über alle Excel-Dateien in einem ausgewählten Verzeichnis
Set oFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
With oFileDialog
.Title = "Verzeichnis auswählen..."
.ButtonName = "Import"
If .Show = -1 Then sPfad = .SelectedItems(1)
End With
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei <> ""
'Schritt 2: Pro Datei im Verzeichnis eine neue Arbeitsmappe öffnen
Set oTargetBook = Application.Workbooks.Add
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
'Es wird immer ein bestimmtes Tabellenblatt namens "Gross" kopiert und in die neu erstellte Arbeitsmappe mit dem Namen "Brutto" eingefügt.
oSourceBook.Worksheets(Gross).Copy After:=oTargetBook.Worksheets(oTargetBook.Sheets.Count)
ActiveSheet.Name = "Brutto"
oSourceBook.Close SaveChanges:=False
On Error Resume Next
'Schritt 4: Automatisches Speichern unter und Namensvergabe
'Arbeitsmappenname hängt von dem Dateinamen im ausgewählten Verzeichnis ab und wird automatisch unter einem bestimmten Pfad abgespeichert
sFileName = Left(sDatei, InStrRev(sDatei, ".") - 1)
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\Markus\Desktop\Excel makro\Target" & sFileName & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
oTargetBook.Close
'Wenn ein Fehler aufgetreten ist, wird dieser resettet
If Err.Number <> 0 Then
Err.Number = 0
Err.Clear
End If
On Error GoTo 0
'Nächste Datei
sDatei = Dir()
Loop
Beenden:
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
Application.DisplayAlerts = True 'Fehlermeldungen wieder anzeigen
If Trim(sPfad) = "" Then Exit Sub
'Abschlussmeldung
MsgBox "Fertig!"
'Variablen aufräumen
Set oTargetBook = Nothing
Set oSourceBook = Nothing
End Sub
Vielen Dank im Voraus für eure Unterstützung :)
lg
|