公式アカウントからの投稿が始まります

エクセルのシートのデータをVBAを使ってCVS形式で保存したいのですが、文字化けしてしまいます。手動で「名前を付けて保存」すると文字化けしません。文字化けしないようにするにはどうしたらいいでしょうか?
どなたかお教えいただきたく、よろしくお願いします。

----------------------------------------------------------------------
Sub test5()

Dim aaa As String
Dim fname As Variant


aaa = Format(Now, "YYMMDD")
fname = Application.GetSaveAsFilename(InitialFileName:=aaa & ".csv", fileFilter:="csvファイル(*.csv), *.csv")

If fname = False Then Exit Sub
'保存
Worksheets("sheet1").SaveAs fname

End Sub

A 回答 (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
だけで、目的の動作が可能です

今回は示されたコードを何回か試したので、妙な事は言ってないと思います^^;
    • good
    • 0
この回答へのお礼

pulsaさん

今回もご回答いただき、ありがとうございます。
引数の指定が足りなかったということですね。
application.GetSaveAsFilenameのapplication.をsheetにできればいいのかと思ってました(できなかったですけど。。。)

>Application.Dialogs(xlDialogSaveAs).Show Format(Now, "YYMMDD") & ".csv", xlCSV
↑↑
saveasのダイアログをcsvフォーマットで表示するということですね。
()が規定の名前になるということですね。

今回もまことにありがとうございました。

お礼日時:2008/06/06 08:07

'保存


>Worksheets("sheet1").SaveAs fname

引数、FileFormatをセットしてくだされ。

Worksheets("Sheet1").SaveAs fname, FileFormat:=xlCSV
 
以上。
 
    • good
    • 0
この回答へのお礼

onlyromさん
ありがとうございます。
うまくいきました。
format形式を指定するのですね。
どうもありがとうございました。

お礼日時:2008/06/06 07:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!