Hallo Zusammen,
ich verzweifle aktuell an einer Programmierung.
Ziel der Sache:
Durch Klick auf den Button "Report starten" im Tabellenblatt "Partnerübersicht" soll
1. Pro Kundennummer der Datenbasis im Tabellenblatt "Gesamtplanung" eine neue .xls-Datei gespeichert werden.
2. Die Tabellenblätter "Partnerübersicht", "Liste Hersteller 90002" und "Liste Hersteller 90035" in die jeweiligen neuen Dateien kopiert werden
3. Im Tabellenblatt "Partnerübersicht" in Zelle B4 soll die jeweilige Kundennummer eingetragen werden
bis hierhin funktioniert alles bestens! Aber jetzt fangen die Probleme an:
4. Die beiden Tabellenblätter "Liste Hersteller 90002" + "Liste Hersteller 90035" sollen entweder anhand der Kundennummer der Datei oder anhand des Zellwerts aus 3. oben gefiltert werden und die restlichen Daten entfernt werden.
5. die Daten in den neu erstellten/gespeicherten Dateien sollen ALLE in Werte eingefügt werden (also ohne Formeln, oder Datenbankabfragen), jedoch soll die Formatierung beibehalten bleiben
6. Die VBA-Schaltflächen müssen auch verschwinden und
7. aktuell erhalte ich eine Fehlermeldung, wenn ich die Datei öffne, dass das erwartete Format nicht zusammenpasst. Kann man das auch irgendwie umgehen?
Kann mir hier jemand helfen?
Mein aktueller Code:
Private Sub Schaltfläche7_Klicken()
Dim ws As Worksheet
Dim lr As Long
Dim custNum As String
Dim custName As String
Dim wb As Workbook
Dim newFilePath As String
' Aktives Tabellenblatt auf "Gesamtplanung" setzen
Set ws = ThisWorkbook.Sheets("Gesamtplanung")
' Letzte Zeile mit Daten in Spalte D finden
lr = ws.Cells(Rows.Count, "D").End(xlUp).Row
' Schleife durch alle einzigartigen Kundennummern gehen
For i = 2 To lr
custNum = ws.Cells(i, "D").Value
custName = ws.Cells(i, "E").Value
' Überprüfen, ob bereits eine Datei für diese Kundennummer existiert
If Dir("C:\Users\XXX\Desktop\Test VBA\" & custNum & " " & custName & " Abgleich.xls") = "" Then 'Dateipfad anpassen
' Neue Arbeitsmappe erstellen
Set wb = Workbooks.Add
' Arbeitsmappe umbenennen
wb.SaveAs "C:\Users\XXX\Desktop\Test VBA\" & custNum & " " & custName & " Abgleich.xls" 'Dateipfad anpassen
' Tabellenblätter kopieren
ThisWorkbook.Sheets("Partnerübersicht").Copy Before:=wb.Sheets(1)
ThisWorkbook.Sheets("Liste Hersteller 90002").Copy Before:=wb.Sheets(2)
ThisWorkbook.Sheets("Liste Hersteller 90035").Copy Before:=wb.Sheets(3)
' Tabelle1 löschen
Application.DisplayAlerts = False
wb.Sheets("Tabelle1").Delete
Application.DisplayAlerts = True
' Kundennummer in Partnerübersicht einsetzen
wb.Sheets("Partnerübersicht").Range("B4").Value = custNum
' Arbeitsmappe speichern und schließen
wb.Save
wb.Close
End If
Next i
MsgBox "Alle Dateien wurden erstellt."
End Sub
Anbei noch eine Beispieldatei: https://www.herber.de/bbs/user/158813.xlsx
Vielen Dank schon einmal vorab.
Viele Grüße
Sassi