エクセルのシートのデータを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
No.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
だけで、目的の動作が可能です
今回は示されたコードを何回か試したので、妙な事は言ってないと思います^^;
pulsaさん
今回もご回答いただき、ありがとうございます。
引数の指定が足りなかったということですね。
application.GetSaveAsFilenameのapplication.をsheetにできればいいのかと思ってました(できなかったですけど。。。)
>Application.Dialogs(xlDialogSaveAs).Show Format(Now, "YYMMDD") & ".csv", xlCSV
↑↑
saveasのダイアログをcsvフォーマットで表示するということですね。
()が規定の名前になるということですね。
今回もまことにありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Unity]シーンファイルの中が消...
-
複数のExcelファイルにある同名...
-
ユーザーフォームをコピーする...
-
CSVファイルの特定行の削除
-
エクセルの拡張子XLSのファイル...
-
彼女の過去の恋愛に嫉妬してし...
-
iCloud for Windowsをアンイン...
-
HTMLのリンクで、EXCELをIEでは...
-
エクセル保存終了で一時ファイ...
-
vbsからのExcelマクロ呼び出し...
-
Googleドライブについて
-
シェルでテキストファイルを半...
-
ファイルが移動してもリンクの...
-
Excelに貼り付けた画像を圧縮す...
-
秀丸エディタでHTMLの部分のURL...
-
c#でcsvファイルをリソースとし...
-
デスクトップ画面に「◯◯まであ...
-
ISOファイルを開くときにパスワ...
-
zip.001 zip.002 zip.003といっ...
-
EaseUSでLinuxブータブルディス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの特定行の削除
-
彼女の過去の恋愛に嫉妬してし...
-
OneDrive必要なものでしょうか
-
EXCELVBAにて文字列にして「01...
-
vbsからのExcelマクロ呼び出し...
-
複数のExcelファイルにある同名...
-
Excel: ファイル名になぜ、[...
-
ファイルが移動してもリンクの...
-
FTPのgetとputの使いわけ。
-
iCloud for Windowsをアンイン...
-
VBAにおいて、ファイルの移...
-
docxをmht形式で保存したファイ...
-
Excelに貼り付けた画像を圧縮す...
-
5000個のtiffファイルをpdfへ変...
-
[Unity]シーンファイルの中が消...
-
自動で.xlsを閉じて指定フォル...
-
エクセルのファイル:「自分」が...
-
Googleドライブについて
-
htmlファイルを結合して一つの...
-
エクセルの固定範囲にCSVを貼り...
おすすめ情報