Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren bestimmter Spalteninhalte

Kopieren bestimmter Spalteninhalte
07.08.2021 20:11:01
Andreas
Liebe Forumgemeinschaft,
seit mehreren Tagen hänge ich als absolute VBA-Niete fest. Den nachstehenden Code habe ich nach vielem „Abkupfern“ auf mein beabsichtigtes Projekt hinbekommen.

Sub kopieren ()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lngLast As Long
Set wksQ = Sheets("tabelle4")
Set wksZ = Sheets("tabelle3")
lngLast = wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
wksQ.Range("b2:b" & lngLast).Copy wksZ.Range("b2")
wksQ.Range("c2:c" & lngLast).Copy wksZ.Range("c2")
wksQ.Range("d2:d" & lngLast).Copy wksZ.Range("d2")
End Sub
Innerhalb einer Mappe funktioniert er problemlos, nur weiß ich nicht wie er zu formulieren ist, wenn es darum geht die Daten von einer Mappe in eine andere Mappe zu kopieren. Als Beispiel von „Mappe 1, Tabellenblatt 1“, in „Mappe 2, Tabellenblatt 2“. Aus diesem Grund möchte ich euch wieder einmal um Hilfe und Unterstützung bitten. Ich bedanke mich schon jetzt und verbleibe mit vielen Grüßen
Andreas

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren bestimmter Spalteninhalte
07.08.2021 20:25:25
Hajo_Zi
Hallo Andreaa,
Du kopierst schon in eine andere Tabelle, wo ist das Problem?
GrußformelHomepage
AW: Kopieren bestimmter Spalteninhalte
07.08.2021 20:34:59
GerdL
Moin,
die Dateiendung (mit oder ohne Makros / xlsm oder xlsx / musst du selbst wissen.
Daneben ist die Datei mit deinem Code ThisWorkbook
Set wksQ = Workbooks("Mappe1.xlsx").Worksheets("tabelle4")
Set wksZ = Workbooks("Mappe2.xlsm").Worksheets("tabelle3")
Gruß Gerd
Anzeige
AW: Kopieren bestimmter Spalteninhalte
07.08.2021 20:29:04
Daniel
Im Prinzip genauso.
Nur musst du vor dem Sheet dann noch das Workbook angeben.
Die die vollständige Objektkette ist

Workbooks("Mappe1.xlsb").Sheets("Tabelle1").Range("A1")
Natürlich kannst du das Workbook auch einer Variablen zuweisen.
Das Workbook, in welchem sich das Makro befindet, kann man immer mit ThisWorkbook ansprechen, dann braucht man den Dateinamen nicht.
Ohne die Angabe wird immer das aktive Workbook verwendet.
Weist du das Sheet einer Variablen zu, so musst du hier schon das Workbook angeben:

Set wksQ = Thisworkbook.Sheets("tabelle4")
Set wksZ = Workbooks("Mappe2.xlsm").Sheets("tabelle3")
Gruß Daniel
Anzeige
AW: Kopieren bestimmter Spalteninhalte
08.08.2021 07:44:32
Andreas
Guten Morgen liebe Kümmerer,
meine Versuche eure Hinweise umzusetzen erhalte ich immer Fehlermeldungen und weiß nicht was ich verkehrt mache, wie ich das debuggen kann.
"Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"; umgesetzt habe ich eure Hinweise wie folgt:

Sub kopieren()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lngLast As Long
Set wksQ = Workbooks("D:\mappe1\mappe1.xlsx").Worksheets("tabelle1")
Set wksZ = Workbooks("D:\mappe1\mappe2.xlsx").Worksheets("tabelle2")
lngLast = wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
wksQ.Range("b2:b" & lngLast).Copy wksZ.Range("b2")
wksQ.Range("c2:c" & lngLast).Copy wksZ.Range("c2")
wksQ.Range("d2:d" & lngLast).Copy wksZ.Range("d2")
End Sub

Anzeige
nur mal so...
08.08.2021 08:09:06
Oberschlumpf
nicht nur Basiskenntnisse in Excel, sondern auch Basiskenntnisse in Beschreibungen.... :-/
Sorry Andreas,
aber so etwas lese ich von dir leider immer wieder:
zuerst "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs" und dem folgen dann von dir mehrere Codezeilen - ja, UND IN WELCHER ZEILE tritt der Fehler 9 auf?
Ich bewundere echt die Geduld der anderen Antworter, die dir oft - irgendwann!!!! - auch mal helfen können. Aber bis dahin ist es echt wegen deiner oft viel zu ungenauen Beschreibungen ein langer, beschwerlicher Weg.
Und DAS muss nicht sein!
Gib dir beim Beschreiben deiner Probleme, Wunschziele, Fehler doch bitte endlich mal mehr Mühe!
Von uns sieht keiner deine Datei.
Von uns steht niemand hinter dir.
Von uns weiß niemand, welchen (Programmier)Schritt du gerade versucht hattest, bevor es zu Fehler xy kam, den du dann hier versuchst zu beschreiben.
Ciao
Thorsten
Anzeige
AW: nur mal so...
08.08.2021 08:15:04
Andreas
Hallo Thorsten,
ok sorry, hast ja absolut recht.
Die Fehlermeldung ist in der 4. Zeile ("Set wksQ = Workbooks("D:\mappe1\mappe1.xlsx").Worksheets("tabelle1")") - ich hoffe das ich die Zeilennummer richtig bezeichnet habe.
Viele Grüße und nochmals Entschuldigung.
Andreas
AW: nur mal so...
08.08.2021 08:26:02
Oberschlumpf
Hi Andreas,
in dem von dir gezeigten Code:

Sub kopieren ()
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lngLast As Long
Set wksQ = Sheets("tabelle4")
Set wksZ = Sheets("tabelle3")
lngLast = wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
wksQ.Range("b2:b" & lngLast).Copy wksZ.Range("b2")
wksQ.Range("c2:c" & lngLast).Copy wksZ.Range("c2")
wksQ.Range("d2:d" & lngLast).Copy wksZ.Range("d2")
End Sub
gibt es die Zeile
Set wksQ = Workbooks("D:\mappe1\mappe1.xlsx").Worksheets("tabelle1")
nicht!!!!
Es wird echt nich besser...schade.
Ich bin wieder raus.
Ciao
Thorsten
Anzeige
AW: nur mal so...
08.08.2021 08:40:32
Andreas
Hi Thorsten,
jetzt verstehe ich deinen Vorwurf nicht mehr, ich habe doch erklärt wie ich meinen Code auf den nunmehr realen Fall habe versucht umzusetzen, lediglich Mappen- und Tabellenblattnamen habe ich verändert und den Pfadnamen zusätzlich mit angegeben.
Leider weiß ich nicht, weshalb du nun so verärgert reagierst. Bitte dennoch um Entschuldigung.
Andreas
AW: nur mal so...
08.08.2021 09:12:50
Oberschlumpf
Hi Andreas,
ok, hab die fehlerhafte Zeile in https://www.herber.de/forum/messages/1842634.html gefunden.
Warum ich mich ärgere? Weil es in deinen Beschreibungen oft hin und her geht. Aber ok, DAS ist dann wohl MEIN Problem.
Und deshalb antworte ich doch noch mal.
Wenn die Zeile

Set wksQ = Workbooks("D:\mappe1\mappe1.xlsx").Worksheets("tabelle1")
zu Fehler 9: Index außerhalb des Bereichs führt, dann...
...ist die Datei D:\mappe1\mappe1.xlsx noch nicht geöffnet (eine DAtei muss geöffnet sein, bevor mit Set... mit dieser verknüpft wird)
...oder in der geöffneten Datei gibt es tabelle1 nicht (ich weiß nicht, ob Groß/Kleinschreibung wichtig ist)
Wieso "weigerst" du dich fast schon, per Upload Bsp-Dateien zu zeigen...gleich im jeweils ersten Beitrag von dir? DAS versteh ich auch nich.
Ciao
Thorsten
Anzeige
AW: nur mal so...
08.08.2021 12:20:11
Oberschlumpf
und wieso antwortest du mir nicht mehr zu meinen Ideen von 0912 Uhr?
zu dem Fehler 9 hatte ich dir ja 2 Gründe genannt, an denen es liegen kann.
AW: nur mal so...
08.08.2021 16:10:50
Andreas
Hallo Thorsten,
vielen Dank, dass du dich doch noch meinem Problem angenommen hast und entschuldige, dass ich erst jetzt antworte, da ich seit heute Vormittag unterwegs und nicht am Computer gewesen bin.
Ich habe nach wie vor die Fehlermeldung in der gleichen Zeile, obwohl ich beide Dateien/Mappen geöffnet und die Pfade jeweils in den Code hineinkopiert habe.
Weiterhin möchte ich anfügen, dass es mir fern liegt irgendjemanden zu verärgern, zu beleidigen oder ähnlichem, denn letztlich komme ich hier als "Bittsteller" und möchte ja eure Hilfe. Ich verweigere mich auch nicht nicht Mappen usw. als Beispiele beizufügen, aber hätte ich tatsächlich zwei Mappen hochladen sollen und wenn ja, wie? Meine Absicht war es einfach alles so einfach wie möglich zu halten und glaubte, dass man anhand der Codeschreibweise Fehler in den Deklarationen oder so zu erkennen. Wie gesagt, mit VBA bin ich im "Babyalter" obwohl ich selbst ein alter Mann bin.
Viele Grüße
Andreas
Anzeige
AW: nur mal so...
08.08.2021 16:36:12
Oberschlumpf
Hi Andreas,
ok, ich hatte meine Vorschläge um 9:12 Uhr gemacht.
In https://www.herber.de/forum/messages/1842645.html hattest du das 1. Mal wieder um 12:05 Uhr geantwortet, das 2. Mal um 12:47 Uhr.
Kannst du mich nicht verstehen, dass ich mich wunderte, in dem einen Beitrag antwortest du 2x, mir antwortest du gar nicht mehr?
Aber ok, egal...
Deine Frage zu 2 Mappen hochladen ja oder nein = wieso nicht?
Und deine Frage zu: wie lädt man 2 Mappen hoch
Na, in dem du entweder die Upload-Funktion 2x nutzt, oder du kannst die 2 Bsp-Dateien vor dem Upload auch in eine ZIP-Datei packen - du musst dann nur 1x die eine ZIP-Datei hier hochladen.
Wie und womit man ZIP-Dateien erstellt, kannst du in Google finden, wenn du nicht weißt, wie das geht.
Und ja, ich ärgerte mich - ABER!!!! - ich hätte mich auch wiedermal zusammenreißen und gar nicht antworten brauchen.
Diesmal hatte ich es leider nicht geschafft - könnte daran liegen, dass auch ich nur ein Mensch bin.
Ich bin zwar noch nicht ganz so alt, aber ziemlich ungeduldig - daran könnte ich noch arbeiten.
Ich kann dir leider nicht weiterhelfen.
Ciao
Thorsten
Anzeige
AW: nur mal so...
08.08.2021 16:46:08
Andreas
Ciao Thorsten, schade dass du weg bist, und gut, dass du ein Mensch bist. Aber mein Problem besteht nach wie vor, ich möchte einfach ein paar Spalten bis zu ihrem jeweiligen Spalten-/Zeilenenden aus einer Tabelle in eine andere Tabelle hineinkopieren und weiß immer nicht wie es geht. Von einem Tabellenblatt zu andern in einer Datei ist offensichtlich kein Problem, da funktioniert der Code, nur wenn von einem Tabellenblatt einer anderen Datei zu kopieren ist, weiß ich nicht wie ich es machen soll.
Viele Grüße Andreas
AW: nur mal so...
08.08.2021 16:49:06
Oberschlumpf
ich kann die Klappe nich halten...
und du hast die 2 Bsp-Dateien noch immer nich per Upload gezeigt...tja...
Anzeige
AW: nur mal so...
08.08.2021 17:23:51
Andreas
Hallo Thorsten,
das ist gut, wenn du deine Klappe nicht halten kannst. Wenn ich Fehler mache oder ungenügende Informationen zu meinem Problem schildere oder darstelle, möchte ich schon die Hinweise haben. Sollte ich denen keine Folge leisten aus welchen Gründen auch immer brauche ich offensichtlich die Mecker. Hoffentlich ist jetzt soweit alles gut.
Viele Grüße Andreas
letzter Versuch
09.08.2021 00:21:36
Oberschlumpf
Hi Andreas,
deine Bsp-Dateien sind....murks!
Wenn dein Code funktionieren würde, dann würde dein Code die Daten in den im Code verwendeten Tabellen zerschießen!
Code und Tabellen passen nicht zusammen!
Da ich aber will, dass du endlich kapierst, wie es funktioniert, dass man Daten in DATEI1 kopieren und problemlos! in DATEI2 einfügen kann, habe ich 2 Bsp-Dateien erstellt:
Mappe1.xlsx
Mappe2.xlsm - in Mappe2 ist dein Code, von mir angepasst, enthalten. Deswegen MUSS Mappe2 am Ende auch xlsM heißen
hier, bitte schön:
https://www.herber.de/bbs/user/147513.zip
du musst zuerst beide Dateien aus der ZIP-Datei entpacken! Speicher beide Dateien im selben Verzeichnis.
Jetzt musst du erst mal beide Dateien in Excel öffnen.
(die Set-Befehle setzen voraus, dass beide Dateien geöffnet sind)
Schau dir in Mappe1 den Inhalt von Tabelle1 an - diese Daten werden später im Makro kpiert und in Mappe2 eingefügt.
Jetzt schau dir in Mappe2.xlsm den Code an.
Das meiste sollte dir bekannt vorkommen. Das von mir geänderte hab ich im Code erklärt.
Starte das Makro.
Es wird funktionieren! Es wird kein Fehler auftreten.
Nun schau dir in Mappe2 die Tabelle2 an.
Wie gewünscht, wurden alle Daten aus Mappe1, Tabelle1, Spalten B bis D kopiert und in Mappe2, Tabelle2, auch in den Spalten B bis D eingefügt.
Beachte, dass das Makro zwar weiter und immer wieder funktioniert, dass du aber jetzt natürlich keine Änderungen sehen wirst, weil ja die Daten aus Mappe1 schon in Mappe2 eingefügt sind.
Lösch mal die Daten in mappe2 und starte das Makro erneut - schwupps, die Daten aus Mappe1 sind wieder in mappe2 eingefügt.
Wenn du weitere Fragen hast, erstell bitte einen neuen Beitrag.
Ciao
Thorsten
AW: letzter Versuch
09.08.2021 02:32:34
Andreas
Guten Morgen Thorsten, guten Morgen Forum,
genau dass ist es wonach ich gesucht habe, vielen lieben Dank für deine Mühen und nochmals sorry dafür, wenn ich mich fehlerhaft geäußert oder nicht begreifend verhalten habe. Für dein Kümmern, aber auch das Kümmern aller in diesem Forum, bedanke ich mich ausdrücklich und verneige mich vor deinem/eurem Können.
Viele Grüße Andreas
ICH BIN
09.08.2021 07:59:45
Oberschlumpf
EIN IDIOT!
(doch noch mal von mir ein) Hallo Andreas!
ICH MUSS mich echt langsam mal zusammenreißen!
Andreas, ich hatte mir gerade noch mal die meisten Beiträge von uns beiden durchgelesen.
Und fast immer hab ich dich ganz schön "zusammengestaucht".
UND DAS TUT MIR SUPER LEID !!!!!!
Ich, und auch sonst niemand, habe nicht das Recht, mich dir gegenüber oder bei wem anders so zu verhalten, wie ich es leider mit dir getan hatte :-(
Ja, ich hatte mich öfter gefragt: "Man, wieso versteht der das nich?" - ABER DAS IST MEIN PROBLEM - DAMIT MUSS ICH ZURECHT KOMMEN!!!
Ich selbst hab ja - egal mit was! - auch mal klein angefangen, hatte keine Ahnung, hab Fragen gestellt, die eigentlich "selbstbeantwortend" sind - wenn man denn Ahnung hätte!!!
Aber auch mir fehlte in solchen Momenten das notwendige Wissen, um manche Frage selbst beantworten zu können!
Und natürlich auch jetzt, heute, morgen, in 10 Jahren...usw werde ich niemals allwissend sein !!!!!
Aber genau soooo hab ich mich dir gegenüber verhalten, Andreas! :-(
Und das tut mir jetzt wirklich sehr sehr leid!
Bitte Andreas, lass dich von solchen wie mir nicht unterkriegen!
Egal, was du wissen willst (hier ist es Excel), frag immer und immer wieder! Es wird immer wen geben, der dir kompetent antworten kann.
Ich wünsch mir, dass ich endlich "entspannter" werde.
Ciao
Thorsten
AW: ICH BIN
09.08.2021 09:45:37
Andreas
Guten Morgen Thorsten,
vielen lieben Dank für dein Statement, für mich bist du kein Idiot, wie du gestern schon erklärtest: Du bist ein Mensch! und dazu noch ein ehrlicher und aufrichtiger dazu. In meinem Leben, insbesondere in meinem Berufsleben, gab es immer wieder Personen die meinten in ihren Kenntnissen und Wissen besser zu sein und sich letztlich ungehobelt äußerten. Keiner von denen hatte das Rückgrat eventuelle Ungerechtigkeiten in ihrem Benehmen einzugestehen. Mit diesen Personen bist du nicht zu vergleichen, ganz im Gegenteil.
Gerne hätte ich mich mal telefonisch mit dir bzw. ggf per Mail (natürlich die schlechtere Alternative, weil man dazu nur wieder viel schreiben muss!) unterhalten wollen.
Für deine Hilfestellung bedanke ich mich noch einmal ausdrücklich und entschuldige mich nochmals für ein evtl. dämmliches Vehalten meinerseits.
Deinen Code hätte ich nie und nimmer im Leben allein hinbekommen und könnte ihn auch jetzt nicht erklären bzw. gänzlich verstehen.
Noch heute Nacht habe ich ihn mit einem anderen Code - natürlich "abgekupfert" - zusammengebracht, so dass die "Mappe1" aus ihrem geschlossenen Zustand geöffnet und nach dem Herauskopieren der Daten wieder geschlossen wird. Ich zeige ihn hier noch einmal für den Fall, dass irgendjemand anders ihn auch gebrauchen kann.
Option Explicit

Sub kopieren()
Dim sPfad As String
Dim wbQuelle As Workbook
'ScreenUpdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dateipfad der Quelldatei
sPfad = "D:\mappe1\mappe1.xlsx"
'Prüfen, ob Datei existiert
If Dir(sPfad)  "" Then
'Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(sPfad)
'Daten kopieren und einfügen
Dim wksQ As Worksheet, wksZ As Worksheet
Dim lngLast As Long
Set wksQ = Workbooks("mappe1.xlsx").Worksheets("tabelle1")
Set wksZ = Workbooks("mappe2.xlsm").Worksheets("tabelle2")
'lngLast = wksQ.Cells(wksQ.Rows.Count, 1).End(xlUp).Row
wksQ.Range("b2:b" & wksQ.Cells(wksQ.Rows.Count, 2).End(xlUp).Row).Copy wksZ.Range("b2")
wksQ.Range("c2:c" & wksQ.Cells(wksQ.Rows.Count, 3).End(xlUp).Row).Copy wksZ.Range("c2")
wksQ.Range("d2:d" & wksQ.Cells(wksQ.Rows.Count, 4).End(xlUp).Row).Copy wksZ.Range("d2")
Set wksQ = Nothing
Set wksZ = Nothing
'Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
'ScreenUpdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
End If
End Sub
Aber wie gesagt, allein hätte ich es nicht hinbekommen.
Viele Grüße
Andreas
Thorsten, mehr Geduld...
09.08.2021 11:09:26
Oberschlumpf
...denn es lohnt sich !!!!!
Hi Andreas,
ja, Telefon (in Verbindung mit RemoteSoftware, z Bsp AnyDesk) oder persönliches Treffen hätte sehr viel beschleunigen können!
Aber diese Möglichkeiten hatten wir ja nicht.
Und trotzdem: Du hast es geschafft!!!
Ich sehe zwar, dass dein Code noch weiter "komprimiert" oder "verbessert" werden könnte, aber....scheiß drauf! :-)
Alles funktioniert ja wie gewünscht - und nur das ist wichtig!
Mach's gut
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige