【问题标题】:Excel VBA Exporting specific columns to CSVExcel VBA 将特定列导出为 CSV
【发布时间】: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 崩溃并导出第一个工作表,这只是一些欢迎文本,完全没有必要。

【问题讨论】:

    标签: vba excel csv macros


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这确实是一个很棒的方法,我真的很喜欢这个主意!但是,如果我实现您的代码并运行脚本,这仍然会发生:出现“选择保存在某处”框,我点击确定,然后 VBA 项目自行关闭,所有工作表都关闭,只有主灰色 Excel 和VBA 窗口一直在我面前......是的,几乎忘记了:第一个信息表被导出。就像第一张纸一样。
    • 好的,另一个论坛的另一位专家指出了问题所在。 SaveAs 方法是罪魁祸首。 Set NewSheet = Sheets.Add Sheets("Work1").Range("X:Y").Copy Destination:=NewSheet.Range("A1") NewSheet.Move Set wb = ActiveWorkbook 这成功了。
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2019-03-10
    • 2019-01-12
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多