Thema Datum  Von Nutzer Rating
Antwort
19.02.2020 12:56:13 Andreas
NotSolved
19.02.2020 14:20:30 Torsten
NotSolved
19.02.2020 15:06:56 Andreas
NotSolved
19.02.2020 15:23:18 Andreas
NotSolved
Rot Excel: markierter Bereich einzelne Werte auslesen und zwischenspeichern
20.02.2020 07:32:02 Torsten
NotSolved
20.02.2020 13:16:53 Andreas
NotSolved
20.02.2020 14:53:29 Gast20936
NotSolved
20.02.2020 22:01:53 Andreas
NotSolved
21.02.2020 14:26:29 Andreas
NotSolved

Ansicht des Beitrags:
Von:
Torsten
Datum:
20.02.2020 07:32:02
Views:
641
Rating: Antwort:
  Ja
Thema:
Excel: markierter Bereich einzelne Werte auslesen und zwischenspeichern

Hallo Andreas,

das ist mehr Arbeit als du dir vorstellen kannst. Ich hatte ein aehnliches Problem mit Excel und SAP. Ich habe es letztlich ueber die SendKeys Methode geloest, was aber sehr fehleranfaellig ist. Schau dir diese Methode mal an.

Problem hierbei ist, dass du SAP nicht direkt aus Excel steuern kannst. Und du must ueber Excel Befehle immer zwischen SAP und Excel hin und her schalten, da das SAP Fenster immer aktiv im Vordergrund sein muss, um es mit dieser Methode zu steuern. Da du hierbei Tastaturbefehle simulierst, musst du dir die Schritte, die in SAP zu machen sind, erstmal aufschreiben (also z.B. 1 mal runter, 2 mal rechts, Enter usw.) und dann jeden Schritt im Excel mit der SendKey Methode programmieren. Wichtig dabei ist, dass niemand, waehrend das Makro laeuft, Tastatur oder Maus benutzt. Sonst ist alles vor den Ar... und du kannst von vorn anfangen. Und du kannst keine Mausbewegung oder -klick simulieren, nur Tastaturbefehle. 

Also es wuerde ungefaehr so ablaufen, wenn du dir die Schritte in SAP aufgeschrieben hast.

1. Excel aktivieren, das Makro starten. Makro kopiert z.B. Wert aus Tabelle 1 , Zelle A1 in die Zwischenablage. Noch einfach mit Copy

2. Per VBA Befehl das SAP Fenster ueber den Fenstertitel aktivieren. 

3. Dort dann die Tastaturbefehle ausfuehren lassen, um das richtige Feld zu aktivieren. STRG+V simulieren zum Wert einfuegen. 

4. naechsten Wert aus Excel kopieren

5. Wieder SAP Fenster aktivieren, Tastaturbefehle, um ins naechste Feld zu navigieren, STRG+V zum einfuegen

usw., usw., usw.

Also, wie du siehst, nicht so ganz einfach zi loesen. Sehr umfangreiche Arbeit.

Hier mal ein Auszug aus meiner Programmierung. Ist aber nur ein kleiner Teil. Nur, dass du mal siehst, was du vorhast.

Ich oeffne hier eine Liste in SAP und kopiere diese in eine Excel Tabelle. Felder in SAP beschreibe ich in dem Fall direkt mit einem String:

Sub SAP_extract_overdue_E50()

Application.ScreenUpdating = False

    clear_clipboard

    aktWB = "Activity_Tracker_Backend_E50_V3.xlsm"
    ARaktWB = "'Activity_Tracker_Backend_E50_V3.xlsm'"
    nowWB = path & aktWB
    aktApp = "Dynamic availability check, display table contents from ZMM_ZDAC" 'der Fenstertitel des SAP Fensters
    
    AppActivate (aktApp)        'das Fenster aktivieren
    'nachfolgend die Schritte, die in SAP ausgefuehrt werden muessen
    SendKeys "+{F5}", True
    Application.Wait (Now + TimeValue("0:00:03"))
    SendKeys ("E50_ODMT"), True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "{ENTER}", True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "{DOWN 2}", True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "+{End}", True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "{Delete}", True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "{F8}", True
    Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "{F8}", True
    Lcounter = 1
1:  Application.Wait (Now + TimeValue("0:00:02"))
    SendKeys "^{a}", True
    Application.Wait (Now + TimeValue("0:00:06"))
    SendKeys "^{c}", True
    Application.Wait (Now + TimeValue("0:00:02"))

If ClipboardEmpty = True And Lcounter <> 10 Then
    Lcounter = Lcounter + 1
    SendKeys "{ENTER}", True
    GoTo 1
Else
    Application.DisplayAlerts = False
    Application.EnableEvents = False
        Workbooks.Open Filename:=nowWB, UpdateLinks:=False
        On Error GoTo NextStep
        With Workbooks(aktWB)
            .Sheets("Daily Overdues").Range("A2").PasteSpecial
        End With
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    
clear_clipboard
                     
NextStep: Workbooks(aktWB).Close savechanges:=True

End If
    
Call SAP_extract_overdue_E51

End Sub

Also sag bescheid, wenn du hierzu Tipps oder Hilfe brauchst.

Gruss Torsten


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
19.02.2020 12:56:13 Andreas
NotSolved
19.02.2020 14:20:30 Torsten
NotSolved
19.02.2020 15:06:56 Andreas
NotSolved
19.02.2020 15:23:18 Andreas
NotSolved
Rot Excel: markierter Bereich einzelne Werte auslesen und zwischenspeichern
20.02.2020 07:32:02 Torsten
NotSolved
20.02.2020 13:16:53 Andreas
NotSolved
20.02.2020 14:53:29 Gast20936
NotSolved
20.02.2020 22:01:53 Andreas
NotSolved
21.02.2020 14:26:29 Andreas
NotSolved