vba - 将 Excel 工作表(部分)的范围导出到 CSV

标签 vba excel csv export

我试图弄清楚如何仅将工作表的一部分导出到 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

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

最佳答案

您可以使用下面的代码;

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 

关于vba - 将 Excel 工作表(部分)的范围导出到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396264/

相关文章:

vba - VBA 错误消息框不一致?

vba - Excel VBA-尝试根据值将值复制到汇总表

vba - Excel 2013 中的 VB6 提取

python - 将文件夹中的多个 Excel 文件读取到 pandas 中

linq - 从 LINQ 中的字符串列表生成 CSV

excel - 更改单元格时自动将行复制到新工作表excel VBA

sql - 使用 SQL 高效插入大量数据

VBA - 如何将选定的范围传递给 TextBox 作为引用?

python - 从非修复 header 开始的 csv 中读取 Pandas 数据帧

ruby-on-rails - 使用 hmt 关系批量插入新模型实例