2017-06-06 109 views
1

我知道导出到csv已被问及10亿次,并且我已经完成了好几次,但我试图弄清楚只将片材的一部分导出到csv,而不循环通过每一行或单元并将它们单独打印到文件。我需要将本地格式保存为一项要求。将Excel工作表的一部分导出到使用VBA的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 

更糟糕的是,我必须通过多个表格来完成这些工作,所有表格都有可变数量的列和行,所有表格都保存到单独的文件中,所以我正在寻找可以重复多次的内容。我弹出一个文件夹路径来选择位置,并有一个动态构建的文件名,但复制/粘贴规避我的文件。

目前撕毁我经过无数谷歌搜索后,有什么小毛发,感激地收到任何帮助。

+0

现在查看我的答案。 – Masoud

回答

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'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 
+1

我得到它的工作: 与wsh.Range(“A1:X20000”) .AutoFilter 1,“<>”'筛选以获得非空白单元格 wsh.Range(wsh.Cells(1,1 ),wsh.Cells(1,24).End(xlDown))。复制 我遗漏了第二个自动过滤器并调整了单元格参考。 感谢您的帮助! – Itsallgonepearshaped

+1

@Isallgonepearshaped我只是在调试它。是。这是问题所在。很高兴这是一个帮助。 – Masoud

相关问题