我以前遇到过这个问题VBA代码在"保存更改";对话框弹出。我对那个问题的回答没有如预期的那样奏效。
从本质上讲,我想做的是使用VBA从SAP中提取一些数据。唯一的问题是提取的数据自动启动另一个Excel实例;保存更改";弹出窗口出现,所以代码停止,直到我关闭它。
我尝试过但没有成功的解决方案包括:
- 在Excel模板中使用
AutoClose
或AutoOpen
子项。我认为原因是SAP程序告诉Excel退出 - 使用VBS按下键";OK";或";取消";(
sendkey
(出现后,也不起作用
我到处寻找解决方案,但还没有找到答案。
编辑:我担心我的问题不够清楚,我的代码所做的只是按下SAP上的一个按钮,问题发生在打开excel的另一个实例并显示弹出窗口的SAP事务中,这意味着VBA代码仍在等待SAP完成进入下一行代码,直到我手动关闭弹出窗口,这种情况才发生。
添加"Application.DisplayAlerts=False";在代码的开头和结尾(True(,以支持用户输入。下面是一个将保存为csv的示例函数,但它应该会让你走上正轨:
Function ExportCSV(arr As Variant, filename As String) As Long
Dim Newwb As Workbook, sh As Worksheet
Application.DisplayAlerts = False 'don't ask, if CSV exists overwrite
Set Newwb = Workbooks.Add
With Newwb.ActiveSheet
.Range(.Cells(1, 1), .Cells(UBound(arr), UBound(arr, 2))).Value2 = arr
.SaveAs filename:=filename, FileFormat:=xlCSV, Local:=True 'save as csv using the tabname
End With
Application.DisplayAlerts = True
Newwb.Close savechanges:=False 'close the file
End Function
祝你好运,
ceci