Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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 automatisieren

Kopieren automatisieren
09.02.2014 16:42:53
Shayev
Hallo,
bei meinem untenstehendem Code bekomme ich bei der Anweisung Workbooks("Summary.xlsm").Sheets(1).Rows(j).Paste
Objekt unterstützt diese Methode oder Eigenschaft nicht!
Bitte um Tips?
Danke
Gruß
Sub zusammenfügen()
Dim WB_Count As Integer
Dim I As Integer
Dim j As Variant
WB_Count = Workbooks.Count
For I = 1 To WB_Count
Workbooks(I).Sheets("hallo").Rows(3).Copy
For j = 3 To 500
If Workbooks("Summary.xlsm").Sheets(1).Cells(j, 1) = "" Then
Exit For
End If
Next j
Workbooks("Summary.xlsm").Sheets(1).Rows(j).Paste
Next I
End Sub

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren automatisieren
09.02.2014 17:34:47
Thomas
Hallo,
ungetestet
Sub zusammenfügen()
Dim WB_Count As Integer
Dim I As Variant
Dim j As Variant
WB_Count = Workbooks.Count
For j = 3 To 500
If Workbooks("Summary.xlsm").Sheets(1).Cells(j, 1) = "" Then
Exit For
End If
Next j
For I = 1 To WB_Count
Workbooks(I).Sheets("hallo").Rows(3).Copy Destination:=Workbooks("Summary.xlsm"). _
Sheets(1).Rows(j)
Next I
End Sub

AW: Kopieren automatisieren
09.02.2014 18:40:32
Shayev
Hallo Thomas,
danke für die Rückmeldung!! Ich habe den VBA Code angepasßt und bekomme eine Fehlermeldung bei
Workbooks(I).Sheets("hallo").Rows(3).Copy Destination:=Workbooks("Summary.xlsm"). _
Sheets(1).Rows(j)
Index außerhalb des gültigen Bereichs!
Woran könnte das liegen ?
Gruß Shayev

Anzeige
fraglich
09.02.2014 19:53:19
Erich
Hi Thomas,
dein Code trifft wohl nicht so ganz das, was Shayev möchte.
In der j-Schleife ermittelst du einmalig die Zeile j (erste leere Zeile in Spalte A unter A2).
In der I-Schleife kopierst du dann immer wieder in diese Zeile j - und überschreibst dabei bisherige Resultate.
@Shayev:
Der Fehler "Index außerhalb des gültigen Bereichs" (Fehlernr. 9?) könnte leicht verursacht sein dadurch,
dass es bei einem deiner Workbooks kein Blatt "hallo" gibt. Kann dat?
Probier mal:

Option Explicit
Sub zusammenfügen1()
Dim WB_Count As Long, wb As Long, freiZ As Long, destZ As Long
Dim vChk
With Workbooks("Summary.xlsm").Sheets(1)
For freiZ = 3 To .Rows.Count
If .Cells(freiZ, 1) = "" Then Exit For
Next freiZ
For wb = 1 To Workbooks.Count
For destZ = freiZ To .Rows.Count
If .Cells(destZ, 1) = "" Then Exit For
Next destZ
vChk = Workbooks(wb).Name
vChk = Workbooks(wb).Sheets("hallo").Cells(3, 1)
Workbooks(wb).Sheets("hallo").Rows(3).Copy Destination:=.Rows(destZ)
freiZ = freiZ + 1
Next wb
End With
End Sub
Wenn der Code mit diesem Fehler abbricht, schau mal, welchen Wert vChk dann hat.
(Debuggen, Mauszeiger im Code über die Variable vChk halten)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: fraglich
10.02.2014 00:35:20
Shayev
Hallo Erich,
danke für die Rückmeldung, funktioniert leider immer noch nicht,bekomme die Fehlermeldung Index außerhalb des gültigen Bereichs beim Debuggen für vChk bekomme ich Summary.xlsm und die Tabelle "hallo" habe ich auch! Vielleicht zum besseren Verständnis, in den offenen Arbeitsmappen möchte ich die Tabelle "hallo" ansprechen und jeweils die gleiche Zeile (3) kopieren und diese dann in die Arbeitsmappe Summary.xlsm Tabelle 1 untereinander einfügen!!
Danke im Voraus!

AW: fraglich
10.02.2014 00:43:04
Shayev
Wenn es keine Umstände macht, wie würde der Code aussehen wenn ich nachfolgend jeweils die Zeile 4 aus den offenen Arbeitsmappen aus Tabelle ("hallo") kopieren würde und sie dann in Arbeitsmappe Summary.xlsm Tabelle 2 einfügen würde! So lange ausführen bis alle Zeilen in den Tabellen "hallo" durch sind. Die Tabellen "hallo" sind gleich aufgebaut!
Danke
Gruß Shayev

Anzeige
AW: fraglich
10.02.2014 01:44:15
Erich
Hi Shayev,
"funktioniert leider immer noch nicht"? Das war nicht anders zu erwarten. Mein Codevorschlag zielte nur darauf ab,
die Ursache des Fehlers zu finden. Nur dafür ist die Variable vChk nützlich.
Erst nach der Analyse des Fehlers kann man sehen, wie er zu beseitigen ist.
Meinst du nun nicht auch, dass der Übeltäter gefunden ist? Eines der Workbooks, über die die Schleife läuft,
heißt "Summary.xlsm". Und ich vermute mal stark, dass es in "Summary.xlsm" kein Tabellenblatt mit Namen "hallo" gibt.
In keinem der bisherigen Codes in diesem Thread steht, dass nicht kopiert werden soll, wenn Workbooks(wb)
das Ziel-Workbook "Summary.xlsm" ist - also versucht die Prozedur auch, aus Summary.xlsm Blatt "hallo" zu kopieren.
Man muss VBA schon sagen, dass aus Summary.xlsm nicht kopiert werden soll.
Übrigens: "hallo" ist keine Tabelle.
Die Dinger heißen Sheets oder Worksheets oder Blätter oder Arbeitsblätter oder Tsbellenblätter.
Tabellen sind etwas anderes in Excel. Ein Arbeitsblatt kann mehrere Tabellen enthalten.
Wenn du nun aus "hallo" Zeile 4 statt 3 kopieren willst:
Workbooks(wb).Sheets("hallo").Rows(4).Copy Destination:=.Rows(destZ)
Und wenn du in Arbeitsmappe "Summary.xlsm" Blatt 2 kopieren willst:
With Workbooks("Summary.xlsm").Sheets(2)
Hier mal alles zusammen:

Sub zusammenfügen2()
Dim WB_Count As Long, wb As Long, destZ As Long
With Workbooks("Summary.xlsm").Sheets(2)
destZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
For wb = 1 To Workbooks.Count
If UCase$(Workbooks(wb).Name)  "SUMMARY.XLSM" Then
Workbooks(wb).Sheets("hallo").Rows(4).Copy Destination:=.Rows(destZ)
destZ = destZ + 1
End If
Next wb
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: fraglich
10.02.2014 10:39:45
Shayev
Hallo Erich,
vielen Dank für deine Mühe! :) Hast Recht, Summary.xlsm habe ich nicht berücksichtigt, die Prozedur hat tatsächlich versucht das Tabellenblatt "hallo" zu finden um die entsprechende Zeile zu kopieren!
Mit Tabelle "hallo" habe ich das Tabellenblatt gemeint, Sheet(1) heißt also hallo, habe mich wohl missverständlich ausgedrückt! Ich weiß nicht warum ich den selben Fehlercode Index außerhalb des Bereichs für das Tabellenblatt namens "hallo" bekomme. Aber wenn ich statt "hallo" eine 1 schreibe, da das Tabellenblatt der jeweiligen Arbeitsmappen immer den Index Sheet (1) hat, funktioniert es einwandfrei!
Danke nochmal hast mir sehr geholfen!!
Gruß Shayev

Anzeige
AW: fraglich
10.02.2014 10:52:48
Shayev
Hallo Erich,
vielen Dank für deine Mühe! :) Hast Recht, Summary.xlsm habe ich nicht berücksichtigt, die Prozedur hat tatsächlich versucht das Tabellenblatt "hallo" zu finden um die entsprechende Zeile zu kopieren!
Mit Tabelle "hallo" habe ich das Tabellenblatt gemeint, Sheet(1) heißt also hallo, habe mich wohl missverständlich ausgedrückt! Ich weiß nicht warum ich den selben Fehlercode Index außerhalb des Bereichs für das Tabellenblatt namens "hallo" bekomme. Aber wenn ich statt "hallo" eine 1 schreibe, da das Tabellenblatt der jeweiligen Arbeitsmappen immer den Index Sheet (1) hat, funktioniert es einwandfrei!
Danke nochmal hast mir sehr geholfen!!
Gruß Shayev

Anzeige
AW: fraglich
10.02.2014 11:01:15
Shayev
Super vielen Dank
es funktioniert! Hast Recht ich habe die Summary.xlsm Arbeitsmappe nicht berücksichtigt! Mit "hallo" habe ich das Tabellenblatt gemeint, leider bekomme ich die selbe Fehlermeldung Index außerhalb des gültigen Bereichs, obwohl in den offenen Arbeitsmappen, das Tabellenblatt "hallo" existiert, ich verstehe nicht woran es liegen könnte! Wenn ich aber anstatt Sheets("hallo") , Sheets(1) schreibe, da das Tabellenblatt in den jeweiligen Arbeitsmappen immer den Index 1 hat, funktioniert es einwandfrei!
Vielne dank nochmal, hast mir sehr geholfen!
Gruß Shayev

Anzeige
Vorsicht!
10.02.2014 11:48:14
Erich
Hi Shayev,
auf welchen VBA-Code beziehst du dich hier, zusammenfügen2 oder zusammenfügen1?:

"leider bekomme ich die selbe Fehlermeldung Index außerhalb des gültigen Bereichs,
obwohl in den offenen Arbeitsmappen, das Tabellenblatt "hallo" existiert,
ich verstehe nicht woran es liegen könnte!
Wenn ich aber anstatt Sheets("hallo") , Sheets(1) schreibe,
da das Tabellenblatt in den jeweiligen Arbeitsmappen immer den Index 1 hat,
funktioniert es einwandfrei!"
Das würde ich dir nicht empfehlen. Wenn du nur aus dem Blatt "hallo" kopieren willst,
solltest du das auch so im Code stehen haben. Es könnte ja sein, dass mal eine andere Mappe offen ist,
in der es kein "hallo" gibt. Wenn du Sheets(1) schreibst, wird trotzdem etwas kopiert. Das sollte nicht passieren.
Ich gehe mal davon aus, dass du jetzt die Bedingung
If UCase$(Workbooks(wb).Name) "SUMMARY.XLSM" Then
im Code stehen hast. Dann löst die Summary.xlsm diesen Fehler nicht aus.
Mit den beiden vChk-Zeilen aus dem vorigen Code kannst du herausbekommen, welche Mappe nun stört.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Vorsicht!
10.02.2014 19:12:59
Shayev
Hallo Erich,
ich beziehe mich auf zusammenfügen2 und es funktioniert jetzt!! :) Ich habe alle Arbeitsmappen geschlossen und dann nochmal geöffnet! :) Aber ich wurde heute unangenehm überrascht! Jetzt muss ich mehrere Zeilen kopiern also einen Bereich! Es bleibt alles gleich, bloß es wird nicht nur eine Zeile kopert sondern mehrere! Vielleicht dazu auch ein Tip?
Gruß Shayev

Kopieren mehrerer Zeilen
10.02.2014 19:30:28
Erich
Hi Shayev,
ja, da habe ich einen ganz wesentlichen Tipp:
Versuch mal die Aufgabenstellung ein wenig genauer zu beschreiben!
"bloß es wird nicht nur eine Zeile kopert sondern mehrere!" reicht einfach nicht aus.
Für die Umsetzung wäre schon wichtig zu wissen, ob der Bereich zusdammenhängend ist oder nicht
und ober er von Blatt zu Blatt variieren kann. Also:
Um welchen Bereich geht es genau? Ist der Bereich in allen Quellblättern der gleiche?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Kopieren mehrerer Zeilen
10.02.2014 19:45:43
Shayev
Ok,danke mache ich in Zukunft! :)
Das Sub namens zusammenfügen2 ist genau das, was ich vom Aufbau brauche! Der Bereich der aus den jeweiligen Arbeitsmappen (Tabellenblatt "hallo")kopiert wird, ist immer der selbe z.B. Zeilen von 6-10! Diese sollten dann wieder in Summary.xlsm untereinander eingefügt werden!

Kopieren mehrerer Zeilen
10.02.2014 21:06:45
Erich
Hi Shayev,
dann probier mal - es geht hier um die 5 Zeilen 6:10:

Sub zusammenfügen3()
Dim WB_Count As Long, wb As Long, destZ As Long
With Workbooks("Summary.xlsm").Sheets(2)
destZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
For wb = 1 To Workbooks.Count
If UCase$(Workbooks(wb).Name)  "SUMMARY.XLSM" Then
Workbooks(wb).Sheets("hallo").Rows(6).Resize(5).Copy _
Destination:=.Cells(destZ, 1)
destZ = destZ + 5
End If
Next wb
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
P.S.: Anrede und ein Gruß sind immer wieder gern gesehene Tele eines Beitrags...

AW: Checkboxen
10.02.2014 21:52:44
Shayev
Hi Erich,
super vielen Dank!! Eine letze Frage habe ich noch, ich möchte im Tabellenblatt Checkboxen prüfen, die wahr sind, falls ja, soll jeweils ein x in definierter Zelle ausgegeben werden, ansonsten nichts! Hier mein Code, funktioniert aber leider nicht:
Private Sub CB()
Dim i As Integer
Dim CB As Integer
CB = ActiveSheet.CheckBox.Count
For i = 1 To CB
If CheckBox(i) = True Then
Range("A(i)") = "x"
Else
Range("A(i)") = ""
End If
Next i
End Sub
Danke
Gruß Shayev

Checkboxen
12.02.2014 19:49:42
Erich
Hi Shayev,
bist du sicher, dass diese "Zusatzfrage" thematisch in diesen Thread gehört?
Ich sehe jetzt keinen Zusammenhang zum Kopieren von Zeilen...
Also: Hier wäre ein neuer Thread wirklich angebracht. Auch der Gedanken daran, dass es ein Archiv gibt,
in dem nach Themen gesucht wird, weist in diese Richtung.
Ein paar Bemerkungen:
Du nennst die Routine CB. Darin deklarierst du eine Variable - ebenfalls mit dem Namen CB. Freund des Chaos?
ActiveSheet.CheckBox.Count gibt es nicht, auch ActiveSheet.CheckBox nicht.
CheckBox(i) ist nicht definiert - CheckBox ist weder ein Array noch eine Liste von Objekten.
Was soll mit Range("A(i)") gemeint sein? Hast du so eine Schreibweise schon mal woanders gesehen?
Vielleicht meinst du Range("A" & i) oder Cells(i, 1)
Das waren jetzt alles nur Kleinigkeiten. Die wirkliche Frage ist:
Was willst du hier mit VBA? Wer oder was soll wann CB() starten?
Was ist vor dem Start? Passen dann xe und CheckBox-Status nicht zusammen?
Hast du dir mal angesehen, wozu und wie CheckBoxen in Excel verwendet werden?
Zu einer CheckBox gehört (meist) eine LinkedCell, in der WAHR oder FALSCH steht - je nach Zustand der CheckBox.
Und mittels der LinkedCel (hier mal Zelle C4) kannn man leicht in D5 ein x anzeigen oder nicht:
=WENN(C4;"x";"")
Wenn du damit nicht klarkommst, empfehle ich dir,
- eine kleine Beispielmappe mit wenigen CheckBoxen und dem Zielzustand zu erstellen
- deine Frage dazu möglichst präzise in einem neuen Thread zu stellen
- die Mappe dort hochzuladen
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Kopieren mehrerer Zeilen
11.02.2014 17:06:03
Shayev
Hallo Erich,
habe heute wieder was neues entdeckt, es werden beim Kopieren, die zwei letzen Spalten in der Summary Arbeitsmappe, Tabelle 2 nicht angezeigt! Wenn ich aber den Code zusammenfügen3 für den Bereich Zeilen 10 bis 15 anwende und die Kopien in der Arbeitsmappe Summary, Tabellenblatt 3 einfüge, werden die letzten zwei Spalten angezeigt! Woran könnte es liegen?
Gruß Shayev

AW: Kopieren mehrerer Zeilen
12.02.2014 19:26:57
Erich
Hi Shayev,
da ist einiges unklar.
Geht es darum, was "beim Kopieren ... angezeigt" wird? Oder darum, was nach dem Kopieren zu sehen ist?
Was sind "die zwei letzen Spalten in der Summary Arbeitsmappe, Tabelle 2"? Meinst du die Spalten XFC:XFD?
Die Codes beeinflussen die Spaltenanzeige überhaupt nicht. In den Codes geht es immer um komplette Zeilen.
Sind in der "Summary Arbeitsmappe, Tabelle 2" ("Summary.xlsm" Blatt "Tabelle2" vermutlich) Spalten ausgeblendet?
Ändert sich die Spaltenanzeige durch das Kopieren? Das würde mich wundern...
Hast du mal versucht, die Spaltenbreite einer der beiden verschwundenen Spalten zu ändern (per Hand)?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Kopieren mehrerer Zeilen
17.02.2014 17:56:57
Shayev
Hallo Erich,
danke für deine Unterstützung, habe viel gelernt! Ich habe was im Netz gefunden, es hat sich alles erübrigt, hier der Link falls jmd. Interesse hat! http://www.j-hennekes.de/1391153.htm
Gruß Shayev

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige