我有一个简单的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
答案 0 :(得分:-2)
使用SaveCopyAs方法: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-savecopyas-method-excel
SaveCopyAs方法允许您指定完整的文件路径,因此指定文件类型,因此请从此开始。
当您执行Outlook位并使用附件文件到mailitem方法时,您指定相同的完整文件路径,并将其附加到发送。
以这种方式,初始工作簿始终是活动工作簿,您不需要重新打开它。
在您当前的方法中,.Close将终止Excel,因为活动工作簿是那时打开的工作簿...