excel 无法获取SAP字段的单元格值

w46czmvw  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(211)

我是VBA新手,我的自然语言是葡萄牙语,这使得它更难得到答案。我有5个VB项目,使用相同的语法完美地工作,因为我用在这一个,但这一次它根本不工作。
我只需要把数据从我的工作表输入到F-63交易的一些字段中。
另一个问题是,即使单元格上有“OK”,代码也不会停止

Sub f63()
    Dim cell, rng As Range
    Set rng = Sheet1.Range("A2:A" & Sheet1.Range("A2").End(xlDown).Row)

    If Not IsObject(Applicatio) Then
        Set SapGuiAuto = GetObject("SAPGUI")
        Set Applicatio = SapGuiAuto.GetScriptingEngine
    End If
        If Not IsObject(Connection) Then
        Set Connection = Applicatio.Children(0)
    End If
    If Not IsObject(session) Then
       Set session = Connection.Children(0)
    End If
    If IsObject(WScript) Then
       WScript.ConnectObject session, "on"
       WScript.ConnectObject Applicatio, "on"
    End If
    session.findById("wnd[0]").maximize
    
        For Each cell In rng

        If Cells(cell.Row, "E").Value <> "OK" Then

            session.findById("wnd[0]").maximize
            session.findById("wnd[0]/tbar[0]/okcd").Text = "/nf-63"
            session.findById("wnd[0]").sendVKey 0
            session.findById("wnd[0]/usr/ctxtBKPF-BLDAT").Text = Cells(cell.Row, "B").Value
            session.findById("wnd[0]/usr/txtBKPF-XBLNR").Text = Cells(cell.Row, "A").Value
            session.findById("wnd[0]/usr/txtBKPF-BKTXT").Text = Cells(cell.Row, "A").Value
            session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").Text = Cells(cell.Row, "C").Value
            session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").SetFocus
            session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").caretPosition = 10
            session.findById("wnd[0]").sendVKey 0
            
            Cells(cell.Row, "E").Value = "OK"
            
            
         End If
    
    Next cell

    MsgBox "Concluído", vbInformation, "F-63"
xmq68pz9

xmq68pz91#

注:当你引用一个单元格范围时,该范围的第一个单元格总是行号1。所以如果你在代码中更改了范围,它将在同一个工作表的不同区域工作。你的单元格是它读取的地方,而单元格是活动的工作表。最好在这里删除范围内容。并且只对Cells(row, colums)这样的活动工作表进行仲裁。并且使用列号代替。如下所示:

i = 1
Do Until Cells(i, 1) = ""
If Cells(i, 5).Value <> "OK" Then

      session.findById("wnd[0]").maximize
        session.findById("wnd[0]/tbar[0]/okcd").Text = "/nf-63"
        session.findById("wnd[0]").sendVKey 0
        session.findById("wnd[0]/usr/ctxtBKPF-BLDAT").Text = Cells(i, 2).Value
        session.findById("wnd[0]/usr/txtBKPF-XBLNR").Text = Cells(i, 1).Value
        session.findById("wnd[0]/usr/txtBKPF-BKTXT").Text = Cells(i, 1).Value
        session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").Text = Cells(i, 3).Value
        session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").SetFocus
        session.findById("wnd[0]/usr/ctxtRF05V-NEWKO").caretPosition = 10
        session.findById("wnd[0]").sendVKey 0
        
        Cells(i, 5).Value = "OK"
       

End If
   i = i + 1
Loop

相关问题