簡體   English   中英

使用 VBA 將 Excel 工作表的(部分)范圍導出為 CSV

[英]Export Range of (Part of) an Excel Sheet to CSV with VBA

我知道導出到 csv 已經被問到了大約 10 億次,我已經做了很多次了,但我試圖弄清楚如何只將工作表的一部分導出到 csv 而不循環遍歷每一行或單元格並將它們單獨打印到文件中。 我需要將本地格式作為一項要求來維護。

Sheets("PI_OUTPUT").Copy

這將復制整個工作表、疣和所有內容。 我在第 1 到 20000 行和 A 到 X 列中有公式,但在處理數據后有可變數量的空白行。 如果我使用 copy 方法,我會復制所有空行,這些行輸出為逗號行。 ,,,,,,, 等等....

我嘗試使用 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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM