【问题标题】:Export Range of (Part of) an Excel Sheet to CSV将 Excel 工作表(部分)的范围导出为 CSV
【发布时间】:2017-11-07 20:09:14
【问题描述】:

我正在尝试弄清楚如何仅将工作表的一部分导出到 csv,而无需循环遍历每一行或单元格并将它们单独打印到文件中。我需要维护本地格式作为一项要求。

Sheets("PI_OUTPUT").Copy

这会复制整个工作表。我在第 1 到 20000 行和 A 到 X 列中有公式,但在处理数据后有可变数量的空白行。如果我使用复制方法,我会复制所有空行,以逗号行等形式输出。

我尝试在复制后使用 activesheet.deleterows 修剪输出文件,但这给了我一个错误。

我尝试过使用:

Worksheets("PI_OUTPUT").Activate
 Sheets("PI_OUTPUT").Range("A2:X5000").Copy

我尝试使用另一个建议:specialcells(xlCellTypeVisible),但我似乎无法让它发挥作用:

Set rng = Sheets("PI_OUTPUT").SpecialCells(xlCellTypeVisible)
Set Workbook = Workbooks.Add
With Workbook
    Call rng.Copy
    .Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues
    .SaveAs filename:=MyPath & MyFileName, FileFormat:=xlCSV
    .Close
End With

更糟糕的是,我必须在多张工作表上执行此操作,所有工作表的列和行数都可变,全部保存到单独的文件中。所以我正在寻找可以重复多次的东西。我有一个弹出的文件夹路径来选择位置,并且有一个动态构建的文件名,但是复制/粘贴会避开我的文件。

【问题讨论】:

    标签: vba excel csv export


    【解决方案1】:

    你可以使用下面的代码;

    Sub testexport() 
     'Adpated from OzGrid;
     ' export Macro as CSV
    
    Dim wsh As Worksheet
    
    Set wsh = ThisWorkbook.Worksheets("PI_OUTPUT")
    
    With wsh.Range("A2:X20000")
    
    .AutoFilter 1, "<>" 'Filter to get only non-blank cells
    
    'assuming there is no blank cell within a filled row:
    wsh.Range(wsh.Cells(2, 1), wsh.Cells(24, 2).End(xlDown)).Copy 'copy non-blank cells 
    
    '.AutoFilter should not cancel autofilter as it clears cutcopy mode
    
    End With
    
    Application.DisplayAlerts = False 'avoid "save prompt window"
    
    Workbooks.Add
    
    ActiveSheet.Paste 
    
    'Saves to C drive as Book2.csv
    ActiveSheet.SaveAs Filename:= _ 
    "C:\Book2.csv" _ 
    , FileFormat:=xlCSV, CreateBackup:=False 
    
    ActiveWorkbook.Close 
    
    wsh.Range("A2:X20000").AutoFilter 'clear the filter
    
    Application.DisplayAlerts = True 'set to default
     
    End Sub 
    

    【讨论】:

    • 我让它工作:使用 wsh.Range("A1:X20000") .AutoFilter 1, "" '过滤以仅获取非空白单元格 wsh.Range(wsh.Cells( 1, 1), wsh.Cells(1, 24).End(xlDown)).Copy 我省略了第二个自动过滤器并调整了单元格引用。感谢您的帮助!
    • @Itsallgonepearshape 我只是在调试它。是的。这就是问题所在。很高兴这是一个帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 2018-07-25
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多