使用VBA将Excel工作表的(部分)范围导出为CSV

我知道出口到CSV已经被问了十亿次,我已经做了好几次,但我想弄清楚如何导出只有一部分工作表CSV文件没有循环通过每行或单元格并分别打印到文件。 我需要维护本地格式作为一个要求。

Sheets("PI_OUTPUT").Copy 

这复制整张纸,疣和所有。 我有公式的第1到20000行和列A到X,但在数据已经处理后,空白行数量可变。 如果我使用复制方法,我复制所有的空行,输出为逗号的行。 ,,,,,,,等….

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

我试过使用:

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

我试图使用另一个build议: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 

更糟糕的是,我必须通过多个表单来完成这些工作,所有这些表单都有可变数量的行,所有行都保存到单独的文件中,所以我正在寻找一些我可以重复的次数。 我popup一个文件夹path来select位置,并有一个dynamic构build的文件名,但复制/粘贴逃避文件我。

目前正在撕毁无数谷歌search后,我发现了什么小毛,感激地收到了任何帮助。

您可以使用下面的代码;

 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's 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 from "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