Excel VBA将特定列导出为CSV

时间:2016-12-13 10:58:47

标签: excel vba excel-vba csv macros

我对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会崩溃并导出第一张表,这只是一些欢迎文本,完全没必要。

1 个答案:

答案 0 :(得分:1)

我建议首先隐藏C和D列,然后仅从您的范围复制可见单元格。

Columns("C:D").EntireColumn.Hidden = True
Sheets("MySheetNameToExport").Range("A:G").SpecialCells(xlCellTypeVisible).Copy