Excel VBA宏将所有以前保存的工作表替换为CSV文件?

时间:2016-02-02 16:25:24

标签: excel vba excel-vba macros folderbrowserdialog

以下是我将工作簿中的所有工作表保存为单个CSV文件到用户可以通过文件夹选择器选择的特定路径的代码。但是,如果我对任何电子表格进行任何更改并再次运行宏,它会提示我“文件已存在于此路径.....你想要替换”。如果单击“是”,则会出现每个工作表的提示。如果我单击否,则宏会抛出错误 - 请参见屏幕截图。

有没有办法可以为我修改宏来替换所有的csv文件并完全取消提示?

Sub CSVAutomation()
Dim ws As Worksheet, wb As Workbook
Dim pathh As Variant

Set wb = ActiveWorkbook

With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    If .Show = -1 Then  'a folder was picked
       pathh = .SelectedItems(1)
    End If
End With

If pathh = False Then Exit Sub   'no folder picked; pathh is false

Application.ScreenUpdating = False
For Each ws In wb.Sheets(Array("01 - Currencies", ...."14 - User Defined
 Fields"))
    ws.Copy
    With ActiveWorkbook
        'Application.DisplayAlerts = False   'to avoid overwrite warnings
        '  pathh is a string (variant) of the path of the folder; does not 
 need pathh.Path
        .SaveAs pathh & "\" & ws.Name, xlCSV
        .Close SaveChanges:=False
    End With
Next ws

Application.ScreenUpdating = True

End Sub

Replace Prompt for each and every worksheet

Macro error if on clicking 'No'

1 个答案:

答案 0 :(得分:1)

检查我的评论和(正如Portland Runner所说)你可以关闭一些警报 我用过这个

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.AutomationSecurity = msoAutomationSecurityForceDisable
    Application.AskToUpdateLinks = False

使用一个程序放入内部并使用每次打开它和另一个打开所有警报的帮助。

Sub Alerts(ScreenUpdate As Boolean, DisplayAlerts As Boolean, AutoSecurity As Boolean, AskToUpdate As Boolean)
        Application.ScreenUpdating = ScreenUpdate
        Application.DisplayAlerts = DisplayAlerts
        Application.AutomationSecurity = IIf(AutoSecurity, msoAutomationSecurityForceDisable, msoAutomationSecurityByUI)
        Application.AskToUpdateLinks = AskToUpdate
End Sub