Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1612to1616
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

Excel VBA Leerzeilen entstehen beim Kopieren

Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 13:49:03
Torsten
Hallo zusammen,
habe folgendes Problem. Ich kopiere per VBA Daten aus mehreren normalen Excel Tabellen in verschiedenen Workbooks in eine dynamische Tabelle in einem anderen Workbook. Jetzt entstehen dort immer beim Einfuegen zig Leerzeilen. Kann mir jemand verraten, warum das passiert und wie man das umgehen kann?
Vielen Dank fuer eure Tips.

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 13:50:52
Hajo_Zi
das liegt an Deinem Code ich vermute mal Zeile 13.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 13:53:55
Torsten
Hallo Hajo,
ich glaube, du bist im falschen Beitrag.
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:11:28
Torsten
Hier mal der Code dazu, den ich benutze:
Sub Data_import()
Dim Path As String, Trackername As String
Application.ScreenUpdating = False
Path = "H:\MUS GBC Operations\Production\Tracker\RUT sub sheets\EU CENTRAL\"
Trackername = Dir(Path & "*.xlsx")
Do While Trackername  ""
Workbooks.Open Filename:=Path & Trackername
Workbooks(Trackername).Activate
Worksheets("Data UTL").Visible = True
Worksheets("Data UTL").Select
ActiveSheet.UsedRange.Select
Selection.Copy
ThisWorkbook.Activate
Worksheets("Data UTL").Select
Lrow = Sheets("Data UTL").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Data UTL").Range("A" & Lrow + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Workbooks(Trackername).Close False
Trackername = Dir()
Loop
End Sub
In dem Ordner im Pfad sind mehrere .xlsx Dateien, die nacheinander abgearbeitet werden.
Funktioniert auch alles super mit der Ausnahme, dass beim Einfuegen in die Zieldatei in der dynamischen Tabelle immer viele Leerzeilen entstehen. Ich loesche diese Leerzeilen derzeit mit einem anderen Code aber das dauert manchmal sehr lange, wenn es viele Leerzeilen gibt.
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:18:21
JoWE
Hallo Torsten,
ich vermute die Zeile "ActiveSheet.UsedRange.Select" ist ursächlich.
Halte den Code mal an dieser Stelle bei der Ausführung an und prüfe was in der Quelltabelle durch den Befehl alles markiert wurde (und dann natürlich auch kopiert würde).
Gruß
Jochen
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:32:50
Torsten
Hallo Jochen,
ja sieht so aus, als ob du recht hast. Es werden unter der benutzten Range noch weitere Zeilen markiert.
Aber warum?
Was kann ich aendern?
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:52:09
JoWE
das könnten z.B. auch Rahmenlinien sein.
Du solltest den zu kopierenden Bereich anders ermitteln.
Google mal: "Excel-vba letzte benutzte Zelle in einem Bereich ermitteln"
Gruß
Jochen
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:35:32
Daniel
Ok, jetzt die Datei.
öffne mal eine der Dateien, die du da kopierst und gehe auf das Blatt "Data UTL"
drücke die Taste STRG + ENDE, das setzt dich auf rechte untere Zelle des Bereichs, den du im Code kopierst.
Scrolle jetzt nach links bis zur Spalte A.
Wenn dort zwischen der letzten Zelle und von dir erwarteten letzten Datenzeile noch Leerzeilen auftauchen, solltest du mal überprüfen, was genau in diesen Zellen drin steht.
Wenn sie leer sind und auch keine Formel drin steht (dh wenn du so eine Zelle anklickst, ist auch die Bearbeitungszeile leer), überprüfe mal, was die Formel =IstText(A?) für so eine Zelle ein Ergebnis liefert.
Gruß Daniel
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:44:00
Torsten
Danke Daniel.
Aber =IstText ergibt in allen zusaetzlich markierten Zellen FALSE
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 15:02:01
Daniel
hast du für den Test jede Zelle einzeln getestet?
das IstText(...) darf man nur auf eine Einzelzelle anwenden und nicht auf mehrere Zellen gleichzeitig.
im Prinzip reicht es wenn du die Formel im Betroffenen Zellbereich in die Spalte B schreibst: =IstText(Axxx) und dann nach unten ziehst
Gruß Daniel
Das stimmt nur bedingt, ...
08.03.2018 15:22:28
Luc:-?
…Daniel;
ISTTEXT ist durchaus aktiv matrixformelfähig! D.h., auch in einer pluralen MatrixFml liefert ISTTEXT für jede Zelle das richtige Ergebnis. Deine Aussage stimmt bloß für eine Zusammenfassung aller Zellen in nur einem Ergebnis, wobei dieses dann auch davon abhängt, ob eine Normal- oder eine (singulare) MatrixFml benutzt wird. Das dürfte dann daran liegen, dass die Fkt nur WAHR oder FALSCH als Ergeb­nis liefern kann, im Falle eines Fehlers also eher FALSCH.
Gruß, Luc :-?
Anzeige
AW: Das stimmt nur bedingt, ...
08.03.2018 15:30:44
Daniel
Hi Luc
das war ja meine Frage, wurde jede Zelle einzeln getestet oder wurde versucht, mit einer Formel ein Gesamtergebnis für mehrere Zellen zu erstellen.
Auch die Plurale Matrixformel liefert dir kein Gesamtergebnis für alle überprüften Zellen, sondern für jede einzelne Zelle ein eigenes Ergebnis.
Gruß Daniel
Genau, das haben plurale MxFmln an sich! ;-) owT
08.03.2018 18:11:58
Luc:-?
:-?
na dann is ja jut. owt
08.03.2018 18:18:48
Daniel
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 15:43:08
Torsten
ja hab ich auch so gemacht. ergibt immer FALSE
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 15:48:19
Daniel
Hi
und was steht in der Zelle jetzt in der Originaldatei wirklich drin?
was steht in der Originaldatei in der Bearbeitungzeile, wenn du so eine Zelle anklickst?
Könnte es auch eine 0 sein, welche du per Zahlenformat oder Einstellung in den Optionen ausgeblendet hast?
Gruß Daniel
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 16:24:42
Torsten
Da steht nichts drin. Keine Ahnung warum diese mit selektiert werden
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 16:39:00
Daniel
Hi
wie gesagt, ohne die Datei zu kennen, kann man da schwer was sagen.
Du siehst ja, wie mühselig es ist, jede einzelne Möglichkeit bei dir abzufragen, ohne zu wissen, ob du die Anweisungen auch richtig befolgt hast.
Und ich hoffe, du verstehst auch, was dir Hajo (wenn auch nicht gerade durch die Blume), sagen wollte und warum das durch aus seine Berechtigung hat.
ansonsten probiers mal mit diesem Code:

Sub Data_import()
Dim Zelle As Range
Dim Path As String, Trackername As String
Path = "H:\MUS GBC Operations\Production\Tracker\RUT sub sheets\EU CENTRAL\"
Trackername = Dir(Path & "*.xlsx")
Application.ScreenUpdating = False
Do While Trackername  ""
Set Zelle = ThisWorkbook.Sheets("Data UTL").Columns(1).Find(what:="?*", _
lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious)
Workbooks.Open Filename:=Path & Trackername
Workbooks(Trackername).Worksheets("Data UTL").UsedRange.Copy
Zelle.Offset(1, 0).PasteSpecial xlPasteAll
Workbooks(Trackername).Close False
Trackername = Dir()
Loop
End Sub
der sucht jetzt nach der letzen Zelle, die einen Inhalt von mindestens einem Zeichen hat.
Wenn das auch nicht tut, kann ich dir auch nicht weiterhelfen, zumindest nicht, ohne deine Datei zu kennen.
Gruß Daniel
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 17:11:28
Torsten
Hallo Daniel,
danke dir vielmals. Werde das nochmal testen. Ich habe etwas Bedenken, die Datei hochzuladen. Bekomme sonst Trouble mit meinem IT Security Boss.
Was Hajo anbetrifft, das habe ich etwas falsch verstanden, was er mir sagen wollte. Mittlerweile hab ichs geschnallt.
Also sobald ichs getestet habe, werde ich mich wieder melden.
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 17:50:01
Daniel
Hi
für die Beispieldatei sind ja nur die unteren Zellen wichtig, nämlich die die leer aussehen, aber vom End(xlup) nicht als leer erkannt werden.
eine sicherheitskonforme Beispieldatei kannst du so erstellen:
1. markiere die erste Zelle in der letzen sinnvollen Datenzeile (also die letzte mit sichtbaren Daten)
2. drücke SHIFT+STRG+ENDE und kopiere diese Zellen in eine neue Datei in leeres Blatt
3. im Prinzip kannst du auch alle Spalten ab Spalte B löschen und die erste Zeile mit Dummywerten überschreiben.
so eine Datei enthält dann keine sensiblen Daten mehr.
Gruß Daniel
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
09.03.2018 10:36:26
Torsten
Hallo Daniel,
vielen Dank nochmals.
Nach einigem rumprobieren bin ich jetzt, inspiriert von deinem Code, zu dem Schluss gekommen, _ dass

ActiveSheet.UsedRange.Select
Selection.Copy

wohl das Problem ist. Habe das geaendert in nur noch:
ActiveSheet.UsedRange.Copy
Und siehe da, er kopiert mir wirklich nur noch den benutzten Bereich.
AW: Excel VBA Leerzeilen entstehen beim Kopieren
09.03.2018 11:10:10
Daniel
Hi
nicht nachvollziehbar.
der Code
ActiveSheet.Usedrange.select
Selection.copy

ist zwar unnötig aufwendig, sollte aber das gleiche Ergebnis bringen wie
ActiveSheet.UsedRange.Copy

Denn der Zellbereich, den du ansprichst, ist in beiden Fällen der gleiche (UsedRange)
ob ich diesen erst selektiere und dann die Selektion kopiere oder ihn gleich kopiere, darf keinen Unterschied ergeben.
Gruß Daniel
Anzeige
AW: Excel VBA Leerzeilen entstehen beim Kopieren
09.03.2018 11:32:47
Torsten
Nein sollte nicht. Scheint aber einen Unterschied zu machen. Ist moeglicherweise
ActiveSheet.UsedRange.Select

zu ungenau?
Keine Ahnung.
Jedenfalls ist es jetzt besser.
;-)
AW: Excel VBA Leerzeilen entstehen beim Kopieren
09.03.2018 13:03:04
Daniel
Hi
Activesheet.UsedRange sollte immer auf den gleichen Zellbereich verweisen.
egal ob du ein .Copy oder ein .Select damit ausführst.
Gruß Daniel
AW: Excel VBA Leerzeilen entstehen beim Kopieren
08.03.2018 14:05:35
Daniel
Hi
um dir diese Frage beantworten zu können, müsste man deinen Code und die Dateien kennen.
Ansonsten müsste man alle möglichen Fehlerursachen aufzählen und du müsstest dann jede einzelne prüfen ob sie zutrifft, aber das wäre dann doch sehr aufwendig.
eine mögliche Fehlerursache wäre, du hast dich beim Offset vertippt und machst .Offset(10, ) anstelle von .Offset(1, 0).
eine andere mögliche Fehlerursache wäre, dass die letzten eingefügten Zellen gar nicht leer sind, sondern den Text Leerstring enthalten.
Das passiert beispielsweise, wenn du Formeln mit dem Ergebnis "" kopierst und als Wert einfügst.
diese Zellen sehen zwar leer aus, aber es sind keine Leerzellen und werden von einem .End(xlup) auch nicht als solche erkannt.
ich hoffe du erkennst, dass Hajo mit seiner Antwort diesmal richtig liegt.
Ohne deinen Code und die Daten dazu zu kennen, wird das ganze ein großes Rätselraten.
und ich denke, dass dir eine schnelle und gezielte Problemlösung lieber wäre.
Gruß Daniel

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige