SAP Jobsuche bei DV-Treff
Tanri
  • Tanri
  • SAP Forum - Neuling Thema Starter
vor ein Jahr
Hallo ich habe ein SAP Script aufgezeichnet und dann in VBA Excel eingebunden. Läuft auch ohne Probleme durch.

Sub Vorgänge()

Dim sapGuiAuto, Application, connection, session As Object

Dim Stückliste As String

Dim Speichername As String

Dim Speicherort As String

Dim i As Integer

Dim lastrow As Integer

Set sapGuiAuto = GetObject("SAPGUI")

Set Application = sapGuiAuto.getscriptingEngine

Set connection = Application.Children(0)

Set session = connection.Children(0)

lastrow = ThisWorkbook.Sheets("PPS").Cells(Rows.Count, 1).End(xlUp).Row

session.findById("wnd[0]").resizeWorkingPane 342, 42, False

session.findById("wnd[0]/tbar[0]/okcd").Text = "/ncoois"

session.findById("wnd[0]").sendVKey 0

For i = 2 To lastrow

Stückliste = ThisWorkbook.Sheets("PPS").Range("A" & i).Value

Speichername = ThisWorkbook.Sheets("PPS").Range("b" & i).Value

Speicherort = ThisWorkbook.Sheets("PPS").Range("c" & i).Value

session.findById("wnd[0]").resizeWorkingPane 272, 40, False

session.findById("wnd[0]/tbar[0]/okcd").Text = "/ncoois"

usw. ....

Next i

Myend:

Set session = Nothing

connection.CloseSession ("ses[0]")

Set connection = Nothing

Set Application = Nothing

Set sapGuiAuto = Nothing

End Sub

Mein Problem: Ich möchte danach noch weitere VBA Makros anwenden, wie z.B. die aus SAP in Excel gespeicherten Daten weiter verarbeiten. Ich bekomme, immer Fehlermeldungen wenn ich die anderen Makros laufen lassen. Schließe ich die Datei mit den Makros und öffne sie neu. Laufen alle Makros ohne Probleme durch. Hat jemand eine Idee woran es liegen könnte? Vielen Dank

Förderer

ScriptMan
vor ein Jahr
Hallo Tanri,

ich vermute, dass aus irgendwelchen Gründen 2 voneinander getrennte Excel-Instanzen existieren, die miteinander nicht kommunizieren können. Erst wenn eine von den geschlossen wird und die entsprechende Datei wieder geöffnet wird, sind dann alle Dateien in einer Excel-Instanz sichtbar. Es wäre zu prüfen, in welcher Reihenfolge die Excel-Dateien geöffnet und erstellt werden.

Grüße, ScriptMan

Tanri
  • Tanri
  • SAP Forum - Neuling Thema Starter
vor ein Jahr
Hallo, danke für deine Antwort. Wie kann ich dass denn überprüfen? Ich öffne zuerst die Datei mit den Makros. Dann über SAP die anderen Dateien.

Gruß Tanri

ScriptMan
vor ein Jahr
Die Excel-Mappe mit den Makros bildet die 1. Excel-Instanz. Diese kann im Task-Manager unter Details als erste und einzige Excel.exe eingesehen werden.

Was heißt aber, dann über SAP die anderen Dateien? Ist damit ein VBA-Makro gemeint, das aus der Excel-Makromappe gestartet wird? Auf jeden Fall darf danach nicht eine 2. Excel-Instanz im Task-Manager zu sehen sein.

Grüße, ScriptMan

daytona80
vor ein Jahr
Hallo Tanri,

offtopic aber hast du irgendwas am SAPGUI eingestellt? Meiner verweigert dein Script...


Vielen Dank und viele Grüße
Tanri
  • Tanri
  • SAP Forum - Neuling Thema Starter
vor ein Jahr
Hallo Scriptman,

sorry war im Urlaub und habe deine Nachricht erst jetzt gesehen. Excel macht tatsächlich eine 2. Instanz auf. Wie kann ich denn das verhindern? Mit Hilfe eines Makros speichere ich

viele verschiedene Dateien aus SAP in Excel. Das Makro ist in der Excel-Datei gespeichert.

Vielen Dank für deine Hilfe.

ScriptMan
vor ein Jahr
Hallo Tanri,

ich war jetzt einige Tage auch unterwegs und aus diesem Grund melde ich mich erst heute wieder. Wenn das Makro aus einer Excel-Mappe gestartet wird, ist die 1. Excel-Instanz bereits geöffnet. Alle weiteren Excel-Mappen, die dann kreiert werden, müssten in dieser Excel-Instanz auch landen und durch weiter Makros aus der Excel-Mappe ansprechbar sein.

Es ist mir aber aufgefallen, dass ein Kommando namens Application verwendet wird, obwohl es so nicht verwendet werden dürfte:

...

Set Application = sapGuiAuto.getscriptingEngine

Set connection = Application.Children(0)

...

Set Application = Nothing

...

Stattdessen müsste es richtig lauten:

z.B.

...

Set SAP_Application = sapGuiAuto.getscriptingEngine

Set connection = SAP_Application.Children(0)

...

Set SAP_Application = Nothing

...

Wenn es immer noch nicht funktionieren sollte, müsstest du hier alle Details zu den jeweiligen Makros präsentieren.

Grüße, ScriptMan