【发布时间】:2017-04-28 09:57:30
【问题描述】:
我对 VBA 编程相当陌生,但仍然设法编写了一个将 Excel 工作表导出到 CSV 文件的小代码。这必须尽可能对用户友好,所以我想出了这个:
Sub export_first()
Application.DisplayAlerts = False
Dim wb As Workbook, InitFileName As String, fileSaveName As String
InitFileName = ThisWorkbook.Path & "\Export nr1_" & Format(Date, "yyyymmdd")
Sheets("MySheetNameToExport").Copy
Set wb = ActiveWorkbook
fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitFileName, _
fileFilter:="Semicolon separated CSV (*.csv), *.csv")
With wb
If fileSaveName <> "False" Then
.SaveAs fileSaveName, FileFormat:=xlCSV, Local:=True
.Close
Else
.Close False
Exit Sub
End If
End With
End Sub
这很好用。它被添加到一个按钮上,当按下按钮时,代码完成所有工作。现在问题是,我的同事想出了一个想法,我们应该使用列来检查用户的一些值(我们称它们为 C、D),但是当他们导出工作表时,这些列必须被忽略而不是导出。我试图做的是扩展 Sheets 行,例如:
Sheets("MySheetNameToExport").Range("A:B, E:G").Copy
但是,当我将此修改后的行添加到我的宏并运行代码时,Excel 崩溃并导出第一个工作表,这只是一些欢迎文本,完全没有必要。
【问题讨论】: