現在、この関数を使用して保存していますが、問題があります。
Private Sub spara()
ActiveWorkbook.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", _
FileFormat:=xlCSV, CreateBackup:=False
End Sub
自動的に,
で保存しますが、ファイルに;
で保存する必要があります。どういうわけかそれが節約する方法を変えることは可能ですか?
この問題についてグーグルで調べてみましたが、.csvファイルの保存に関するすべてのマクロは、.csvで保存する方法と、複数のシートを.csvに分割する方法です。
Excelはどの言語を使用していますか?母国語で「;」を使用している場合デフォルトでは、パラメータ「local:= True」を渡すことができます
ActiveWorkbook.SaveAs Filename:="C:\Temp\Fredi.csv", FileFormat:=xlCSV, CreateBackup:=False, local:=True
そうでない場合、あなたの唯一の選択は後で検索して置き換えることです...
Excelオプション(詳細、編集オプション)を変更して、小数点記号を,
に設定します(明らかに(!))
この問題は、ExcelVBAのみを使用して解決できない可能性があります。問題は、Excel Save As...
がマシンロケール定義リスト区切り値を使用するのに対し、Excel VBAは常にen-USロケールを使用するため、常に,
をリスト区切り文字として使用することです。
CSVを保存してから、後処理にカスタムコンソールアプリ/スクリプトを使用することをお勧めします。 ,-csv
を読み取って;-csv
として保存できるCSVパーサーがたくさんあります。
ブックを閉じるときに「SaveChanges:= False」を追加して解決しました
With ActiveWorkbook
.SaveAs Filename:="T:\filepath+ ActiveWorkbook.Name", FileFormat:=xlCSV, Local:=True
.Close SaveChanges:=False
End With
このコードに問題がある人のために
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は、まだ「、」で区切られていました。コードを上記に変更して完了しました。
これがいくつかの光を投げることを願っています
私が抱えていた同様の問題を解決するためにこれを調べていました。csvファイルにエクスポートするExcelシートがありました。これは他の場所に読み込まれますが、文字の区切りにはコンマではなくセミコロンを使用する必要があります。これは機能しました。次のコントロールパネル>>地域と言語>>追加設定>>リスト区切り文字をカンマからセミコロンに変更したので、手動でファイルをエクスポートしていたときは問題ありませんでした。しかし、VBAを介して自動化しようとすると、デフォルトでカンマに戻りました。修正するために、上記のChristian Sauerが提案したようにローカルのパラメーターを追加しました。これにより、地域の設定を変更したことがわかります。
ActiveWorkbook.SaveAs Filename:="Filename.txt", FileFormat:=xlCSV, CreateBackup:=False, Local:=True
ポインタをくれたChristianに感謝します。