【发布时间】:2015-06-09 19:55:49
【问题描述】:
目标:
- 将工作簿中的特定工作表保存为唯一的 CSV 文件
条件:
- 从包含特定工作表和无关工作表的工作簿中保存特定工作表(复数)(例如,保存 20 个可用工作表中的特定 10 个)
- 将当前日期插入 CSV 的文件名,以避免覆盖当前保存文件夹中的文件(此 VBA 每天运行)
- 文件名语法:CurrentDate_WorksheetName.csv
我发现 VBA 代码可以帮助我实现目标。它将所有工作表保存在工作簿中,但文件名不是与当前日期动态的。
当前代码:
Private Sub SaveWorksheetsAsCsv()
Dim WS As Excel.Worksheet
Dim SaveToDirectory As String
Dim DateToday As Range
Dim CurrentWorkbook As String
Dim CurrentFormat As Long
CurrentWorkbook = ThisWorkbook.FullName
CurrentFormat = ThisWorkbook.FileFormat
' Store current details for the workbook
SaveToDirectory = "S:\test\"
For Each WS In ThisWorkbook.Worksheets
Sheets(WS.Name).Copy
ActiveWorkbook.SaveAs Filename:=SaveToDirectory & WS.Name & ".csv", FileFormat:=xlCSV
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Next
Application.DisplayAlerts = False
ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat
Application.DisplayAlerts = True
' Temporarily turn alerts off to prevent the user being prompted
' about overwriting the original file.
End Sub
【问题讨论】:
-
您如何决定要保存哪些工作表?保存工作表“For each ws in....”的循环正在保存每个工作表,而不是检查工作表的名称或其他任何内容......
-
我投票结束这个问题,因为它看起来像一个课堂作业。
-
@Shiva 家庭作业问题本身不会自动偏离主题。话虽这么说,帮助中心确实指定“要求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的摘要,以及您解决问题的困难的描述”和这个问题肯定可以更好地说明所讨论的“特定问题或错误”。
-
@hopper 是的,完全正确。请注意问题是“我找到了 VBA 代码”。翻译 = OP 没有做出任何努力来解决它。