Daten aus Excel-Formular in anderes Excel-Formular importieren
Guten Morgen,
habe folgendes Problem, ich möchte gerne Daten aus einem Excel-Formular ''Aufmaßanfrage'' in ein anderes Excel-Formular ''Aufmassdatei'' übertragen. Dabei müssen die einzelnen Daten aus ''Aufmaßanfrage'' in bestimmte Felder in der Datei ''Aufmassdatei'' übertragen werden.
Als Beispiel:
Der Wert in Feld ''AB25'' aus dem Formular ''Aufmaßanfrage'' soll nach Feld ''O3'' des Formulares ''Aufmassdatei'' übertragen werden.
Habe mich schon einige Themen hier durchgelesen, aber da ich Anfänger in diesem Bereich bin, bin ich nicht wirklich weiter gekommen.
Wäre super wenn mir da jmd helfen könnte.
Danke schonmal im vorraus.
Greetz Chris
Antwort schreiben
Antwort 1 von Beverly vom 17.09.2022, 11:14 Options
Hi Chris,
müssen die Daten fest eingetragen werden? Andernfalls wäre es mit Bezugs-Formeln lösbar.
Was verstehst du unter einem Formular: Tabellenblatt in ein und der selben Arbeitsmappe oder Tabellenblätter in verschiedenen Arbeitsmappen (Dateien)?
Bis später,
Karin
Antwort 2 von Hajo_Zi vom 17.09.2022, 11:16 Options
Hallo Chris,
Du schreibst von einer UserForm in einen andere übertragen, aber unten liest sich das wie in Tabelle eintragen?
in der ersten UserForm
Userform2.Txt_Datum =Txt_Datum
Gruß Hajo
Antwort 3 von Chris-1988 vom 17.09.2022, 12:14 Options
Also es sind zwei verschiedene Dateien. Die eine Datei besteht aus einem Formular, in diesem müssen bestimmte Felder ausgefüllt werden. Wenn diese Felder ausgefüllt sind sollen sie in die andere Datei übertragen werden. Diese Datei besteht aus einer Tabelle. Kurz gesagt, die Daten aus den Feldern in die dafür vorgesehene Spalte der Tabelle in der anderen Datei übertragen.
Greetz Chris
Antwort 4 von coros vom 18.09.2022, 06:02 Options
Hallo Chris,
mal ins Blaue ohne genau zu wissen, was Du mit Formular meinst.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei. Option Explicit
Sub Kopieren()
Workbooks("Quelldatei").Sheets("Aufmaßanfrage").Range("AB25").Copy _
Workbooks("Zieldatei").Sheets("Aufmassdatei").Range("O3")
End Sub
Anstelle von Quell- und Zieldatei in dem Makro müssen die Blattnamen eingetragen werden.
Weitere Erklärungen schenke ich mir, um Dir mal zu zeigen, wie es einem geht, wenn er nur ein paar Infos erhält und auf Nachfragen von Helfenden nicht reagiert (Frage von Beverly, was Du mit Formular meinst).
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Chris-1988 vom 23.09.2022, 07:54 Options
Guten Morgen,
etwas spät meine Antwort aber ich war bis gestern auf einem Seminar. Erstmal Danke für die Hilfe. Mit Formular meine ich in dem Fall ein Excelblatt in dem bestimmte Felder vorgegeben sind, in denen der Empfänger bestimmte Angaben zu der Aufmaßanfrage machen muss z.B. PLZ, Ort, Straße oder E-Mail.
Wenn ich dein Makro einfügen will, steht da:
Laufzeitfehler'9'
Index außerhalb des gültigen Bereichs
Greetz Chris
Antwort 6 von Chris-1988 vom 23.09.2022, 10:40 Options
Habe jetzt nochmal nachgelesen und etwas gefunden wo steht, dass man das Dokument erst aktivieren oder selektieren muss/sollte. Ist das richtig?
Greetz
Antwort 7 von coros vom 23.09.2022, 13:43 Options
Hallo Chris,
sorry, ich habe gerade gesehen, dass in meiner Erklärung in AW4
Zitat:
Anstelle von Quell- und Zieldatei in dem Makro müssen die Blattnamen eingetragen werden.
ein Fehler ist. Anstelle von "Blattnamen" hätte dort "Dateinamen stehen müssen. Du musst also anstelle von Quell- und Zieldatei den vollständigen Dateinamen mit der Endung ".xls" eintragen. Dann sollte auch kein Laufzeitfehler erfolgen.
Aber wie bereits auch erwähnt, war das Makro ein Schuss ins Blaue und kann u.U. nicht 1:1 für Dich übernommen werden. Du solltest also den 2. Teil meiner AW4 mal beherzigen und etwas mehr über Dein Vorhaben und Deine Datei(en) schreiben.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von Chris-1988 vom 24.09.2022, 08:55 Options
Morgen Oliver,
ich hatte es auch mit den Dateinamen versucht, jedoch kommt dann auch wieder der selbe Fehler.
Habe vermutet, dass es in meiner AW5 evtl. deutlich wird was ich mit Formular meine und somit auch der Ablauf.
Zitat:
Mit Formular meine ich in dem Fall ein Excelblatt in dem bestimmte Felder vorgegeben sind, in denen der Empfänger bestimmte Angaben zu der Aufmaßanfrage machen muss z.B. PLZ, Ort, Straße oder E-Mail.
Die oben genannten Angaben sollen dann kopiert werden und in die zweite Datei eingefügt werden. Die erste Datei besteht aus einem Aufmaßanfrage-Formular und die zweite Datei besteht aus einer Tabelle mit verschiedenen Spalten, die die gleiche Bezeichnungen haben wie die Felder des Formulares aus der ersten Datei.
Hoffe das war jetzt verständlicher. Ich danke dir schonmal für deine Mühe.
Greetz Chris
Antwort 9 von Beverly vom 24.09.2022, 09:54 Options
Hi Chris,
in welcher Datei soll der Code ausgeführt werden - Aufmaßdatei oder Aufmaßanfrage?
Sub Kopieren()
ThisWorkbook.Worksheets("Tabelle1").Range("AB25").Copy _
Workbooks("Zielmappe.xls").Worksheets("Tabelle1").Range("O3")
End Sub
ThisWorkbook ist die Arbeitsmappe mit dem Code und daraus wird in die andere Arbeitsmappe kopiert.
Bis später,
Karin
Antwort 10 von Chris-1988 vom 29.09.2022, 08:40 Options
Guten Morgen,
ich habe deinen Vorschlag ausprobiert Karin und es funktioniert. Danke sehr. Das ist schonmal ein Erfolg :). Ich habe jedoch jetzt das Problem, dass er die Hintergrundfarbe mit kopiert. Diese ist in der ersten Datei grau und in der zweiten grün. Ist es möglich, dass diese nicht mit übernommen wird?
Greetz Chris
Antwort 11 von coros vom 29.09.2022, 19:02 Options
Hallo Chris,
dann sieht der Code wie folgt aus:
Sub Kopieren()
ThisWorkbook.Worksheets("Tabelle1").Range("AB25").Copy
Workbooks("Zielmappe.xls").Worksheets("Tabelle1").Range("O3").PasteSpecial Paste:=xlPasteValues
End Sub
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von Chris-1988 vom 30.09.2022, 11:33 Options
Guten Morgen,
super Sache. Es klappt. Ich war schon bei ganze anderen Variationen die ich gefunden hatte und eigtl war es so einfach. Ich dannke euch beiden. Habe da jetzt noch einen Button eingebaut, sodass es per Klick übertragen wird.
Private Sub CommandButton1_Click()
ThisWorkbook.Worksheets("Aufmaßanfrage").Range("AB25").Copy
Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("N985").PasteSpecial Paste:=xlPasteValues
ThisWorkbook.Worksheets("Aufmaßanfrage").Range("L15").Copy
Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("Q985").PasteSpecial Paste:=xlPasteValues
End Sub
Klappt auch wunderbar.
Ein kleines Problem gibts da jetzt noch. Immer wenn ein neues Formular ausgefüllt wird und die Werte übertragen werden, soll der in dei letzte Zeile der Tabelle springen. Damit die Werte aus dem letzten Formular nicht überschrieben werden. Ist dies auch möglich?
Vielen Dank nochmals.
Greetz Chris
Antwort 13 von Chris-1988 vom 30.09.2022, 11:48 Options
Problem gelöst ;)
Private Sub CommandButton1_Click()
Dim lngLast As Long
ThisWorkbook.Worksheets("Aufmaßanfrage").Range("AB25").Copy
lngLast = Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Cells(Rows.Count, "N").End(xlUp).Row + 1
Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("N" & lngLast).PasteSpecial Paste:=xlPasteValues
ThisWorkbook.Worksheets("Aufmaßanfrage").Range("L15").Copy
Workbooks("Aufmassdatei.xls").Worksheets("Aufmassdatei").Range("Q985").PasteSpecial Paste:=xlPasteValues
End Sub