Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1920to1924
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

Kopierte Daten werden nicht eingefügt

Kopierte Daten werden nicht eingefügt
06.03.2023 15:54:41
Friederich
Hallo, ich schon wieder....
Ich muss aus mehreren Dateien im ersten Arbeitsblatt Daten kopieren (ohne Haeder) und in eine Datei im Arbeitsblatt BÜ-Tool einfügen. Dafür habe ich folgenden Code geschrieben. Leider kopiert der (warum auch immer) die Daten nicht in mein Worksheet. Findet jemand den Fehler? Ganz lieben Dank für die Hilfe.
Sub BÜTool_Zusammenfügen_Klicken()
Dim arrDateien As Variant
Dim wbQuelle As Workbook
Dim LetzteZeile As Long
Dim cntDatei As Long
Dim rngQuelle As Range

'Screenupdating und Popups deaktivieren:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Datei auswählen
arrDateien = Application.GetOpenFilename(FileFilter:="Excel-Dateien (*.xls*), *.xls*", MultiSelect:=True)
'ist eine Datei ausgewählt?
If IsArray(arrDateien) Then

'Schleife über ausgewählten Dateien
For cntDatei = 1 To UBound(arrDateien)
LetzteZeile = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row


'Mappe öffnen
Set wbQuelle = Workbooks.Open(Filename:=arrDateien(cntDatei))

'Daten Range setzen:

Set rngQuelle = wbQuelle.Worksheets(1).Range("B2").CurrentRegion

'Daten kopieren und einfügen

Intersect(rngQuelle, rngQuelle.Offset(1, 0)).Copy

ThisWorkbook.Worksheets("BÜ-Tool").Range("A" & LetzteZeile + 1).PasteSpecial


'Mappe schließen

wbQuelle.Close SaveChanges:=False

Next cntDatei

End If
'Screenupdating und Popups aktivieren:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopierte Daten werden nicht eingefügt
06.03.2023 16:04:25
Rudi
Hallo,
ist denn Worksheets("BÜ-Tool")=Worksheets(1)?
LetzteZeile = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
ThisWorkbook.Worksheets("BÜ-Tool").Range("A" & LetzteZeile + 1).PasteSpecial
Gruß
Rudi
AW: Kopierte Daten werden nicht eingefügt
06.03.2023 21:04:25
Friederich
BÜ-Tool ist das Arbeitsblatt wo es reinkopiert werden soll, Worksheet(1) ist das erste Blatt in den verschiedenen Dateien, aus welchen ich die Daten kopieren.
AW: Kopierte Daten werden nicht eingefügt
06.03.2023 22:54:00
Yal
Hallo Friederich,
Es fehlt nach dem PasteSpecial einen "xlPasteValues". PasteSpecials scheint keine "Default-Value" zu kennen.
Ansonsten ist in deinem Code per se kein Fehler direkt zu erkennen.
Wie Rudi es bereit entdeckt hat, ist es verwirrend die letzte Zeile über "Worksheets(1)" zu ermitteln, un diese in "Worksheets("BÜ-Tool") " zu verwenden, aber muss nicht ein Fehler sein.
Ich habe zusätzlich einen "Petzer" dazwischen reingebracht: es wird im Direktfenster pro Schleife die entsprechende Werte herausgegeben.
Ansonsten könntest/solltest Du im Schritt Modus laufen lassen. Application.GetOpenFilename schient aber diese Schritt-Modus auszusetzen, einfach direkt danach einen Breakpoint setzen.
Sub BÜTool_Zusammenfügen_Klicken()
Dim Dat
Dim rgQ As Range
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    For Each Dat In Application.GetOpenFilename(FileFilter:="Excel-Dateien (*.xls*), *.xls*", MultiSelect:=True)
        With Workbooks.Open(Dat)
            Set rgQ = .Worksheets(1).Range("B2").CurrentRegion
            Set rgQ = Intersect(rgQ, rgQ.Offset(1, 0))
        Debug.Print Dat, .Worksheets(1).Name, rgQ.Rows.Count, rgQ.Columns.Count
            rgQ.Copy 'ohne die erste Zeile
            ThisWorkbook.Worksheets("BÜ-Tool").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
            .Close SaveChanges:=False
        End With
    Next Dat
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
VG
Yal
Anzeige
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 12:30:22
Friederich
Da ist der Fehler drin:
ThisWorkbook.Worksheets("BÜ-Tool").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
An der Stelle müsste das Programm das Arbeitsblatt BÜ-Tool in der Zieldatei wieder öffnen und die Daten reinkopieren und zwar unter den bereits vorhandenen. Dieser Sprung zurück passiert nicht. Wie aktiviere ich das Blatt in der Datei BÜ-Tool-Bearbeitung, Blatt BÜ-Tool? (Die Blätter wo er die Daten her hat, heißen auch BÜ-Tool, deshalb gibt er wohl keinen Fehler aus , oder?)
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 13:07:39
Rudi
Hallo,
da ist kein Fehler drin.
Es wird in das Worksheet BÜ-Tool in der Datei mit dem Makro kopiert.
Gruß
Rudi
Anzeige
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 14:29:04
Friederich
Warum sehe ich dann nichts? Er markiert und springt nicht in das Arbeitsplatt wo er einfügen soll. Ich verzweifele.
und springt nicht
07.03.2023 14:39:35
Rudi
in VBA muss man nicht 'springen'.
Ordentliche Referenzierung auf das Zielobjekt ist ausreichend.
Gruß
Rudi
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 14:59:45
Daniel
wie gesagt, bei vollständiger Referenzierung ist ein rumspringen nicht notwendig.
Für Testzwecke kann man sich das "rumpspringen" natürlich einbauen.
Wenn du testen willst, an welcher Stelle die Daten eingefügt werden, dann kann du im Code diese Zeile zusätzich einfügen (und dann wieder löschen, wenn es funktioniert):
Application.Goto ThisWorkbook.Worksheets("BÜ-Tool").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
ThisWorkbook.Worksheets("BÜ-Tool").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
also "Appication.Goto" ist die neue Zeile und die fügst du dann vor dem Einfügen der Daten ein.
wenn du dann im Einzeltstepmodus durch deinen Code klickst, solltest du das "rumspringen" sehen und es sollte die Zelle markiert sein, in die die Daten eingefügt werden.
Gruß Daniel
Anzeige
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 15:41:51
Friederich
Jetzt sehe ich dass er richtig springt aber fügt die Daten nicht ein.
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 15:54:56
Friederich
Was macht er denn in der Zeile?
Debug.Print Dat, .Worksheets(1).Name, rgQ.Rows.Count, rgQ.Columns.Count
Ich versuche nur den Fehler zu finden
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 16:27:00
Daniel
Debug.Print zeigt die angegebenen Werte im Direktfenster an.
Gruß Daniel
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 18:42:22
Severine
Danke für die nette Antwort. Man lernt nicht aus (als Anfänger besonders)
nicht mehr offen (owT)
08.03.2023 09:02:33
Pierre
Lesen gefährdet die ... (zweite mal)
07.03.2023 17:42:38
Yal
in dem Beitrag demjenigen, der diese Zeile in deinen Code reingebracht hat (das war ich), war auch folgendes zu lesen:
"Ich habe zusätzlich einen "Petzer" dazwischen reingebracht: es wird im Direktfenster pro Schleife die entsprechende Werte herausgegeben."
Dann fragt man schnell seinen Lieblingssuchmaschine mit den stichwörter: vba direktfenster
Wobei die Suche nach "vba debug.print" auch erstaunlich zielführend gewesen wäre.
Es kann passieren, dass man in der Aufregung des Moments etwas überliest, aber diese Gewonnheit, etwas zu überlesen, ist bei Programmiertätigkeit eine sehr kontraproduktive Eigenschaft, die man schnellsten bekämpfen muss.
Ich wollte es gesagt haben, sodass bei jeder treffenden Situation diese Wörte Dir wieder einfallen. Ich wünsche Dir, dass es nicht allzu oft vorkommt ;-)
VG
Yal
Anzeige
AW: Lesen gefährdet die ... (zweite mal)
07.03.2023 18:32:51
Severine
Danke. Ich habtte es gegoogelt und leider nicht auf anhieb verstanden. Deshalb die Frage. Bin Anfängerin und bringe mir vba gerade selbst bei. Da war es einfach aus Verzweiflung schneller meine Frage zu stellen. Ist wohl nicht gewünscht. Merke ich mir. Problem habe ich selbst gelöst.
eine Entschuldigung
08.03.2023 09:28:48
Yal
Hallo Friederich/Severine, Bonjour,
nicht erschrecken, jede Frage sind willkommen. Mit der Bitte um Entschuldigung für meine freche Antworte (ich hätte mehr Smiley platzieren müssen :-)
Ich benutze gern -vielleicht ein bisschen zu gern- die Provokation, um Tatsachen klaruzustellen: Computer sind doof. Daher muss man extrem präzis mit denen kommunizieren/programmieren. Das "so habe ich es nicht gemeint" oder "das ist aber doch klar, was zu verstehen ist" oder "Ups, überlesen, sorry" funktioniert mit denen nicht. Diese für ein Programmierer notwendige Genauigkeit (oder eben fehlende) erscheint meistens auch andere Stellen. Daher meinte ich -auch eine Frechheit von mir-, dass es hilreich wäre, Dir einen "Stupser" in der Richtung zu geben. Wie ich das übermittle, muss ich wohl noch nachfeilen (nicht dein Fehler sondern meine ;-)
Wenn Du etwas gegoogelt und nicht verstanden hast, dann erwähne es. Je mehr gezeigt wird, dass man vorgeleistet hat, desto höher die Hilfsbereitschaft.
VG
Yal
Anzeige
AW: eine Entschuldigung
09.03.2023 09:10:19
Friederich
Hallo Yal,
ganz lieben Dank für deine Klarstellung und Entschuldigung. Ich war von dem Forum die "freche" Antwort nicht gewohnt. Aber du hast ja auch recht. Ich dachte ich halte mich kurz, damit man nicht vom "Roman" erschlagen wird. Ich werde mir angewöhnen, meine Gedanken und bisherigen Suchen und Misserfolge bei meinen Anfragen mit aufzuführen.
Danke für deine nette Antwort.
Freundliche Grüße
Friederich
AW: Kopierte Daten werden nicht eingefügt
07.03.2023 16:07:15
Friederich
Ich habs, warum auch immer hat er die ganze Zeit richtig gearbeitet aber außerhalb meines Sichtfeldes, Zeile 350 und weiter. Danke euch
Lesen gefährdet die ...
07.03.2023 17:25:53
Yal
Hallo Friederich,
was bedeutet deiner Meinung nach
Application.ScreenUpdating = False
Könnte es damit zu tun, dass Änderung gemacht werden, diese aber nicht sofort sichtbar sind?
Natürlich ist es keine Sünde "Anfänger" zu sein, aber genau wenn man noch nicht genug wissen hat, sollte man die Einzelteil des Gesamtes genau betrachten.
VG
Yal
Anzeige
AW: Lesen gefährdet die ...
07.03.2023 18:40:24
Severine
Ich hatte diesen Befehl eingeführt aus einer Beispiel Programmierung. Da hieß es nur damit der Bildschirm nicht flackert. Was da wirklich geschieht habe ich jetzt nachgelesen. Dänke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige