Excel:VBAを介してCSVとして保存し、手動で異なるファイルになります。

StackOverflow https://stackoverflow.com//questions/23058398

  •  26-12-2019
  •  | 
  •  

質問

他のプログラム(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>

役に立ちましたか?

解決

Q1:私は少なくとも私が一緒に引っ張った例ではない違いがあるとは思わない。 Q2:これを試してみてください:

以下の写真のようにC:\stack\folder1に3つの例のXLSMファイルを持っています。

start2

各ファイルには単一のデータシートがあり、これはCSVSに変わります。

start

あなたのルーチンがはるかに複雑であることを確信していますが、私はファイルをループするだけで、それぞれの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ファイルで終わります。

end2

各ファイルは、テキストエディタで開くとカンマ区切りです。

画像の説明がここにあります

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top