私はcsvへのエクスポートが約10億回要求されたことを知っています、そして私はかなり何度もそれをしました、しかし私は各行またはセルを循環することなくシートの一部だけをcsvにエクスポートする方法を理解しようとしていますそしてそれらをファイルに個別に印刷します。 1つの要件として、ローカルのフォーマットを維持する必要があります。
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 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