2013-10-09 6 views
8

は、私のような現在のワークシートに細胞内にいくつかのデータを生成する関数があるだろう。その代わり、現在のワークブックの現在のワークシートであることのデータのエクスポートエクセル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のようにして、それを有効にする?

+3

まず、新しいブックを開くことができます。その後、新しいワークブックにマクロ預金データがあります。次に、選択したフォルダにchoiseという名前で新しいワークブックをcsvとして保存します。次に、新しいブックを閉じます。 –

+0

@ Gary'sStudent私は 'Workbooks.Add'を使って別のワークブックを作成しています。どのように私は今それをインポートすることを確認するために活性化するだろう... 'NewWorkbook.Sheets(1).Activate'のようなものですか? – Thatdude1

+2

workbooks.addだけを使用しない... workbookとしてdim wbを使用する// wb = workbooks.addを// wbで設定する... –

答えて

12

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 
+0

The_Barman:とても素敵できれい! –

+5

このソリューションは、データに空白や改行またはコンマがある場合は処理しません。独自の文字列を連結するのではなく、常に実際のCSV関数を使用してください。 – dataless

+10

dataless ...より良い解決策を示唆するのではなく、サイトに実際に追加していない...より良いソリューションを投稿する時間を取ってください。私は常に喜んで学びます。たぶん、他の人をノックするのではなく、むしろ助けてみてください。 –

6

は、CSVとして新しく作成された本を.saveas、対象シートの新しい本を作るために.moveを使用してください。パス名を調整して、csvを保存するディレクトリを調整します。

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

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

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 

ホープこれは

関連する問題