• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでマクロを使ってCSV保存時のファイル名)

エクセルでマクロを使ってCSV保存時のファイル名

このQ&Aのポイント
  • エクセルでマクロを使ってCSV形式でデータを保存する方法について教えてください。
  • 保存するファイル名を各人のエクセルファイル名にし、場所を同僚のデスクトップに指定したいです。
  • マクロの修正方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

回答No.2です。 今、 Sub Sample() Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False End Sub で、もう一度、試しましたが(「Sub Sample()」と「End Sub」を追加しただけで、それ以外は、全くいらっていません)、エラーなど出ませんでした。 ただ、私、勘違いをしていました。 「ThisWorkbook.Name」ですと、「.xlsm」が付いてしまいました(「~.xlsm.csv」となってしまいました)。 そこで、以下のようにしていただければ、「~.csv」となります。 Sub Sample() Set so = CreateObject("Scripting.FileSystemObject") Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" fn = so.GetBaseName(ThisWorkbook.Name) ActiveWorkbook.SaveAs Filename:=dt & fn & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False End Sub 申し訳、ございませんでした。

noname#259941
質問者

お礼

Prome_Lin様、 申し訳ございません。なんてそんな・・・こんなに丁寧にアドバイスして頂き、こちらこそ本当にすみません&ありがとうございました。 教えて頂いたものをそのままコピペして、実行しましたら、私の理想通りのものが出来ました。本当に本当にどうもありがとうございます。

その他の回答 (2)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

それぞれのパソコンの「デスクトップ」は Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" で、「dt」に入ります。 したがって、「ChDir "C:\Users\XXXX\Desktop"」は不要で、 Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & "AAAA.csv", FileFormat:=xlCSV, CreateBackup:=False で、デスクトップに、「AAAA.csv」という名前で保存されます。 次に、マクロが走っている、エクセルのファイル名は、 「ThisWorkbook.Name」または、「ActiveWorkbook.Name」で取得できます。 このとき、拡張子がつきませんので(たとえば、「abc.xlsx」なら「abc」)、そのまま Set ws = CreateObject("WScript.Shell") dt = ws.SpecialFolders("Desktop") & "\" ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False で、エクセルと同じファイル名の「csv」ファイルとして保存されます。

noname#259941
質問者

補足

教えて頂いたものをそのままコピペして、試して見たのですが、「構文エラー」となり、以下の部分が赤文字になってしまいました。昨日買ってきた本を見てもさっぱり解決できず、大変恐縮なのですが、再度教えて頂けないでしょうか?どうぞ宜しくお願い致します。 ActiveWorkbook.SaveAs Filename:=dt & ThisWorkbook.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

最後の方のマクロは編集モードで開けたんですね?(vba) その通りです。 xxx aaa を単に書き換えてvbaを閉じれば保存されます。

noname#259941
質問者

補足

早々にどうもありがとうございました。 そして、私の質問の仕方がちょっと言葉足らずです、すみません。 人にそのマクロファイルを渡しても、いちいち私や受取った人がXXXやAAAを書き換えないでも済む用にしたいのです。私が最初にマクロの編集モードでXXXやAAA含むその他の部分もVBAを書き換えてしまえば、使う人やPCが変わってもマクロを編集しなくても済むかなと考えております。 重ねての質問ですみません。どうぞ宜しくお願い致します。

関連するQ&A