16.08.2022, 08:55
Hallo,
mit Problem ist vergleichsweise simpel aber ich muss weiter ausholen:
Ich habe mir eine Routine in VBA geschrieben mit der ich Daten verarbeite und für dann kopiere, um sie in SAP einzufügen. Im Endeffekt läuft es so:
1. Ich gehe in die Stückliste des einen Programmes, markiere einen Bereich und kopiere ihn (Strg+C)
2. Ich gehe in Excel und starte die Routine:
2.2 Diese fügt die Daten aus den Speicher ein --> Range("A6").Select --> ActiveSheet.Paste
2.3 Anschließend interpretiert die Routine die Daten, verarbeitet sie und legt sie in einen Bereich der Tabelle ab.
2.4 Das Programm markiert den Bereich und kopiert ihn --> Range(Cells(6, 5), Cells(Stücklistenpositionen - 1, 9)).Copy
3. Ich gehe in SAP öffne die Stückliste und füge meine verarbeiteten Daten ein (Strg+V)
Kurz gesagt in den einen Programm kopieren, dann in Excel klicken und dann in SAP einfügen. Das klappt auch alles super.
Nun endlich zum Problem: Es klappt nur beim ersten mal wenn ich das nächste mal etwas einfügen will ist aber in Excel das alte "kopieren" noch aktiviert bzw. im Speicher. Activesheet.paste fügt also die Daten vom vorherigen Prozess ein und nicht das was ich neu in den Arbeitsspeicher, von meinen anderen Programm aus, kopiert habe. Es bevorzugt die kopierten Daten aus Excel (Schritt 2.4). Wenn ich die vorherige Auswahl in Excel aufheben wil (z.B. ganz stumpf Sendkeys(esc)) grille ich mir auch die Daten, die ich aus den anderen Programm gespeichert hatte. Derzeit umgehe ich das Problem indem ich vor den kopieren der neuen Daten einmal in Excel gehen muss und ESC drücke.
Wie kriege ich es hin das VBA die Daten aus den anderen Programm (die ich mit Strg+C kopiert habe) einfügt statt noch kopierte und markierte Daten aus der verwendeten Excel Tabelle?
Danke im vorraus.
mit Problem ist vergleichsweise simpel aber ich muss weiter ausholen:
Ich habe mir eine Routine in VBA geschrieben mit der ich Daten verarbeite und für dann kopiere, um sie in SAP einzufügen. Im Endeffekt läuft es so:
1. Ich gehe in die Stückliste des einen Programmes, markiere einen Bereich und kopiere ihn (Strg+C)
2. Ich gehe in Excel und starte die Routine:
2.2 Diese fügt die Daten aus den Speicher ein --> Range("A6").Select --> ActiveSheet.Paste
2.3 Anschließend interpretiert die Routine die Daten, verarbeitet sie und legt sie in einen Bereich der Tabelle ab.
2.4 Das Programm markiert den Bereich und kopiert ihn --> Range(Cells(6, 5), Cells(Stücklistenpositionen - 1, 9)).Copy
3. Ich gehe in SAP öffne die Stückliste und füge meine verarbeiteten Daten ein (Strg+V)
Kurz gesagt in den einen Programm kopieren, dann in Excel klicken und dann in SAP einfügen. Das klappt auch alles super.
Nun endlich zum Problem: Es klappt nur beim ersten mal wenn ich das nächste mal etwas einfügen will ist aber in Excel das alte "kopieren" noch aktiviert bzw. im Speicher. Activesheet.paste fügt also die Daten vom vorherigen Prozess ein und nicht das was ich neu in den Arbeitsspeicher, von meinen anderen Programm aus, kopiert habe. Es bevorzugt die kopierten Daten aus Excel (Schritt 2.4). Wenn ich die vorherige Auswahl in Excel aufheben wil (z.B. ganz stumpf Sendkeys(esc)) grille ich mir auch die Daten, die ich aus den anderen Programm gespeichert hatte. Derzeit umgehe ich das Problem indem ich vor den kopieren der neuen Daten einmal in Excel gehen muss und ESC drücke.
Wie kriege ich es hin das VBA die Daten aus den anderen Programm (die ich mit Strg+C kopiert habe) einfügt statt noch kopierte und markierte Daten aus der verwendeten Excel Tabelle?
Danke im vorraus.