我对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会崩溃并导出第一张表,这只是一些欢迎文本,完全没必要。
答案 0 :(得分:1)
我建议首先隐藏C和D列,然后仅从您的范围复制可见单元格。
Columns("C:D").EntireColumn.Hidden = True
Sheets("MySheetNameToExport").Range("A:G").SpecialCells(xlCellTypeVisible).Copy