2017-06-06 112 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

相關問題