从外接程序使用macros时保存活动工作簿

我创build了一个macros,它将.xlsx文件的值保存到某个目录中的csv,其中csv =的名称为写入的Excel文件的名称。

我希望这个macros可以在任何电子表格/工作簿中使用,所以我保存并添加了它。

我认为我与ActiveWorkbook vs ThisWorkbook有问题。

下面的代码是当不用作join项时按照预期工作的原始代码:

Sub CSV() Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long CurrentWorkbook = ThisWorkbook.FullName CurrentFormat = ThisWorkbook.FileFormat SaveToDirectory = "C:\SomeDirectory\" For Each WS In ThisWorkbook.Worksheets Sheets(WS.Name).Copy ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV ActiveWorkbook.Close savechanges:=False ThisWorkbook.Activate Next Application.DisplayAlerts = False ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat Application.DisplayAlerts = False End Sub 

但是,如果在添加中使用该代码,则该文件将以添加的名称进行保存。因此,我更改了代码并使用了ActiveWorkbook,但是在保存时出现该值。

 Sub CSV2() On Error GoTo error_handler Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long CurrentWorkbook = ActiveWorkbook.Name CurrentFormat = ActiveWorkbook.FileFormat SaveToDirectory = "C:\SomeDirectory\" For Each WS In ActiveWorkbook.Worksheets Sheets(WS.Name).Copy ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV ActiveWorkbook.Close savechanges:=False ThisWorkbook.Activate Next Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat Application.DisplayAlerts = False error_handler: MsgBox Err.Description End Sub 

我想写我的Excel文件到CSV。 将该CSV保存在定义的目录中。 使用csv的名称=信息来自的文件的名称。 为了能够在任何工作簿中做到这一点,我打开。

试试这个代码:

 Sub CSV2() On Error GoTo error_handler Dim aWB As Workbook Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long Set aWB = ActiveWorkbook CurrentWorkbook = aWB.Name CurrentFormat = aWB.FileFormat SaveToDirectory = "C:\SomeDirectory\" For Each WS In aWB.Worksheets WS.Copy ActiveWorkbook.SaveAs Filename:=SaveToDirectory & aWB.Name & "_" & WS.Name & ".csv", FileFormat:=xlCSV ActiveWorkbook.Close savechanges:=False 'ThisWorkbook.Activate Next Application.DisplayAlerts = False aWB.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat Application.DisplayAlerts = False Exit Sub error_handler: MsgBox Err.Description End Sub 

我在ws.name后添加ws.name以防止相同的文件名。