- ベストアンサー
エクセルのシートデータをVBAでCSV形式で保存する方法
- エクセルのシートのデータをVBAを使ってCSV形式で保存すると文字化けしてしまう問題があります。手動で「名前を付けて保存」すると文字化けしないので、文字化けしないようにするためにはどうしたら良いか教えてください。
- エクセルのシートのデータをVBAを使ってCSV形式で保存すると文字化けしてしまいます。手動で保存すると文字化けしないので、文字化けしないようにするための方法を教えてください。
- エクセルのシートのデータをVBAを使ってCSV形式で保存したいのですが、文字化けする問題があります。文字化けしないようにする方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こ、これはですね・・・ 見た方が早そうなので手順を追って下さい 複数シートがあるファイルでご自身のコードを実行してください このマクロ実行直後に、手動で名前を付けて保存を表示してみてください この画面のファイル名の所はどうなっていますか? その下のファイルの種類はどうなっていますか? イメージとしては、エクセルファイルの拡張子を単に「.csv」と変更したのと同じ状態になっています 文字化けしたファイルをメモ帳で見ると、ちょうどエクセルファイルをメモ帳で開いたときと状況が似ていると思います 理屈というか、なんでこうなるのかと言うと まず GetSaveAsFilename は、ご存知の通りダイアログを出す"だけ"で、保存されません で、SaveAs の 引数の FileFormat >FileFormat 省略可能です。バリアント型 (Variant) の値を使用します。ファイルを保存するときのファイル形式を指定します。指定できる形式については、FileFormat プロパティを参照してください。既存のファイルでは、指定された最後のファイル形式が既定のファイル形式です。新しいファイルでは、現在使用されている Excel のバージョンでのファイル形式が既定のファイル形式です。 つまり、今のファイル形式が指定されています 作業中のファイルは"まだ保存されていない"ので、『エクセル形式で保存』が、上で言うところの規定のファイル形式です これに、"080606.csv"がファイル名と設定されて保存する事になるので、実験で出た状態 『080606.csv というファイル名のエクセルファイル』が出来上がります 試しに文字化けしたファイルをエクセルで開いて見てください 今度は逆に、普通に開けると思います しかもこのファイルは、シートも保持しています CSVファイルではありえないですよね? つまり >Worksheets("sheet1").SaveAs fname は Worksheets("Sheet1").SaveAs fname, xlCSV となります 因みに Application.Dialogs(xlDialogSaveAs).Show Format(Now, "YYMMDD") & ".csv", xlCSV だけで、目的の動作が可能です 今回は示されたコードを何回か試したので、妙な事は言ってないと思います^^;
その他の回答 (1)
- onlyrom
- ベストアンサー率59% (228/384)
'保存 >Worksheets("sheet1").SaveAs fname 引数、FileFormatをセットしてくだされ。 Worksheets("Sheet1").SaveAs fname, FileFormat:=xlCSV 以上。
お礼
onlyromさん ありがとうございます。 うまくいきました。 format形式を指定するのですね。 どうもありがとうございました。
お礼
pulsaさん 今回もご回答いただき、ありがとうございます。 引数の指定が足りなかったということですね。 application.GetSaveAsFilenameのapplication.をsheetにできればいいのかと思ってました(できなかったですけど。。。) >Application.Dialogs(xlDialogSaveAs).Show Format(Now, "YYMMDD") & ".csv", xlCSV ↑↑ saveasのダイアログをcsvフォーマットで表示するということですね。 ()が規定の名前になるということですね。 今回もまことにありがとうございました。