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 

这适用于当前活动工作表,但我想处理其他路径中的另一个工作表。

我试图分配一个变量来保存文件路径,但它抛出一个错误。

请帮帮我。提前致谢。

+0

你是什么意思的另一个工作表在其他路径。你的意思是你有更多的工作簿,你想运行的代码?这是非常不清楚的。 –

+0

@MacroMan,对不起,如果不清楚。以上代码适用于已打开的工作簿。我想在运行此宏时在特定路径中打开工作簿。 – arunpandiyarajhen

你需要创建一个工作簿变量和一个工作簿对象分配给它:

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

有一个错字 - 请参阅更新的代码 –