web-dev-qa-db-ja.com

CSVへのデータのエクスポート-Excel VBA

次のような現在のワークシートのセルにデータを生成する関数があるとします。

Cells(1, "A").Value = ...
Cells(2, "A").Value = ...
Cells(3, "A").Value = ...
Cells(4, "A").Value = ...

現在のワークブックの現在のワークシートである代わりに、それをcsvファイルに作成してロードし、特定のパスにしたい

いう C:\USERS\Documents\Sample.csv

のようなものを見てきました

     ActiveWorkbook.SaveAs Filename:= _
"c:\MyFile.csv", FileFormat:=xlCSV _
, CreateBackup:=False

しかし、これは現在のワークブックを別の場所に保存するだけですが、現在のワークシートにデータを生成して保存したくないので、すぐにエクスポートしたいですか?とにかく私はそれを行うことができます。たぶんActiveWorkbook = //pathnameそして、それをアクティブにしますか?

9
Thatdude1

VBAを使用して非常に簡単にCSVに書き込むことができます。例は次のとおりです。

Sub WriteCSVFile()

Dim My_filenumber As Integer
Dim logSTR As String

My_filenumber = FreeFile

logSTR = logSTR & Cells(1, "A").Value & " , "
logSTR = logSTR & Cells(2, "A").Value & " , "
logSTR = logSTR & Cells(3, "A").Value & " , "
logSTR = logSTR & Cells(4, "A").Value

Open "C:\USERS\Documents\Sample.csv" For Append As #My_filenumber
    Print #My_filenumber, logSTR
Close #My_filenumber

End Sub
12
The_Barman

.moveを使用してターゲットシートの新しいブックを作成し、新しく作成されたブックをCSVとして保存します。パス名を調整して、csvを保存するディレクトリを調整します。

    Pathname = "" & Thisworkbook.path & "YourName.csv"
    Sheets("Sheet you want as CSV").Move
    ActiveWorkbook.SaveAs Filename:=PathName, _
        FileFormat:=xlCSV, CreateBackup:=False
7
CharlieSmith

@CharlieSmithによってコードをかなりシンプルで使いやすいコードに変更するだけで、ワークブック内のすべてのシートが、それぞれのシート名で名前が付けられた新しいcsvファイルに変換されます。

Sub WriteCSVFile()
Dim i As Integer
Dim WS_Count As Integer

WS_Count = ActiveWorkbook.Worksheets.Count
For i = 1 To WS_Count
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets(i)
     PathName = "" & ThisWorkbook.Path & "\" & ws.Name & ".csv"
    ws.Copy
    ActiveWorkbook.SaveAs Filename:=PathName, _
        FileFormat:=xlCSV, CreateBackup:=False
Next i

End Sub

お役に立てれば

1
Praveen Agarwal