VBA宏打开Excel文件并将工作表保存到单独的CSV文件中
问题描述:
我是VBA的新手。我需要从不同位置打开现有文件,并将每个工作表保存在工作表名称(选项卡名称)的不同csv文件中。我尝试过这样的事情。VBA宏打开Excel文件并将工作表保存到单独的CSV文件中
Sub SplitFile()
Dim vPath As String
vPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
这适用于当前活动工作表,但我想处理其他路径中的另一个工作表。
我试图分配一个变量来保存文件路径,但它抛出一个错误。
请帮帮我。提前致谢。
答
你需要创建一个工作簿变量和一个工作簿对象分配给它:
Sub SplitFile()
Dim vPath As String
Dim wb As Workbook
Dim wbPath As Variant
wbPath = Application.GetOpenFileName("Excel Files (*.xls*), *.xls*")
If wbPath = False Then Exit Sub
Set wb = Workbooks.Open(wbPath)
vPath = wb.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In wb.Sheets
xWs.Copy
Application.ActiveWorkbook.SaveAs Filename:=vPath & "\" & xWs.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
正如你所看到的,一旦你分配工作簿你刚才指的是在你的代码需要的地方。
+0
感谢您的信息。当我运行代码时,它会抛出一个错误,指出它是运行时错误438.对象不支持此属性。任何理由吗? – arunpandiyarajhen
+0
有一个错字 - 请参阅更新的代码 –
你是什么意思的另一个工作表在其他路径。你的意思是你有更多的工作簿,你想运行的代码?这是非常不清楚的。 –
@MacroMan,对不起,如果不清楚。以上代码适用于已打开的工作簿。我想在运行此宏时在特定路径中打开工作簿。 – arunpandiyarajhen