简单的VBA /macros需要创build一个新的文本文件与活动工作表的内容而不改变文件名

我需要将表单中的数据导出到文本文件而不改变文件名(也就是不做“另存为”),如果文件名可以查看文件夹中的前一个文件名并增加1数字(即:file_1.txt,file_2.txt等)…

谢谢!!

如果你想避免你的excel文件的当前名称被改变,只保存当前的工作表,而不是整个工作簿( SaveAs函数的VBA相当于ActiveWorkbook.SaveAS ,只保存当前表使用ActiveSheet.SaveAS )。

您可以使用下面的macros:

 Sub Macro1() Application.DisplayAlerts = False ActiveSheet.SaveAs Filename:="NewFile.txt", FileFormat:=xlTextWindows Application.DisplayAlerts = True End Sub 

切换DisplayAlerts属性可避免显示给定文件已存在的消息框。

如果要保存多个工作表,则需要迭代ActiveWorkbook对象的Sheets集合,并将每个工作表保存到单独的文件中。

你可以得到一个新的文件名,如下图所示,它包含一个date。 如果你想添加一些你想要导出的细节,你可以得到一个更完整的答案。

 Function NewFileName(ExportPath) Dim fs As Object '' or As FileSytemObject if a reference to '' Windows Script Host is added, in which case '' the late binding can be removed. Dim a As Boolean Dim i As Integer Dim NewFileTemp As string Set fs = CreateObject("Scripting.FileSystemObject") NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & ".csv" a = fs.FileExists(ExportPath & NewFileTemp) i = 1 Do While a NewFileTemp = "CSV" & Format(Date(),"yyyymmdd") & "_" & i & ".csv" a = fs.FileExists(ExportPath & NewFileTemp) i = i + 1 If i > 9 Then '' Nine seems enough times per day to be '' exporting a table NewFileTemp = "" MsgBox "Too many attempts" Exit Do End If Loop NewFileName = NewFileTemp End Function