Ich bin noch ganz am Anfang mit meinen vba Kenntnissen, hätte aber einen Anwendungsfall in dem ich gerne eine Dateneingabe automatisieren würde aber leider einfach nicht den richtigen Weg finde.
Ziel wäre:
Ich habe eine Exceldatei in die ich verschiedene Daten aus anderen Exceldateien reinkopieren will.
Die Daten die ich kopieren will sind immer in bestimmten Zellen, allerdings in vielen verschiedenen Dateien.
Ich würde nun gerne in meine Zieldatei gehen, dort das Makro starten, über das Makro eine Abfrage bekommen und eine der "Quelldateien" öffnen, dann in der geöffneten Quelldatei in der aktiven Registerkarte den Blattschutz aufheben und (beispielsweise) den Wert und das Format aus B4 in die Zieldatei in die erste freie Zeile, Spalte A kopieren, dann in der Quelldatei, C1 kopieren und in die Zieldatei, (gleiche Zeile) Spalte B kopieren.
Danach sollte die Quelldatei geschlossen werden ohne die Änderungen zu speichern.
Für die "nächste" Quelldatei würde ich dann wieder das Makro starten wollen, die Abfrage bekommen welche "Quelldatei" ich öffnen will und dann wieder aus der "neuen" Quelldatei dieselben Zellen kopieren (eben in die nächste freie Zeile der Zieldatei).
Leider bekomme ich bei meinem Versuch immer Fehlermeldungen:
Mein Code sah bisher so aus:
Sub Abgrenzungsforecast_importieren()
'Varibalen deklarieren
Dim Quelldatei As Workbook
Dim Zieldatei As Worksheet
Dim lLetzteReiheZieldatei As Long
Dim Importfile As String
Set Zieldatei = Workbooks("Abgrenzungsforecast.xlsx").Worksheets("Tabelle1")
'Letzte Zeile der Zieldatei finden
lLetzteReiheZieldatei = Zieldatei.Cells(Zieldatei.Rows.Count, "A").End(xlUp).Offset(1).Row
'Abfrage welche Datei geöffnet werden soll
Importfile = Application.GetOpenFilename("Exceldateien (*.xlsx*),.xls*", , "Bitte die zu importierenden Daten wählen")
'Datei öffnen
Workbooks.Open (Importfile)
Set Quelldatei = ThisWorkbook
MsgBox (ActiveWorkbook.Name & " wurde geöffnet!"), vbInformation
' Blattschutz_aufgeben
Quelldatei.Unprotect
'Datenkopieren
Quelldatei.ActiveSheet.Range("B4").Copy
Zieldatei.Range("A" & lLetzteReiheZieldatei).PasteSpecial Paste:=xlValues
Zieldatei.Range("A" & lLetzteReiheZieldatei).PasteSpecial Paste:=xlPasteFormats
Ja weiter bin ich leider noch nicht und hier habe ich schon Fehler. Wie kann ich denn für die Datei die ich öffne (Quelldatei) irgendwie einen "Namen" vergeben? ich weiß ja irgendwie im Code noch nicht ob die jetzt z.B. Daten Projekt1.xlsx, Frau Müllers Katze.xls oder sonst wie heißt.
Set Quelldatei = ThisWorkbook scheint nicht zu funktionieren. Beim Testen bekomme ich es noch hin dass ich eine Datei auswählen kann, sie öffnen kann und die MsgBox bekomme, aber dann tut sich nichts mehr weiter.
Wäre sehr dankbar wenn mir jemand verraten könnte wie ich die Quelldatei "bezeichnen" bzw. auf die Referenzieren kann damit ich die im Code benutzen kann.
Vielen Dank vorab