web-dev-qa-db-ja.com

セミコロン区切り文字でCSVとして保存

現在、この関数を使用して保存していますが、問題があります。

Private Sub spara()
    ActiveWorkbook.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", _
    FileFormat:=xlCSV, CreateBackup:=False
End Sub

自動的に,で保存しますが、ファイルに;で保存する必要があります。どういうわけかそれが節約する方法を変えることは可能ですか?

この問題についてグーグルで調べてみましたが、.csvファイルの保存に関するすべてのマクロは、.csvで保存する方法と、複数のシートを.csvに分割する方法です。

9
saknar namn

Excelはどの言語を使用していますか?母国語で「;」を使用している場合デフォルトでは、パラメータ「local:= True」を渡すことができます

ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True

そうでない場合、あなたの唯一の選択は後で検索して置き換えることです...

13
Christian Sauer

Excelオプション(詳細、編集オプション)を変更して、小数点記号を,に設定します(明らかに(!))

2
pnuts

この問題は、ExcelVBAのみを使用して解決できない可能性があります。問題は、Excel Save As...がマシンロケール定義リスト区切り値を使用するのに対し、Excel VBAは常にen-USロケールを使用するため、常に,をリスト区切り文字として使用することです。

CSVを保存してから、後処理にカスタムコンソールアプリ/スクリプトを使用することをお勧めします。 ,-csvを読み取って;-csvとして保存できるCSVパーサーがたくさんあります。

1
Petr Abdulin

ブックを閉じるときに「SaveChanges:= False」を追加して解決しました

With ActiveWorkbook
     .SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
     .Close SaveChanges:=False
End With
1
Lionel T.

このコードに問題がある人のために

dim wa as Workbook

Workbooks.OpenText FileName:=path2file, _
DataType:=xlDelimited, Semicolon:=True, Local:=True
set wa = ActiveWorkbook

    wa.SaveAs FileName:=path2file, FileFormat:=xlCSV, _ ConflictResolution:=xlLocalSessionChanges, Local:=True

    wa.Close False

2行目は非常に重要です。wa.Close Falseがない場合は保存の承認を求められ、wa.Close Trueの場合は「;」が置き換えられます。にとって "、"。

ローカル設定に入り、「;」を作成した後リスト区切り文字であるVBAは、まだ「、」で区切られていました。コードを上記に変更して完了しました。

これがいくつかの光を投げることを願っています

0
dmb

私が抱えていた同様の問題を解決するためにこれを調べていました。csvファイルにエクスポートするExcelシートがありました。これは他の場所に読み込まれますが、文字の区切りにはコンマではなくセミコロンを使用する必要があります。これは機能しました。次のコントロールパネル>>地域と言語>>追加設定>>リスト区切り文字をカンマからセミコロンに変更したので、手動でファイルをエクスポートしていたときは問題ありませんでした。しかし、VBAを介して自動化しようとすると、デフォルトでカンマに戻りました。修正するために、上記のChristian Sauerが提案したようにローカルのパラメーターを追加しました。これにより、地域の設定を変更したことがわかります。

ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True

ポインタをくれたChristianに感謝します。

0
Jason