Excel VBA SaveAs csv返回xlsx

时间:2018-03-07 12:01:59

标签: excel-vba save-as vba excel

我有一个简单的Excel工作表,我想保存为CSV文件(然后使用Outlook作为附件发送)。 完成后,我希望原始Excel工作表处于活动状态并关闭CSV文件。

此部分有效,但我似乎无法关闭CSV文件。如果我尝试,Excel将终止。

Sub Save()

Dim ActBook As Workbook
Dim CurrentFile As String
Dim NewFile As String

CurrentFile = ThisWorkbook.FullName
NewFile = Application.DefaultFilePath & "\new.csv"

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=NewFile, FileFormat:=xlTextWindows
Application.DisplayAlerts = True

Set ActBook = ActiveWorkbook
Workbooks.Open CurrentFile          ' Make original file active
'   ActBook.Close                   ' This does not work, Excel terminates

End Sub

1 个答案:

答案 0 :(得分:-2)

使用SaveCopyAs方法: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-savecopyas-method-excel

SaveCopyAs方法允许您指定完整的文件路径,因此指定文件类型,因此请从此开始。

当您执行Outlook位并使用附件文件到mailitem方法时,您指定相同的完整文件路径,并将其附加到发送。

以这种方式,初始工作簿始终是活动工作簿,您不需要重新打开它。

在您当前的方法中,.Close将终止Excel,因为活动工作簿是那时打开的工作簿...