处理 excel "Save Changes"在另一个实例中弹出打开并停止我的代码



我以前遇到过这个问题VBA代码在"保存更改";对话框弹出。我对那个问题的回答没有如预期的那样奏效。

从本质上讲,我想做的是使用VBA从SAP中提取一些数据。唯一的问题是提取的数据自动启动另一个Excel实例;保存更改";弹出窗口出现,所以代码停止,直到我关闭它。

我尝试过但没有成功的解决方案包括:

  • 在Excel模板中使用AutoCloseAutoOpen子项。我认为原因是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

最新更新