VBA Daten einfügen
#1
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.
Antworten Top
#2
Wie sieht der Makro aus ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hallöchen,

normalerweise sollte, wenn man nach einem Kopiervorgang in Excel dann außerhalb STRG+C betätigt, die Kopiermarkierung aufgehoben werden. Das kann man ja auch anschauen, wenn man Excel und das andere Programm nebeneinander platziert und das tut.

Wie ist das denn, wenn Du z.B. was aus einem anderen Programm als SAP was kopierst, z.B. aus einem Editor, oder wenn Du mal im Explorer einen Dateinamen kopierst, oder ...

Eventuell liegt das Problem auf Seiten von SAP. Mehrstufige_Zwischenablage
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
@Schauan Also: Wenn ich in Excel kopiere (Strg+C) und dann in einen weiteren Excel-Dokument einfüge verschwindet meine vorherige Markierung und damit Kopie wirklich. Wenn ich jedoch woanders kopiere (Bsplw. Word) dann nicht. Word fügt das aus Word kopierte ein, Excel das aus Excel.
Btw. ich nutze Excel 365 fest auf der Platte installiert.

Edit: Ich habe die mehrstufige Zwischenablage bereits schon Mal offen gehabt, weis leider nicht wie ich mit VBA drauf zugreifen kann oder ob ich sie für die Routine temporär deaktivieren könnte.

@SNB:
Ich reduziere es mal auf die wichtigen Teile ohne die functions, wenn du alles brauchst bitte noch Mal melden:
Ich gestehe ich bin blutiger Amateur und habe keine große Ordnung beim Programmieren bitte haue mich nicht ;).

Sub Zellen_Kopieren()

Zellen_wieder_löschen  'Aufruf der Zellen wieder löschen Routine

Range("A6").Select      'einfügen der Daten aus den Arbeitsspeicher
On Error Resume Next    'Fehler, wenn keine Daten dann überspringen
ActiveSheet.Paste
If Err Then
    MsgBox "Keine Daten in Zwischenablage!" & vbCrLf & "Stückliste neu kopieren (Tabelle markieren --> Strg+C)"
    Range("A6").Select
    Exit Sub                'Bei Fehler beende das Script
End If

Dim Stücklistenpositionen As Double
Dim imax As Double

imax = 200              'Maximale Stücklistenlänge, die bearbeitet wird

Stücklistenpositionen = Datenverarbeitung(imax)  'Aufrufen der Datenverarbeitung

Range(Cells(6, 5), Cells(Stücklistenpositionen - 1, 9)).Copy        'In den Arbeitsspeicher kopieren
Range(Cells(6, 5), Cells(Stücklistenpositionen - 1, 9)).Select
Antworten Top
#5
Hallöchen,

lasse Dir mal die Zwischenablage anzeigen. Die kannst Du bei Start | Einfügen ... schalten und unten dann bei Optionen die obere auswählen.
Ist da dann SAP dabei?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
@Schauan, sorry jetzt hast du mich leider abgehängt. Ich denke du meinst ob in der Zwischenablage etwas von SAP liegt. Das wird es ja nicht ich kopiere ja von einen Programm (Inventor) nach Excel und danach händisch nach SAP. Anschließend startet alles wieder bei Inventor.

Ich habe mir eben die Zwischenablage wieder anzeigen lassen. Hier ist in der abwechselnen Reihenfolge die Daten von Excel in Inventor drin, was ja auch Sinn macht. Die Daten liegen also noch vor, ich komme mit VBA nur nicht dran. Wenn ich mit den Tool zum aufzeichnen meines Makros verschiedene zwischenablagen abrufe schreibt er leider nur activesheet.paste mit Dodgy . Nach der von mir einprogramierten Fehlermeldung kann ich also händisch die Daten noch einfügen, VBA kriegt es nicht mehr hin.

Ich habe dir ein Bild angehängt    
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste