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

Daten aus anderem Excel kopieren_Teil2

Daten aus anderem Excel kopieren_Teil2
05.04.2017 11:43:27
Major
Hallo zusammen,
mein alter Beitrag war zwar noch nicht erledigt, aber nicht mehr "noch offen", daher geht es wohl hier weiter...
Sub a()
Const PFAD$ = "G:\Aktuelle Woche_Einzelne Excel hier einfügen\"
Const WsQ$ = "Blatt_A" 'Quell-Blatt
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WbQ As Workbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets("Blatt_B") 'Ziel-Blatt
Dim Mappe
Application.ScreenUpdating = False
Mappe = Dir(PFAD & "*.xls*", vbNormal)
Do Until Mappe = vbNullString
Set WbQ = Workbooks.Open("Datei_A")
With WbQ.Worksheets(WsQ)
'A1:Qx, x = letzte gefüllte Zelle in Q
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy
With WsZ
'Einfügen ab nächster freier Zelle in A des Zielblattes
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
(xlPasteValuesAndNumberFormats)
End With
End With
WbQ.Close False
Mappe = Dir
Loop
Set WbZ = Nothing
Set WbQ = Nothing
Set WsZ = Nothing
End Sub
Grundsätzlich funktioniert es muss ich vorneweg sagen. Nur noch nicht in der Form, wie ich es gerne hätte. Folgende Fragen/Anliegen hätte ich noch:
1. Beim starten des Makros in der Zieldatei poppt die Eingabeaufforderung auf...
Es befindet sich eine grosse Menge von Informationen in der Zwischenablage. Wollen Sie diese Informationen später in andere Programme einfügen?

Und das 12 mal nacheinander nach Bestätigung. Der gewünschte zu importierende Bereich wird dann 12 mal unterneinander eingefügt. Ich wüsste zu gerne warum das passiert. Weil 12 Quelldateien im Quellordner sind?
2. Im anderen Thread wurde gesagt, dass per "*.xls*" ich das Problem umgehen kann, dass die Quelldateien einen fixen Dateinamen brauchen, sowie dass alle Dateien im Quellordner nacheinander importiert werden können. Jedoch funktioniert das Makro bisher nur mit einer Quelldatei, wenn ich diese explizit defniere ("Datei_A").
3. Ist es mögliche das Quellformat der Zellen zu importieren? Bisher wird nur Text, also der Zellinhalt normal importiert.
Vielen Dank für Eure Hilfe!
Gruss Major

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus anderem Excel kopieren_Teil2
05.04.2017 15:40:40
Michael
Hallo!
Du solltest grds. einen Link auf den vorherigen Faden anbieten, dann tun sich einsteigende HelferInnen leichter.
Kleine Adaption bzgl. 1. und 3. - 2. kann ich aktuell nicht nachvollziehen.
Sub a()
Const PFAD$ = "G:\Aktuelle Woche_Einzelne Excel hier einfügen\"
Const WsQ$ = "Blatt_A"
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WbQ As Workbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets("Blatt_B")
Dim Mappe
Application.ScreenUpdating = False
Mappe = Dir(PFAD & "*.xls*", vbNormal)
Do Until Mappe = vbNullString
Set WbQ = Workbooks.Open("Datei_A")
With WbQ.Worksheets(WsQ)
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy _
WsZ.Cells(WsZ.Rows.Count, 1).End(xlUp).Offset(1, 0)
End With
Application.CutCopyMode = False: WbQ.Close False: Mappe = Dir
Loop
Set WbZ = Nothing
Set WbQ = Nothing
Set WsZ = Nothing
End Sub
LG
Michael
Anzeige
AW: Daten aus anderem Excel kopieren_Teil2
11.04.2017 10:09:47
Major
Hallo zusamnmen,
also mit diesem Code...
Sub a()
On Error GoTo Fehlerbearbeitung
Const PFAD$ = "G:\Aktuelle_Woche_Einzelne_Excel_hier_einfügen\"
Const WsQ$ = "Planungsmatrix" 'Quell-Blatt
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WbQ As Workbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets("Planungen") 'Ziel-Blatt
Dim Mappe
Application.ScreenUpdating = False
Mappe = PFAD & Dir(PFAD & "*.xls*", vbNormal)
Do Until Mappe = vbNullString
Set WbQ = Workbooks.Open(Mappe)
With WbQ.Worksheets(WsQ)
'A1:Qx, x = letzte gefüllte Zelle in Q
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy
With WsZ
'Einfügen ab nächster freier Zelle in A des Zielblattes
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
(xlPasteValuesAndNumberFormats)
End With
End With
WbQ.Close False
Mappe = Dir
Loop
Set WbZ = Nothing
Set WbQ = Nothing
Set WsZ = Nothing
Fehlerbearbeitung:
MsgBox ("Fehler: " & Err.Number & " - " & Err.Description)
End Sub
... erhält man Fehler 9. Index ausserhalb des gültigen Bereichs.
Es öffnet willkürlich 1 Datei und keine nachfolgende im Ordner, oder aber ohne jegliche Änderung/Anpassung alle Dateien nacheinander im Ordner (Ziel).
Mir ein absolutes Rätsel.
Habt ihr einen Tipp?
Gruss Major
Anzeige
AW: Daten aus anderem Excel kopieren_Teil2
11.04.2017 11:41:56
Major
Bzw. Fehler 1004 wenn mehrere Dateien im Quellordner sind.
Gruss Major
So, nochmal von vorn...
11.04.2017 13:03:10
vorn...
Hauptmann!
Die wild durcheinandergeposteten Code-Schnipsel (die auch nicht immer meinen Originalen entsprechen) kann und mag ich so nicht mehr kommentieren.
Erklär nochmal: Welche Aufgabe soll der Code für Dich lösen? Dann starten wir jetzt nochmal von vorne, und dann bekommst Du hoffentliche den Code, der genau das macht, ohne, dass Du selbst dann fragwürdige Anpassungen vornehmen musst, die nicht funktionieren.
LG
Michael
AW: So, nochmal von vorn...
11.04.2017 14:03:56
vorn...
Hallo Michael,
okay sorry erstmal, meine mangelnden Kenntnisse führen manchmal zu Chaos in den Beiträgen... ich arbeite daran:
In ein Excel möchte ich aus x-beliebig vielen Exceldateien aus einem bestimmten Tabellenblatt einen bestimmten Ausschnitt importieren.
Der Ordner in dem sich die ca. 9 zu importierenden Exceldateien befinden hat immer den gleichen Namen: "Aktuelle_Woche_Einzelne_Excel_hier_einfügen"
Die Exceldateien darin haben beliebige Namen, müssen jedoch alle immer genutzt werden.
Quellblatt lautet: "Planungsmatrix"
Zielblatt lautet "Planungen" und das soll der Bereich sein, in den importiert wird... Von spalte A bis Q / Zeile 1 bis letzte, nicht leere, Zeile.
Der Import von dem ersten Excel funktioniert auch, wenngleich mit einer Eingebaeaufforderung vor dem Import... "Es befindet sich eine grosse Menge von Informationen in der Zwischenablage. Wollen Sie diese Informationen später in andere Programme einfügen?"
Die zweite, dritte, vierte Excel etc. .... im Quellordner führt er nicht mehr aus, mit der Meldung: "Fehler 1004..."Dateiname" wurde nicht gefunden...Überprüfen Sie die Rechtschreibung usw."
An der Rechtschreibung liegt es aber nicht, denn diese zweite, dritte, vierte Datei...findet er, sobald sie alleine im Quellordner stehen.
Weiterhin hatte ich die Frage ob man denn nicht nur den Text, sondern auch das Format kopieren/einfügen kann.
So sieht nun aktuell der Code aus:
Sub Einzelne_Excel_einfügen()
On Error GoTo Fehlerbearbeitung
Const PFAD$ = "G:\Aktuelle_Woche_Einzelne_Excel_hier_einfügen\"
Const WsQ$ = "Planungsmatrix" 'Quell-Blatt
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WbQ As Workbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets("Planungen") 'Ziel-Blatt
Dim Mappe
Application.ScreenUpdating = False
Mappe = PFAD & Dir(PFAD & "*.xls*", vbNormal)
Do Until Mappe = vbNullString
Set WbQ = Workbooks.Open(Mappe)
With WbQ.Worksheets(WsQ)
'A1:Qx, x = letzte gefüllte Zelle in Q
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy
With WsZ
'Einfügen ab nächster freier Zelle in A des Zielblattes
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
(xlPasteValuesAndNumberFormats)
End With
End With
WbQ.Close False
Mappe = Dir
Loop
Set WbZ = Nothing
Set WbQ = Nothing
Set WsZ = Nothing
Fehlerbearbeitung:
MsgBox ("Fehler: " & Err.Number & " - " & Err.Description)
Application.ScreenUpdating = True
End Sub
Gruss Major
Anzeige
Also...
11.04.2017 15:44:40
Michael
Hallo!
Also, dieser Code...
Sub DatenAusDateienHolen()
Const PFAD$ = "G:\Aktuelle_Woche_Einzelne_Excel_hier_einfügen\" 'Pfad zu den Dateien
Const WSQUELL$ = "Planungsmatrix" 'Name Quell-Blatt
Const WSZIEL$ = "Planungen" 'Name Ziel-Blatt
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets(WSZIEL)
Dim WbQ As Workbook, Mappe$
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Mappe = Dir(PFAD & "*.xls*", vbDirectory)
Do Until Mappe = vbNullString
If Not Mappe = WbQ.Name Then
Set WbQ = Workbooks.Open(PFAD & Mappe)
With WbQ.Worksheets(WSQUELL)
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy
End With
With WsZ
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteAll
Application.CutCopyMode = False
End With
WbQ.Close False
Mappe = Dir
End If
Loop
WsZ.Activate
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
Set WbZ = Nothing
Set WsZ = Nothing
Set WbQ = Nothing
End Sub
...muss in der Mappe, in die Du importieren willst (die Ziel-Mappe), vorhanden sein.
...es muss sichergestellt sein, dass in allen Dateien des durchlaufenen Ordners ein Tabellenblatt mit Namen "Planungsmatrix" vorhanden ist, der Code prüft das aktuell nicht und läuft in einen Fehler
...ebenso muss natürlich in der Zielmappe ein Tabellenblatt "Planungen" vorhanden sein.
...übertragen wird aus den Quell-Blättern jeweils der Bereich A1:Qx, wobei x die letzte befüllte Zelle in der jeweiligen Spalte Q meint. Ist Q also zB bis Zeile 347 gefüllt, wird der Bereich A1:Q347 kopiert.
...der angegebene Quell-Ordner muss natürlich korrekt angegeben sein und existieren, auch das prüft der Code nicht
Teste den Code bitte mal so wie er ist(!), und gib Bescheid.
LG
Michael
Anzeige
AW: Also...
11.04.2017 16:11:08
Major
Hallo Michael,
Laufzeitfehler 91 - Objektvariable oder With-Blockvariable nicht festgelegt
in Zeile...
If Not Mappe = WbQ.Name Then
Was bedeutet das?
Gruss Major
AW: Also...
11.04.2017 16:19:20
Michael
Hallo!
Da ist ein Schreibfehler von mir drin, muss so lauten...
If Not Mappe = WbZ.Name Then
Das prüft, ob die gerade durchlaufene Excel-Datei nicht die Ziel-Datei ist, falls diese auch im durchlaufenen Ordner liegt - diese wird dann übersprungen.
LG
Michael
AW: Also...
11.04.2017 16:52:46
Major
Hallo Michael,
danke dir, es funktioniert.
Gleichzeitiger Import von allen Formaten und Werten ohne Formeln ist nicht möglich habe ich gelesen. Zumindest nicht in einem Schritt. Ist das korrekt?
Gruss Major
Anzeige
Hallelujah...
11.04.2017 17:09:35
Michael
Hallo!
danke dir, es funktioniert.
Gern, schwierige Geburt ;-). Im Übrigen müsstest Du an dieser Stelle das Häkchen für "noch offen" nicht mehr setzen, denn Deine Frage ist gelöst.
Ist das korrekt?
Kommt drauf an, was Du mit "in einem Schritt" meinst. Hier dafür der angepasst Code:
Sub DatenAusDateienHolen()
Const PFAD$ = "G:\Aktuelle_Woche_Einzelne_Excel_hier_einfügen\" 'Pfad zu den Dateien
Const WSQUELL$ = "Planungsmatrix" 'Name Quell-Blatt
Const WSZIEL$ = "Planungen" 'Name Ziel-Blatt
Dim WbZ As Workbook: Set WbZ = ThisWorkbook
Dim WsZ As Worksheet: Set WsZ = WbZ.Worksheets(WSZIEL)
Dim WbQ As Workbook, Mappe$
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Mappe = Dir(PFAD & "*.xls*", vbDirectory)
Do Until Mappe = vbNullString
If Not Mappe = WbZ.Name Then
Set WbQ = Workbooks.Open(PFAD & Mappe)
With WbQ.Worksheets(WSQUELL)
.Range("A1:Q" & .Cells(.Rows.Count, 17).End(xlUp).Row).Copy
End With
With WsZ
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
WbQ.Close False
Mappe = Dir
End If
Loop
WsZ.Activate
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
Set WbZ = Nothing
Set WsZ = Nothing
Set WbQ = Nothing
End Sub
Und wenn das jetzt klappt, wär's schön wenn Du diesen Faden beendest. Neue Fragen verdienen einen neuen Faden!
LG
Michael
Anzeige
AW: Hallelujah...
11.04.2017 17:23:50
Major
Hallo Michael,
okay klaro mach ich mit dem Häkchen, das nur noch.
Bekomme Laufzeitfehler 1004 "Die Paste Special-Methode des Range-Objektes konnte nicht ausgeführt werden."
Debugger: .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Wenn ich den Debugger nicht öffne, sondern "beenden" drücke, importiert er mir zuerst die Werte (ohne Werteformate) und darunter dann einzeln die Formate, aber nicht zusammen.
Gruss Major
AW: Okay, schau ich mir morgen an! owT
11.04.2017 19:18:37
Michael

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige