Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1212to1216
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 in andere Mappe kopieren

Daten in andere Mappe kopieren
Stefan
Hallo,
mir wurde hier schon oft sehr gut geholfen.
ich habe nachfolgendes Problem:
ich habe 2 Listen hochgeladen, Quelltabelle: "Beispiel.xlsm"; Zieltabelle: "Zieltabelle.xlsx"
folgende Daten sollen von der Quelltabelle (Blatt "Verteiler") in die Zieltabelle übertragen werden:
Quelltabelle:
https://www.herber.de/bbs/user/74943.xlsm
Zieltabelle:
https://www.herber.de/bbs/user/74944.xlsx
1. Spalte D unter Überschrift "EP Mitglied" (Quelltabelle) nach "Auftraggeber" (Zieltabelle)
2. "Artikel-Nr." nach "Artikel"
3. "Bestellmenge" nach "Auftragsmenge"
4. "Listen EK" nach "Nettopreis"
Das Problem ist, daß die Daten, die in "Bestellmenge", "Artikel-Nr" und Listen-EK" stehen verbundene Zellen sind.
Die Zeilen, in denen bei "Bestellmenge" (Quelltabelle) bzw. entsprechend "Auftragsmenge" (Zieltabelle) leer sind sollen gelöscht werden.
zu beachten:
die hochgeladenen Listen sind Beispiellisten. In den Listen, die ich täglich erhalte variiert die Anzahl der
Einträge (z.Bsp. "EP Mitglied" oder "Artikel-Nr").
Ich habe ein Makro in der Quelltabelle aufgezeichnet. Dieses steht in VBA Project (PERSONAL.xlsb) Module Modul1. Ich hoffe es wird dadurch etwas einfacher.(Dabei habe ich nur die ersten drei Artkel-Nr. aufgezeichnet und nicht alle sieben von dieser Beispielliste)
Nachtrag: Da ich beim Hochladen der Zieldatei eine Meldung bekam, daß die Dateibenennung falsch ist habe ich die Zieldatei von ursprünglich "ZVA01N_K+P_Vorlage.xlsx" in "Zieltabelle.xlsx" umbenannt.
Deshalb hier noch mal der aufgezeichnete Code nach der Namensänderung.
Sub Makro1()
' Makro1 Makro
' Tastenkombination: Strg+a
' 20.05.2011
Windows("Beispiel.xlsm").Activate
Range("D41:D62").Select
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("G12:P12").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("N2:N23").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("K41:P62").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("O2:O23").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("G14:P14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("P2:P23").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("D41:D62").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("E24").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("R12:AA12").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("N24:N45").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("V41:AA62").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("O24:O45").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("R14:AA14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("P24:P45").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("D41:D62").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("E46").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("AC12:AL12").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("N46:N67").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("AG41:AL62").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("O46:O67").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Beispiel.xlsm").Activate
Range("AC14:AL14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("P46:P67").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub

Ich hoffe das Problem ist verständlich dargestellt.
Viele Grüße
Stefan
AW: Daten in andere Mappe kopieren
20.05.2011 11:45:29
Dominik
Hi,
habe leider gerade keine Zeit deine Makro komplett zu schreiben.
Aber hier schonmal ein kleiner Tipp, wieso springst du immer zwischen den Dateien hinundher, kannst ja auch direkt drauf zugreifen --> weniger Tipparbeit + bessere Performance
Beispiel dein Code:
Windows("Beispiel.xlsm").Activate
Range("D41:D62").Select
Selection.Copy
Windows("Zieltabelle.xlsx").Activate
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Beispiel vereinfacht:
Sub Einfacher()
Workbooks("Beispiel.xlsm").Worksheets("Sheet1").Range("D41:D62").Copy
Workbooks("Zieltabelle.xlsx").Worksheets("Verteiler").Range("E2").PasteSpecial Paste:= _
xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

Außerdem würde ich dir empfehlen mit Schleifen & Variablen auf die Spalten/Zeilen zu arbeiten, damit musst du den fast identischen Code nicht öfter als einmal schreiben.
Anzeige
AW: Daten in andere Mappe kopieren
20.05.2011 11:56:50
Stefan
Hallo,
vielen Dank schon mal für den Tip. Aber ich verfüge leider kaum über Kenntnisse mit VBA.
Viele Grüße
Stefan
AW: Daten in andere Mappe kopieren
21.05.2011 14:56:53
fcs
Hallo Stefan,
um das Problem mit den verbundenen Zellen zu umgehen, müssen die Daten zellenweise ins Zielblatt übertragen werden. Da für jeden Artikel die gleiche Anzahl Spalten benutzt wird, kann man mit For-Next-Schleifen arbeiten, um die Daten der 7 Artikel ins Zielblatt zu übertragen.
Beim Start des Makros muss die Mappe mit den Quelldaten aktiv sein.
Gruß
Franz
Sub Daten_nach_Ziel()
Dim wbQuelle As Workbook, wbZiel As Workbook
Dim wksQuelle As Worksheet, wksZiel As Worksheet
Dim Zeile As Long, Spalte As Long, Zeile_L As Long, Art_Zaehler As Long
Dim Zeile_Z As Long
Const Anz_Artikel As Long = 7
'Zeilen-/Spaltenvorgaben im Quell-Tabellenblatt
Const ZeileArtikel As Long = 12       'Zeile mit Artikelnummern
Const ZeileNettoEK As Long = 28       'Zeile mit Netto EK-Preisen
Const ZeileFiliale_1 As Long = 41     'Zeile mit Daten der 1. Filiale
Const Spalte_EP = 4                   'Spalte D - EP-Mitglied
Const Spalte_Art_1 = 7                'Spalte G - Spalte 1. Artikel
Const Spalte_Menge_1 As Long = 11     'Spalte K - Spalte Menge 1. Artikel
Const AnzSpalten_Artikel As Long = 11 'Anzahl Spalten pro Artikel
'Zeilen-/Spaltenvorgaben im Ziel-Tabellenblatt
Const Spalte_AG = 5                   'Spalte E - Auftraggeber
Const Spalte_Art_Z = 14               'Spalte N - Artikel
Const Spalte_Menge_Z As Long = 15     'Spalte O - Spalte Auftragsmenge
Const Spalte_EK_Z As Long = 16        'Spalte P - Spalte Nettopreis
'Arbeitsmappe mit Quelldaten
Set wbQuelle = ActiveWorkbook
Set wksQuelle = wbQuelle.Worksheets("Verteiler")
'Arbeitsmappe mit Zieldaten
Set wbZiel = Workbooks("ZielStefan.xlsx")                         'anpassen !!!!!!!
Set wksZiel = wbZiel.Worksheets(1) '1. Tabelenblatt in Zieldatei  'ggf. anpassen !!
'Letzte belegte Datenzeile in Zieltabelle
With wksZiel
Zeile_Z = .Cells(.Rows.Count, Spalte_AG).End(xlUp).Row
End With
With wksQuelle
'Zeile mit letzter Filiale
Zeile_L = .Cells(ZeileFiliale_1, Spalte_EP).End(xlDown).Row
'Artikel abarbeiten
For Art_Zaehler = 1 To Anz_Artikel
'Spalten-Offset zur Spalte des 1. Artikels
Spalte = (Art_Zaehler - 1) * AnzSpalten_Artikel
'Daten der Filialen übertragen
For Zeile = ZeileFiliale_1 To Zeile_L
'Prüfen, ob Bestellmenge > 0
If .Cells(Zeile, Spalte + Spalte_Menge_1) > 0 Then
Zeile_Z = Zeile_Z + 1
wksZiel.Cells(Zeile_Z, Spalte_AG) = .Cells(Zeile, Spalte_EP)
wksZiel.Cells(Zeile_Z, Spalte_Art_Z) = .Cells(ZeileArtikel, Spalte + Spalte_Art_1)
wksZiel.Cells(Zeile_Z, Spalte_Menge_Z) = .Cells(Zeile, Spalte + Spalte_Menge_1)
wksZiel.Cells(Zeile_Z, Spalte_EK_Z) = .Cells(ZeileNettoEK, Spalte + Spalte_Art_1)
End If
Next
Next
End With
Set wbQuelle = Nothing: Set wbZiel = Nothing
Set wksQuelle = Nothing: Set wksZiel = Nothing
End Sub

Anzeige
AW: Daten in andere Mappe kopieren
22.05.2011 11:03:50
Stefan
Hallo,
Vielen Dank erstmal. Du hast mir schon sehr geholfen. Kann man den Code so modifizieren, daß er die Zieldatei aufruft, automatisch im Hintergrund öffnet und wieder schließt? Das Problem ist folgendes:
Ich erhalte regelmäßig Dateien wie die Quelldatei also gleiche Struktur, nur unterschiedliche Menge an Daten, zum Beispiel varriiert die Menge der Artikel-Nummern (anstatt wie in der hochgeladenen Datei sieben können es mehr oder weniger sein) oder auch die Menge der EP-Mitglieder variiert. Diese Dateien stehen in einem bestimmten Verzeichnis.
Der Code soll nun aus einer Excel-Datei heraus (z.Bsp. durch klick auf einen Button) die Dateien in diesem Verzeichnis der Reihe nach aufrufen und abarbeiten. Die schon abgearbeiteten Dateien werden dann in ein anderes Verzeichnis ausgeschnitten (dieses kann aber manuell erfolgen).
Ist das möglich?
Vielen Dank
Stefan
Anzeige
AW: Daten in andere Mappe kopieren
22.05.2011 17:21:10
Stefan
Hallo Franz,
in meinem letzten posting habe ich etwas vergessen. Um Mißverständnissen vorzubeugen hier das vollständige:
Kann man den Code so modifizieren, daß er die Zieldatei aufruft, automatisch im Hintergrund öffnet und wieder schließt? Das Problem ist folgendes:
Ich erhalte regelmäßig Dateien wie die Quelldatei also gleiche Struktur, nur unterschiedliche Menge an Daten, zum Beispiel varriiert die Menge der Artikel-Nummern (anstatt wie in der hochgeladenen Datei sieben können es mehr oder weniger sein) oder auch die Menge der EP-Mitglieder variiert. Diese Dateien stehen in einem bestimmten Verzeichnis.
Der Code soll nun aus einer Excel-Datei heraus (z.Bsp. durch klick auf einen Button) die Dateien in diesem Verzeichnis der Reihe nach aufrufen und abarbeiten, die entsprechenden Ergebnisdateien selbst erstellen und in dem gleichen Verzeichnis ablegen. Die schon abgearbeiteten Dateien werden dann in ein anderes Verzeichnis ausgeschnitten (dieses kann aber manuell erfolgen - Mit abarbeiten meine ich entprechend dem Code, den du mir oben zur Verfügung gestellt hast).
Ist das möglich?
Vielen Dank
Stefan
Anzeige
AW: Daten in andere Mappe kopieren
23.05.2011 00:00:06
fcs
Hallo Stefan,
deine Wunschliste kann man komplett umsetzen.
Ich hab aber noch Fragen:
Soll für jede Quelldatei im Verzeichnis eine Zieldatei angelegt werden oder alle Daten in eine Zieldatei übertragen werden?
Der Name der Zieldatei(en) soll automatisch vergeben werden. Wie soll der Dateiname der Zieldateien aussehen? Quellname + Zusatz? Name + Zählnummer
In welches Verzeichnis sollen die Quelldateien verschoben werden?
Gruß
Franz
AW: Daten in andere Mappe kopieren
23.05.2011 00:57:11
Stefan
Hallo Franz,
Vielen Dank für deine Hilfe nochmal.
1. Es soll für jede Quelldatei im Verzeichnis eine Zieldatei angelegt werden.
2. Der Name der Zieldatei: Quellname + timestamp (wenn möglich)
3. Das Verzeichnis in das die Quelldateien verschoben werden sollen weiß ich im Moment ehrlich gesagt noch nicht. Aber vorerst ist "\\malibu\Projekte\SAP\300_Test\2011\". Kann ich das noch später anpassen?
4. Das Verzeichnis der Quelldateien kann ich im Moment auch noch nicht sagen, da das nicht von mir abhängt. Kann ich das auch noch später anpassen?
Vielen Dank
Grüße
Stefan
Anzeige
AW: Daten in andere Mappe kopieren
23.05.2011 10:29:04
fcs
Hallo Stefan,
hier eine Steuerungsdatei mit den erforderlichen Makros.
Für die Auswahl der Verzeichnisse und des Musters für die Zieldatei sind eigene Schaltflächen vorhanden.
https://www.herber.de/bbs/user/74964.xlsm
Gruß
Franz
AW: Daten in andere Mappe kopieren
23.05.2011 13:42:06
Stefan
Hallo Franz,
könntest du mir, bitte, kurz die Schritte sagen wie ich vorgehen soll?
also zuerst wähle ich mit dem Button "Verzeichnis Quelldateien auswählen" das entsprechende Verzeichnis aus und dann betätige ich den Button "Daten aus Quelle nach Ziel übertragen" aus?
Sorry für die Frage. Ist für dich sicher lästig aber irgendwie bin ich wohl zu blöd :-).
Grüße
Stefan
Anzeige
AW: Daten in andere Mappe kopieren
23.05.2011 18:53:39
fcs
Hallo Stefan,
Schritt 1:
Muster-Datei (Ziel-Datei) auswählen, in die die Daten übertragen werden sollen
Dies sollte eine einmalige Aktion sein.
Schritt 2:
Verzeichnis mit den Quelldaten auswählen
Schritt 3:
Neues Verzeichnis für die Quelldateien auswählen
Schritt 4:
Daten aus Quellen nach Ziel übertragen
Gruß
Franz
AW: Daten in andere Mappe kopieren
24.05.2011 16:45:52
Stefan
Hallo Franz,
Vielen Dank. Ich werds ausprobieren und Rückmeldung geben.
Viele Grüße
Stefan
AW: Daten in andere Mappe kopieren
25.05.2011 06:43:32
Hajo_Zi
Hallo Stefan,
warum offen? Du willst doch Rückmeldung geben.

Anzeige
AW: Daten in andere Mappe kopieren
25.05.2011 12:50:04
Stefan
Hallo,
ja, stimmt, sorry. Ich hoffe ich komme heute noch zum testen. Spätestens morgen vormittag.
Und nochmal Vielen Dank für die Hilfe.
Grüße
Stefan
AW: Daten in andere Mappe kopieren
26.05.2011 08:36:56
Stefan
Hallo Franz,
erst mal Entschuldigung für die späte Antwort. Ich habe versucht nach deinen Anweisungen zu testen.
Funktioniert leider nicht.
Bei Betätigen des Buttons "Verzeichnis mit Quelldateien auswählen" erhalte ich eine Maske mit der Überschrift "Bitte Verzeichnis mit Datendateien auswählen". Wenn ich in dieser Maske das entsprechende Verzeichnis auswähle erscheinen aber keine Excel-Dateien.
Hast du hierfür eine Lösung?
Ich habe auch noch eine Datei hochgeladen, die zwar inhaltlich mit diesem Thema nichts zu tun hat. Ich wollte nur veranschaulichen wie ich mir die Lösung vorstelle (falls dies hier möglich ist). Sozusagen als Idee. Vielleicht hilft es etwas. In dieser Datei ist ein Start Button und, wenn der geklickt wird erzeugt das Programm eine Ergebnisdatei, beginnt ein Verzeichnis zu durchlaufen, nimmt sich in diesem Verzeichnis alle Ordner, bearbeitet diese nach bestimmten Vorgaben des Programms und schreibt das Ergebnis in die erzeugte Ergebnisdatei (wie gesagt nur als Idee).
https://www.herber.de/bbs/user/75015.xls
Ich hoffe ich bin damit nicht zu lästig. Aber mir wurde hier immer hervorragend geholfen.
Viele Grüße
Stefan
Anzeige
AW: Daten in andere Mappe kopieren
26.05.2011 22:23:04
fcs
Hallo Stefan,
schau mal hier in deine Anforderungsliste: https://www.herber.de/forum/messages/1215482.html
Die Dateien im Verzeichnis sollen der Reihe nach abgearbeitet werden.
Das macht mein Makro es verarbeitet alle Excel-Dateien im Quellverzeichnis.
Deshalb hab ich auch "nur" die Auswahl des Verzeichnisses als Dialog eingebaut.
Natürlich kann man auch mit einer Datei-Auswahl arbeieten, das erfordert ein paar Anpassungen.
Hier die Datei angepasst mit Auswahl der Quelldateien. Die gewählten Daten werden dann gelistet.
https://www.herber.de/bbs/user/75031.xlsm
Gruß
Franz
Anzeige

297 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige