Kopieren zwischen 2 Arbeitsmappen

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Kopieren zwischen 2 Arbeitsmappen

    Hallo liebe Community,
    ich habe ein für euch vielleicht zu triviales Problem. Gleich mal vorweg: Meine VBA Kenntnisse sind eingerostetes Basiswissen. Deshalb weiß ich auch nicht, wie der effiziente Weg zu meiner Problemlösung aussehen kann.

    Allg. Problembeschreibung: Ich möchte aus einer xls-Arbeitsmappe vom Lieferanten (die natürlich grundlegend gesperrt ist und selbst Makros hat) durch Auswählen versch. Felder Preise kopieren und in eine Art Preisliste (andere xls-Arbeitsmappe) einfügen. Dafür habe ich mir eine Kopiervorlage gemacht, mit der ich geglaubt hätte, die einzelnen Bereiche in die Lieferanten-xls kopieren zu können. Das Kopieren funktioniert in meinem Makro zwar, aber leider nur 1 Bereich.

    Konkret möchte ich folgendes machen:

    Kopiervorlage Bereich C2:C12 -> Lieferanten-xls Bereich B32:B42
    Kopiervorlage Bereich C14:C15 -> Lieferanten-xls Bereich F40:G41
    Kopiervorlage Feld C17 -> Lieferanten-xls Feld F65
    Kopiervorlage Feld C18 -> Lieferanten-xls Feld H65
    Kopiervorlage Feld C19 -> Lieferanten-xls Feld J65
    Kopiervorlage Feld C20 -> Lieferanten-xls Feld K65

    Daraus ergibt sich in der Lieferanten-xls:
    Feld I33 -> Kopiervorlage Blatt "Übersicht" Feld $H3
    Feld I36 -> Kopiervorlage Blatt "Übersicht" Feld $I3 (wenn >0)
    Feld I38 -> Kopiervorlage Blatt "Übersicht" Feld $J3
    Feld I40 -> Kopiervorlage Blatt "Übersicht" Feld $L3
    Feld I41 -> Kopiervorlage Blatt "Übersicht" Feld $M3
    Feld I65 -> Kopiervorlage Blatt "Übersicht" Feld $N3

    Mein erster Ansatz dazu:
    Bereiche kopieren:
    workbooks.open(...\preisliste.xlsm).worksheets("Kopiervorlage").range("C2:C12").copy workbooks.open(....\lieferant.xlsm).worksheets("OFFER").range("B32")
    workbooks.open(...\preisliste.xlsm).worksheets("Kopiervorlage").range("C14:C15").copy workbooks.open(....\lieferant.xlsm).worksheets("OFFER").range("F40:G41")

    Für das erste Feld:
    workbooks.open(....\lieferant.xlsm).worksheets("OFFER").range(I33").copy workbooks.open(...\preisliste.xlsm).worksheets("Übersicht").range(H3)

    Damit das ganze nicht zuuu einfach wird, gibt es von den Feldern der Lieferanten-xls noch unterschiedliche Ausprägungen (für den Bereich C3:C8).
    Letztendlich ist in der Kopiervorlage nicht nur der Bereich C2:C12, sondern das geht (vorerst) bis Z2:Z12
    Sämtliche Feldangaben in der Lieferanten-xls sind fix, jene in der Kopiervorlage sind zeilenmäßig flexibel.
    Sobald eine Zeile in der "Übersicht" gefüllt ist, käme die nächste Ausprägung dran und in die nächste Zeile die Felder Ixx kopieren usw.

    Wenn es hilft: sobald in der Lieferanten-xls ein Fehler passiert, werden die betroffenen Felder gelb - da könnte ev. eine Überprüfung hilfreich sein.
    Ggf. kann ich die beiden xls-Tabellen zur Verfügung stellen.

    Gibt es da einen Ansatz, wie ich das halbwegs effizient umsetzen kann (inkl. Iterationen aus den Ausprägungen), ohne 500 Seiten Coding? :/
    In weiterer Folge gäbe es noch das eine oder andere Zusatzdings (zB aus einer anderen xls-Tabelle eine Art.Nr. für Feld N3 und Preis für Feld O3 in Kopiervorlage raussuchen) ... ;)

    Ich hoffe, das ist halbwegs verständlich formuliert ... :S

    Vielen herzlichen Dank für eure Unterstützung! :thumbup:

    LG
    3DFreak

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „3DFreak77“ ()

    3DFreak77 schrieb:

    Mein erster Ansatz dazu:
    Bereiche kopieren:
    workbooks.open(...\preisliste.xlsm).worksheets("Kopiervorlage").range("C2:C12").copy workbooks.open(....\lieferant.xlsm).worksheets("OFFER").range("B32")
    workbooks.open(...\preisliste.xlsm).worksheets("Kopiervorlage").range("C14:C15").copy workbooks.open(....\lieferant.xlsm).worksheets("OFFER").range("F40:G41")

    Was ist den dass für ein Code. Der kann nun garnicht funktionieren.

    Fange mal mit einfachen Schritten an zu verstehen, was Excel da macht.
    Zeichne Dir mit dem Makrorecorder mal auf, was Excel macht, wenn Du eine Datei öffnest, einen Bereich kopierst und irgendwo wieder einfügst.
    Da solltest Du sehen, dass die ganz anderes ausschaut.

    Dann probiere das mal aus und dann können wir Dir weiterhelfen.

    PS.
    VBA ist VB 6 und nicht .Net
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).