Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
968to972
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
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ganze Zeile per Makro kopieren

Ganze Zeile per Makro kopieren
16.04.2008 08:05:03
Thomas
Hallo,
ich will über ein Makro eine neue Excel datei erstellen und aus der alten eine Zeile in die neue Datei kopieren, aber irgendwie klappt das nicht.

Sub konsolidiere()
Dim kosten As Worksheet, entlastungen As Worksheet
Set kosten = Worksheets("Kosten")
Set entlastungen = Worksheets("Entlastungen")
'Neue Excel Datei erstellen
Set wso = CreateObject("Wscript.Shell")
Set startxls = CreateObject("Excel.Application")
startxls.Visible = True
Set Sum = startxls.Workbooks.Add()
anwendungen = 0
Sum.Sheets(1).Delete
Sum.Sheets(1).Delete
Sum.Sheets(1).Name = "Information"
lines_kosten = kosten.Cells(65536, 2).End(xlUp).Row 'Gesamtzeilen Tabelle "Kosten"
For i = 6 To 10
If kosten.Cells(i, 2)  "" Then
Sum.Sheets.Add
anwendungen = anwendungen + 1
tabellenname = Replace(kosten.Cells(i, 2), "/", " ")
Sum.Sheets(1).Name = tabellenname
       kosten.Rows(2).Copy startxls.Sheets(1).Rows(2)
End If
Next i


Haken tuts an der markierten Stelle. Jmd eine Idee?
Danke!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 08:09:28
Beverly
Hi Thomas,

kosten.Rows(2).EntireRow.Copy startxls.Sheets(1).Rows(2)




AW: Ganze Zeile per Makro kopieren
16.04.2008 08:15:00
Thomas
Hallo Karin,
danke erstmal. Allerdings bekomm ich diesen Fehler:

Laufzeitfehler '1004':
Die Copy-Methode des Range-Objektes konnte nicht ausgeführt werden.


Grüße

AW: Ganze Zeile per Makro kopieren
16.04.2008 09:22:36
Beverly
Hi Thomas,
hat es einen besonderen Grund, weshalb du eine neue Excel-Instanz öffnest? Man kann doch auch in der vorhandenen Instanz eine neue Arbeitsmappe erstellen

Sub konsolidiere()
Dim kosten As Worksheet, entlastungen As Worksheet
Set kosten = Worksheets("Kosten")
Set entlastungen = Worksheets("Entlastungen")
'Neue Excel Datei erstellen
Set Sum = Workbooks.Add()
anwendungen = 0
Sum.Sheets(1).Delete
Sum.Sheets(1).Delete
Sum.Sheets(1).Name = "Information"
lines_kosten = kosten.Cells(65536, 2).End(xlUp).Row 'Gesamtzeilen Tabelle "Kosten"
For i = 6 To 10
If kosten.Cells(i, 2)  "" Then
Sum.Sheets.Add
anwendungen = anwendungen + 1
tabellenname = Replace(kosten.Cells(i, 2), "/", " ")
Sum.Sheets(1).Name = tabellenname
kosten.Rows(2).Copy Sum.Sheets(1).Cells(2, 1)
End If
Next i
End Sub




Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 09:34:00
Thomas
Hi!
Ich wusste es einfach nicht besser =) Wenn das so geht, ists natürlich suppi!
Problem ist jetzt nur noch, beim löschen der Tabellenblätter (die am Anfang standardmäßig erstellt wurden) kommt jetzt immer ein fenster ob ich die wirklich löschen möchte. kann ich das irgendwie unterbinden?
Ansonsten funktioniert es super! Danke!

AW: Ganze Zeile per Makro kopieren
16.04.2008 09:58:12
Beverly
Hi Thomas,
es hätte ja sein können, dass du einen triftigen Grund dafür hast und ich wollte dir nicht unbedingt etwas anderes einreden. Aber wenn es auch so geht, dann ist es ja Ok.
Zum Abstellen der Fehlermeldung kannst du diese Codezeile verwenden

Application.DisplayAlerts = False


Am Ende dann wieder auf True.



Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 10:20:26
Thomas
Perfekt, vielen Dank!
Gilt dann als Erledigt =)

AW: Ganze Zeile per Makro kopieren
16.04.2008 10:49:34
Thomas
Ach mist, jetzt habe ich noch ein neues Problem:
An dieser Stelle:

Sum.Sheets(1).Name = tabellenname


wird den neuen Tabellenblättern ein Name aus der alten Excel Datei zugeordnet. Allerdings scheint es manche Stellen zu geben, wo der Anwendungsname doppelt ist, dadurch würde eine 2 Tabelle mit einem namen, den es schon gibt angelegt werden. Das gibt einen Error aus und die Prozedur bricht ab.
Ich möchte jetzt hinzufügen, dass wenn ein Error beim anlegen eintritt einfach eine fortlaufende Zahl drangehängt werden soll.
Kann mir da jemand weiterhelfen?

Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 11:11:18
Thomas

On Error Resume Next
If Sum.Sheets(1).Name  tabellenname Then
Sum.Sheets(1).Name = tabellenname & " 02"
End If


So hab ichs nun gelöst. Allerdings wenns die 02 schon gibt ists auch wieder schlecht =)

AW: Ganze Zeile per Makro kopieren
16.04.2008 11:55:17
Beverly
Hi Thomas,
laufe, bevor du die Tabelle erstellst, in einer Schleife über alle Tabellenblätter und prüfe, ob es schon vorhanden ist. Wenn ja, dann Prozedur verlassen, wenn nein, dann weiter

Sub tabelle_pruefen()
Dim wsTabelle As Worksheets
For Each wsTabelle In Worksheets
If wsTabelle.Name = "Tabelle1" Then
MsgBox "Tabelle1 schon vorhanden"
Exit Sub
End If
Next wsTabelle
'   und hier dein weiterer Code
End Sub




Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 14:21:32
Thomas
Mh, okay. Ich habs jetzt aber ein wenig anders gelöst, weils jetzt ne Planänderung gab, dass gleiche Anwendungen nur in eine Tabelle sollen. Soweit so gut, das klappt.
Jetzt hab ich ganz am Ende einen Teil, der jede erstellte Tabelle in der neuen Excel Datei durchgehen soll und alles in einer Spalte zusammenrechnen soll.

Dim wsTabelle As Worksheet
For Each wsTabelle In Sum.Worksheets
linesthisapp = Sum.Worksheets(wsTabelle).Cells(65536, 11).End(xlUp).Row
sum_m1 = 0
sum_m2 = 0
sum_m3 = 0
sum_ges = 0
For i = 3 To linesthisapp
sum_m1 = sum_m1 + Sum.Worksheets(wsTabelle).Cells(i, 8)
sum_m2 = sum_m2 + Sum.Worksheets(wsTabelle).Cells(i, 9)
sum_m3 = sum_m3 + Sum.Worksheets(wsTabelle).Cells(i, 10)
sum_ges = sum_ges + Sum.Worksheets(wsTabelle).Cells(i, 11)
Next i
Sum.Worksheets(wsTabelle).Cells(linesthisapp + 2, 7) = "Summe:"
Sum.Worksheets(wsTabelle).Cells(linesthisapp + 2, 8) = sum_m1
Sum.Worksheets(wsTabelle).Cells(linesthisapp + 2, 9) = sum_m2
Sum.Worksheets(wsTabelle).Cells(linesthisapp + 2, 10) = sum_m3
Sum.Worksheets(wsTabelle).Cells(linesthisapp + 2, 11) = sum_ges
Next wsTabelle


Bekomme leider an markierter Stelle den Error:


Laufzeitfehler '13': Typen unverträglich


Eine Idee?

Anzeige
AW: Ganze Zeile per Makro kopieren
16.04.2008 14:30:00
Beverly
Hi Thomas,
wie viele Zeilen sind in Spalte 11 und wie ist linesthisapp dimensioniert? Ich hoffe mit Long?


AW: Ganze Zeile per Makro kopieren
17.04.2008 07:54:00
Thomas
Guten Morgen,
Sind ungefähr 20 Zeilen, hatte sie gar nicht dimensioniert, aber auch mit Long bekomme ich den glecihen Fehler.
Grüße

AW: Ganze Zeile per Makro kopieren
17.04.2008 08:16:00
Thomas
Gelöst!!!

Dim wsTabelle As Worksheet, lines As Long
For Each wsTabelle In Sum.Worksheets
        wsTabelle.Activate
Name = Sum.ActiveSheet.Name
lines = Sum.Worksheets(Name).Cells(65536, 11).End(xlUp).Row


=) so gehts!

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige