【发布时间】:2021-01-08 04:36:14
【问题描述】:
我正在尝试将 XLXS 文件从 SAP 保存到我的文档中,但它在允许中显示错误,当我尝试记录和运行时,允许的代码也不起作用。我也在尝试循环变量 "conta" 。请帮助我在这种情况下如何在不单击允许和循环“conta”变量的情况下保存文件。 Senkey 选项不适用于这些宏。
Sub KSB1_Multiple_CA()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set ws = Sheets("SAP")
Sheets("SAP").Select
rang = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A2:AO" & rang).Clear
If ActiveSheet.AutoFilterMode Then
ActiveSheet.AutoFilterMode = False
End If
rang = Sheets("SAP").Range("A" & Rows.Count).End(xlUp).Row
bl = ThisWorkbook.Name
conta = ThisWorkbook.Sheets("Details").Range("A2")
dt1 = ThisWorkbook.Sheets("Details").Range("D2")
dt2 = ThisWorkbook.Sheets("Details").Range("E2")
vari = ThisWorkbook.Sheets("Details").Range("F2")
ccs = Sheets("Details").Range("B" & Rows.Count).End(xlUp).Row + 1
ces = Sheets("Details").Range("C" & Rows.Count).End(xlUp).Row + 1
Set SapGuiAuto = GetObject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
Set Connection = App.Children(0)
Set session = Connection.Children(0)
'Code SAP Start dont modify'
Windows(bl).Activate
On Error Resume Next
session.StartTransaction "KSB1"
session.findById("wnd[0]/usr/ctxtP_KOKRS").Text = conta
session.findById("wnd[0]/usr/ctxtP_KOKRS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
Sheets("Details").Select
Range("B2:B" & ccs).Copy
session.findById("wnd[0]/usr/btn%_KOSTL_%_APP_%-VALU_PUSH").press
session.findById("wnd[1]/tbar[0]/btn[16]").press
session.findById("wnd[1]/tbar[0]/btn[24]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[0]/usr/ctxtKSTGR").Text = ""
session.findById("wnd[0]/usr/ctxtKSTGR").SetFocus
session.findById("wnd[0]/usr/ctxtKSTGR").caretPosition = 0
Sheets("Details").Select
Range("C2:C" & ces).Copy
session.findById("wnd[0]/usr/btn%_KSTAR_%_APP_%-VALU_PUSH").press
session.findById("wnd[1]/tbar[0]/btn[16]").press
session.findById("wnd[1]/tbar[0]/btn[24]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[0]/usr/ctxtR_BUDAT-LOW").Text = dt1
session.findById("wnd[0]/usr/ctxtR_BUDAT-HIGH").Text = dt2
session.findById("wnd[0]/usr/ctxtP_DISVAR").Text = vari
session.findById("wnd[0]/usr/ctxtP_DISVAR").SetFocus
session.findById("wnd[0]/usr/ctxtP_DISVAR").caretPosition = 8
session.findById("wnd[0]/usr/btnBUT1").press
session.findById("wnd[1]/usr/txtKAEP_SETT-MAXSEL").Text = "5000000"
session.findById("wnd[1]/usr/txtKAEP_SETT-MAXSEL").caretPosition = 7
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/tbar[1]/btn[8]").press
On Error Resume Next
session.findById("wnd[1]").sendVKey 0
On Error GoTo 0
session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "AT01.xlsx"
session.findById("wnd[1]/usr/ctxtDY_PATH").SetFocus
session.findById("wnd[1]/usr/ctxtDY_PATH").caretPosition = 86
session.findById("wnd[1]").sendVKey 0
'Code SAP Ends dont modify'
rang = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A2:AE" & rang).Copy
Windows(bl).Activate
ws.Select
Lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & Lastrow).Select
Selection.PasteSpecial xlValues
'Code SAP Start dont modify'
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Code SAP End dont modify'
ActiveWindow.WindowState = xlMaximized
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
你已经看过这个话题了吗? stackoverflow.com/questions/45465172/…
-
我已经检查过了。我会重试,但它是 xls,我的是 2007 年的 xlxs。两者都有不同的保存过程。 Xls 没有
-
Xls 不要求保存
-
该链接不是关于 xls 而是关于 xml。 xml 文件类型的行为类似于 xlsx。
-
这里有一个类似的案例:stackoverflow.com/questions/40729968/…