Excel:VBAを介してCSVとして保存し、手動で異なるファイルになります。
質問
他のプログラム(Rなど)にインポートするために、複数のXLSMファイルをCSVとして保存する必要があります。私は他のすべてのプログラムで必要なインポートルーチンを書きました、そして彼らはケース1:
で非常にうまく機能しますケース1:XLSMをCSVとして手動で保存する このオプションを使用して各ファイルをCSVとして手動で保存し、すべてのプロンプトでYesをクリックすると、Excel内で再開されたときに通常のExcelファイルと非常によく似ている.csvファイルが取得されます。それは標準の列図であり、カンマが分離されていません(たぶんそれはそのようには見えません。)
ケース2:VBAからのXLSMをCSVとして保存する ここで私はExcelで再開されたときにまったく異なるファイルを入手します。これはすべての値がカンマで区切られているすべての値を持つ "Real" CSVファイルのように見えます。
私の質問は次のとおりです。 1.なぜ違いはありますか? 2.プログラムでPROGRAME 2がVBAから到達できますか?それとも不可能ですか?
2が不可能な場合は、「通常の」CSVファイルを処理するために私のインポートコードルーチンを書き換える必要があります...あまり難しくありませんが、それでも多くの仕事があり、なぜ違いもあります。< / P>
解決
以下の写真のようにC:\stack\folder1
に3つの例のXLSMファイルを持っています。
各ファイルには単一のデータシートがあり、これはCSVSに変わります。
あなたのルーチンがはるかに複雑であることを確信していますが、私はファイルをループするだけで、それぞれのxlCSV
:
Option Explicit
Sub TestCSVOutput()
Dim DataBook As Workbook
Dim DataSheet As Worksheet
Dim FilePaths(3) As String
Dim FileIdx As Long
'set up file paths for test
FilePaths(1) = "C:\stack\folder1\test_file_01.xlsm"
FilePaths(2) = "C:\stack\folder1\test_file_02.xlsm"
FilePaths(3) = "C:\stack\folder1\test_file_03.xlsm"
'loop through array and save each file as a CSV
Application.DisplayAlerts = False
For FileIdx = 1 To UBound(FilePaths)
Set DataBook = Workbooks.Open(FilePaths(FileIdx))
Set DataSheet = DataBook.ActiveSheet
DataBook.SaveAs FileFormat:=xlCSV '<~~ the save step
DataBook.Close
Next FileIdx
Application.DisplayAlerts = True
End Sub
.
スクリプトが完了したら、3つのCSVファイルで終わります。
各ファイルは、テキストエディタで開くとカンマ区切りです。