通过Excel工作簿parsing并将特定的标签保存为.csv文件

我需要帮助将excel工作簿中的特定选项卡保存为1)csv文件,以及2)以源文件命名的文件。

到目前为止,我有这样的工作,从一个工作簿中取出正确的选项卡,并将其保存为.csv文件。

Sub Sheet_SaveAs() Dim wb As Workbook Sheets("SheetName").Copy Set wb = ActiveWorkbook With wb .SaveAs ThisWorkbook.Path & "\SheetName.csv" '.Close False End With End Sub 

如何重命名“SheetName”,以便将文件保存为例如Workbook1SheetName,Workbook2SheetName等?

我想循环这个函数通过许多很多excel文件的文件夹,所以新的.csv文件需要唯一的名称。

我在网上find了这个网站,展示了如何使用VBA循环http://www.ozgrid.com/VBA/loop-through.htm 。 从理论上讲,只要每个.csv文件都可以有一个唯一的名字,就应该使用上面的代码。 纠正我,如果我错了。

谢谢您的帮助。

正如你所发现的,当你复制一个没有目的地的工作表时,你最终会得到一个由工作表副本填充的新工作簿。 新的工作簿成为VBA环境中的ActiveWorkbook属性 。 要将工作簿另存为CSV文件,您需要检索新工作簿中唯一工作表的工作表.Name属性 。

 Sub All_Sheet_SaveAs_CSV() Dim w As Long, wb As Workbook Dim fp As String, fn As String On Error GoTo bm_Safe_Exit 'Application.ScreenUpdating = False 'stop screen flashing Application.DisplayAlerts = False 'stop confirmation alerts 'start with a reference to ThisWorkbook With ThisWorkbook fp = .Path 'cycle through each of the worksheets For w = 1 To Worksheets.Count With Worksheets(w) .Copy 'the ActiveWorkbook is now the new workbook populated with a copy of the current worksheet With ActiveWorkbook fn = .Worksheets(1).Name .SaveAs Filename:=fp & Chr(92) & fn, FileFormat:=xlCSV .Close savechanges:=False '<~~ already saved in line above End With End With Next w End With bm_Safe_Exit: Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 

请注意,转动.DisplayAlerts将closures您通常会收到的警告。 虽然这对CSV文件格式有帮助,但如果您尝试覆盖文件,它也不会警告您。

具有文件格式参数xlCSV的Workbook.SaveAs方法将提供正确的文件扩展名。 没有必要把它作为文件名的一部分。

如果有限数量的特定工作表旨在接收导出到CSV的过程,则可以循环使用一组工作表名称而不是工作表索引位置。

 Sub Specific_Sheets_SaveAs_CSV() Dim v As Long, vWSs As Variant Dim fp As String, fn As String On Error GoTo bm_Safe_Exit 'Application.ScreenUpdating = False 'stop screen flashing Application.DisplayAlerts = False 'stop confirmation alerts vWSs = Array("Sheet1", "Sheet3", "Sheet5") 'start with a reference to ThisWorkbook With ThisWorkbook fp = .Path 'cycle through each of the worksheets For v = LBound(vWSs) To UBound(vWSs) With Worksheets(vWSs(v)) .Copy 'the ActiveWorkbook is now the new workbook populated with a copy of the current worksheet With ActiveWorkbook fn = .Worksheets(1).Name .SaveAs Filename:=fp & Chr(92) & fn, FileFormat:=xlCSV .Close savechanges:=False '<~~ already saved in line above End With End With Next v End With bm_Safe_Exit: Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub