(11.05.2024, 17:37)Crazy Tom schrieb: setz die Namen der Workbooks in eine Variable
und zwing deine Leute (notfalls mit Waffengewalt ) über eine Inputbox Quell und Zieldatei anzugeben
wobei du die Zieldatei mit ThisWorkbook... ansprechen kannst
Vielen Dank Crazy Tom! Ich glaube, ich habe es jetzt endlich hinbekommen (Bei mir dauert das alles ein bisschen länger mit VBA :D ). Das schöne ist, eine Waffengewalt ist so gar nicht notwendig, weil man so keinen Dateinamen eingeben muss.
Schön, dass du verstanden hast, worum es mir ging und bis zum Schluss auf dem Karussell geblieben bist! Dein Ansatz war eine sehr gute Idee! Auch allen Anderen, die versucht haben, mein Problem zu verstehen und eine Lösung zu finden, gebührt mein Dank!
Es wird bestimmt noch Einiges zu finden sein, was an dem Code nicht gefällt, er funktioniert aber bisher ganz gut so wie mir scheint...
Code:
Sub Übersicht_Kopieren()
Dim QuellDatei As Workbook
Dim ZielDatei As Workbook
Dim QuellBlatt As Worksheet
Dim ZielBlatt As Worksheet
Dim DateiPfad As String
Dim DateiName As String
Dim Antwort As VbMsgBoxResult
' Meldung mit Auswahl und Hinweis
Antwort = MsgBox("Sie sind dabei, Daten aus einer anderen Datei in die aktuell geöffnete einzufügen und damit bereits vorgenommene Eintragungen zu überschreiben." & vbNewLine & vbNewLine & "Wenn Sie sich sicher sind, klicken Sie auf 'OK' und wählen im nächsten Fenster die Quelldatei aus, ansonsten klicken Sie bitte auf 'Abbrechen'.", vbExclamation + vbOKCancel, "Daten importieren")
' Bei Abbruch
If Antwort = vbCancel Then
MsgBox "Der Vorgang wurde abgebrochen.", vbInformation
Exit Sub
End If
' Dateiauswahlfenster
DateiPfad = Application.GetOpenFilename("Excel-Dateien (*.xlsm), *.xlsm")
' Keine Datei ausgewählt oder Abbruch
If DateiPfad = "Falsch" Then
MsgBox "Keine Datei ausgewählt. Der Vorgang wurde abgebrochen.", vbExclamation
Exit Sub
End If
' Ausgewählte Datei und Tabellenblatt als QuellDatei festlegen
Set QuellDatei = Workbooks.Open(DateiPfad)
Set QuellBlatt = QuellDatei.Sheets("Übersicht")
' Aktuell geöffnete Datei als ZielDatei festlegen
Set ZielDatei = ThisWorkbook
Set ZielBlatt = ZielDatei.Sheets("Übersicht")
' Bereich in QuellBlatt kopieren und auf ZielBlatt einfügen
QuellBlatt.Range("A2:F20").Copy ZielBlatt.Range("A2")
' Schließen der QuellDatei
QuellDatei.Close SaveChanges:=False
' Meldung über Erfolg
MsgBox "Daten wurden erfolgreich kopiert!", vbInformation
' Zwischenablage leeren
Application.CutCopyMode = False
End Sub
Grüße und schönes Wochenende!
(11.05.2024, 18:48)Klaus-Dieter schrieb: Hallo Sabotaz,
ich bleibe bei meiner Meinung, dass es falsch ist, Daten von einem Tabellenblatt zu kopieren und in ein anderes einzufügen. Wie willst du so etwas konsistent halten, wenn sich Daten ändern? Der einzig richtige Weg kann nur sein, alle Daten auf einem Blatt zu halten. Für Teilbereiche, Auswertungen und ähnliches hält Excel verschiedene Möglichkeiten zum Filtern bereit. Eventuell kann man auch mit PowerQuery zum Ziel kommen. Aber Daten auf 20 Blättern halten, ist einfach falsch!
Kann sein, kann ich auch nachvollziehen, hat aber mit der eigentlichen Frage nichts zu tun. Nun kann man natürlich alle möglichen Szenarien durchgehen worunter sich dann auch welche wiederfinden, bei denen genau das aber erforderlich ist, ich kann aber auch ausführlich auf drei Seiten mein Projekt aufschreiben, damit es nachvollziehbar wird, sodass aber keiner Lust hat sich das durchzulesen, oder wir suchen gemeinsam nach einer Lösung für die eigentliche Frage. Diskutieren kann man ja danach immer noch, ob man etwas macht oder nicht macht. Die Kernfrage bleibt aber die gleiche.
Grüße!