📜  excel vba 将工作表导出为 csv 而不会失去当前工作簿的焦点 - VBA (1)

📅  最后修改于: 2023-12-03 15:14:55.501000             🧑  作者: Mango

Excel VBA将工作表导出为CSV并保持当前工作簿焦点

在Excel VBA中,可以使用以下代码将工作表导出为CSV文件:

Sub ExportToCSV()

    ' 存储导出前的当前活动工作表名称
    Dim currentSheetName As String
    currentSheetName = ActiveSheet.Name
    
    ' 创建新工作簿并将导出工作表复制到该工作簿
    Dim newWorkbook As Workbook
    Set newWorkbook = Workbooks.Add
    ActiveSheet.Copy before:=newWorkbook.Sheets(1)
    
    ' 将复制后的工作表导出为CSV文件
    Dim csvFilePath As String
    csvFilePath = "C:\example.csv" ' 替换为要导出的CSV文件路径
    newWorkbook.Sheets(1).Activate
    ActiveWorkbook.SaveAs Filename:=csvFilePath, FileFormat:=xlCSV
    
    ' 关闭新工作簿而不保存更改
    newWorkbook.Close SaveChanges:=False
    
    ' 将焦点返回到导出前的工作表
    ThisWorkbook.Sheets(currentSheetName).Activate
    
End Sub

此代码中,将对活动工作表进行复制,并将复制的工作表粘贴到新工作簿中。然后,将新工作簿中的工作表导出为CSV,并且在不保存新工作簿更改的情况下关闭。最后,将焦点返回到导出前的工作表。

请注意,要导出的CSV文件路径应替换为实际路径和文件名。此外,CSV文件将覆盖以前存在的同名文件。如果需要避免这种情况,可以在导出前检查文件是否存在,并要求用户输入要覆盖文件还是将文件保存为不同的名称。

此外,如果您希望在导出后自动打开保存的CSV文件,可以使用以下代码:

' 打开导出的CSV文件
Dim csvFile As Workbook
Set csvFile = Workbooks.Open(csvFilePath)
csvFile.Activate

请注意,此代码中的csvFilePath变量应包含导出CSV文件的完整路径和文件名。

希望这些代码对您有帮助!