Avatar billede sgadegaard Nybegynder
02. juli 2012 - 15:04 Der er 1 løsning

Fra Excel til SAP med script

Hej,

Jeg har nogle en del records i SAP som jeg gerne vil rette fra Excel, jeg har oprettet et scrip i SAP og derefter importeret det i Excel. Hvis jeg tester direkte i SAP med direkte værdier kan jeg ændre 1. record ad gangen.
Fra Excel kan jeg ikke ændre nogle records.

Den springer næsten direkte til Done! messagebox.

Excel ark, row B: referance, row C: værdi og row D: værdi

mvh
Søren

Dim i As Integer
Dim j, k As Integer
Public Sub Change_Eguipment_2_sub()
If Not IsObject(App) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = App.Children(0)
End If
If Not IsObject(sesion) Then
Set sesion = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject sesion, "on"
WScript.ConnectObject App, "on"
End If
Set SapGuiAuto = Nothing
Set App = Nothing
Set Connection = Nothing
Set WScript = Nothing
sesion.testToolMode = 1
j = 2
i = 3
k = 3
Do While Cells(i, j) <> ""
Cells(i, j + k) = ""
resultado = Change_Eguipment_2_func(sesion)
If resultado <> "" Then
Cells(i, j + k) = Cells(i, j + k) & Chr(39) & Change_Eguipment_2_func(sesion)
End If
i = i + 1
Loop
Set sesion = Nothing
MsgBox ("Done!")
End Sub
Public Function Change_Eguipment_2_func(sesion As Variant)
On Error GoTo ext
If sesion.findById("wnd[0]/sbar").messageType = "W" Then
Call check_messages(sesion)
End If
Change_Eguipment_2_func = sesion.findById("wnd[0]/sbar").Text
Exit Function
ext:
If Err.Number <> 619 Then
MsgBox (Err.Description)
i = i - 1
End If
Resume ext2
ext2:
Change_Eguipment_2_func = sesion.findById("wnd[0]/sbar").Text
End Function
Public Sub check_messages(sesion As Variant)
Do While sesion.findById("wnd[0]/sbar").messageType <> "E" And sesion.findById("wnd[0]/sbar").messageType <> ""
mensaje = sesion.findById("wnd[0]/sbar").Text
If mensaje <> "" Then
Cells(i, j + k) = Cells(i, j + k) & Chr(39) & mensaje
    If sesion.findById("wnd[0]/sbar").messageAsPopup = True Then
        sesion.findById("wnd[1]").sendVKey 0
    Else
        sesion.findById("wnd[0]").sendVKey 0
    End If
End If
Loop
End Sub
Avatar billede sgadegaard Nybegynder
16. september 2012 - 22:08 #1
Fandt selv en løsning
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester