VBA:回答“另存为 – 覆盖”提示(和其他人)不带默认选项

我有一个.xlsm文件,我需要以非macros文件格式(.xlsx)保存一些表格。 为此,我创build了以下代码。 第一部分将名为“CombinedRaw”的活动工作表保存为单独的文件“DATATRY.xlsx”。 这将closures活动文件,即我们不再是文件“数据检索9.xlsm”,而是“DATATRY.xlsx”,所以在删除新的DATATRY文件中不必要的工作表后,我打开工作簿数据检索9。我最初重新开始的xlsm,closures了DATATRY,所以在macros的末尾,我就是我以前的地方。 否则,VBA窗口将closures,我不得不手动closures新文件,打开另一个,再次打开VBA开发者。

您注意到我设法覆盖了Delete-Worksheet-Confirmation提示; 然而,还有其他的提示,我不能用这种方式重写,因为我不想用默认的答案来回答:

第一个是“以下function无法保存在无macros工作簿:…继续保存,点击是”。 这里我需要,也是默认的答案。

但是,“在这个位置已经存在一个名为…的文件,你想replace吗?” 需要是的,但默认是不。

删除工作表后,“此工作簿包含指向其他数据源的链接”,因为它包含从汤森路透数据库获取数据的公式。 默认是“更新”,但我想“不更新”。

然后再次“不能保存在无macros工作簿”,我需要默认的是。

有没有方法来预定义不同的答案,应该给几个连续的提示?

Sub Speichern() ChDir ThisWorkbook.Path 'save as DATATRY.xlsx without macros Worksheets("CombinedRaw").SaveAs Filename:= _ ThisWorkbook.Path & "\DATATRY.xlsx", FileFormat:=51, _ CreateBackup:=False 'delete other sheets in the new file, then close Application.DisplayAlerts = False Worksheets("Codes").Delete Application.DisplayAlerts = True 'open "this" book again Workbooks.Open Filename:=ThisWorkbook.Path & "\data retrieve 9.xlsm" Workbooks("DATATRY.xlsx").Close SaveChanges:=True End Sub 

另外,从文件夹中删除以前存在的文件,然后保存它在我看来就像一个粗暴的解决方法,但如果有帮助,也许是更好的? 但是这仍然不能解决非默认的“更新”提示问题。

你在这里做了一个非常错误的事情,当然你会在这个过程中发出警告。

这是你应该做的。

 Sub Speichern() Dim w As Workbook Set w = Workbooks.Add ThisWorkbook.Worksheets("CombinedRaw").Copy Before:=w.Sheets(1) Dim i As Long Application.DisplayAlerts = False For i = w.Sheets.Count To 2 Step -1 w.Sheets(i).Delete Next Application.DisplayAlerts = True w.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & "\DATATRY.xlsx" End Sub 

如果您在CombinedRaw的代码模块中没有代码,则不会得到xlsm警告。 如果你这样做,你可能想把它移出一个模块。

你仍然会得到覆盖警告,但只有那个。
如果您想要禁止该警告,请将Application.DisplayAlerts = True移到w.Close