結果を.csv
ファイルとして出力する必要があります。このファイルは後で別のプロセスによって解析されます。これらの結果を生成するために、必要なすべてのマクロと関数を含む巨大なワークブックがあります。
VBA
から別の.csv
ファイルを「作成」することは可能ですか?VBA
機能を使用してそれに書き込むことは可能ですか?ありがとうございました :)
このようなものが欲しいですか?
Option Explicit
Sub WriteFile()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum
Print #OutputFileNum, "Field1" & "," & "Field2"
SheetValues = Sheets("Sheet1").Range("A1:H9").Value
ReDim LineValues(1 To 8)
For RowNum = 1 To 9
For ColNum = 1 To 8
LineValues(ColNum) = SheetValues(RowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
コンマを含むフィールドを引用符で囲む必要があることを忘れないでください。
トニーの答えは通常は機能しますが、テキストにカンマや引用符が含まれている場合には対応しません。 Workbook.SaveAsメソッドを使用することをお勧めします。
Sheet1のコンテンツを個別のcsvファイルとして保存する場合の例を次に示します。
Sub create_csv()
Dim FileName As String
Dim PathName As String
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
FileName = "filename.csv"
PathName = Application.ActiveWorkbook.Path
ws.Copy
ActiveWorkbook.SaveAs FileName:=PathName & "\" & FileName, _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
Sheet1に以下が含まれているとします。
lorem ipsum
lore、m ips "um"
出力csvファイルは次のようになります。
lorem、ipsum
"ロア、m"、 "ips" "um" ""
現在のワークブック(開いたExcelファイル)をVBAからCSVに保存するようなマクロを記述できます。
ActiveWorkbook.SaveAs Filename:="C:\Book1.csv", _
FileFormat:=xlCSVMSDOS, CreateBackup:=False