質問: エクセルで「ファイル保存名」を自動作成したい エクセルで、複数の店舗で使用する「販売日報」を作成しております。 各店舗からいただくこの日報は別のシステムで取り込みを行う為、 ファイル名を統一する必要があり、店舗側で勝手にファイル名を作成 できないように、例えば、日報のエクセルのシート内に「ファイル保存」 ボタンを作成し、ファイル名を自動作成するマクロを登録したいと思って おりますが、マクロはほとんど分からず、いいアイデアが浮かびません。 どなたかお知恵をお貸しいただけないでしょうか? ■ファイル名は、下記のように「販売日報」を先頭にして店舗名_保存日_ 保存時間の体裁を考えてます。 ファイル名:販売日報_(店舗名)_(日付)_(時間) ※(店舗名)は販売日報(エクセル)内で「a1セル」など固定した 場所に入力されており、その値を参照したい。 ※「日付」「時間」も自動作成したい。 うまくお伝えすることができませんが、イメージとしては「ファイル保存」 ボタンを押すと、エクセルで左上の「ファイル」-「名前を付けて保存」 を押した際に表示される「保存先を選択する画面」が表示され、ファイル名 には、『販売日報_(店舗名)_(日付)_(時間)』が既に表示されている、 といった具合です。 いろいろネットを介し調べましたが、ぴったりのものがなく悩んでおりました。 何卒宜しくお願いいたします。
回答: >マクロの記述で、”『カレントフォルダ』に保存する”部分はどこに >なりますでしょうか? savefilename = "販売日報_" & .value & "_" & format(now, "yyyymmdd_hhmmss") を savefilename = curdir & "\" & "販売日報_" & .value & "_" & format(now, "yyyymmdd_hhmmss") とします。 >また、カレントフォルダ以外で指定したフォルダに保存したい場合には >どのように記述すれば宜しいのでしょうか? たとえば「c:\data\」フォルダに保存したいのでしたら、 savefilename = "販売日報_" & .value & "_" & format(now, "yyyymmdd_hhmmss") を savefilename = "c:\data\販売日報_" & .value & "_" & format(now, "yyyymmdd_hhmmss") としてください。 ただし「デスクトップ」「マイドキュメント」などに保存する場合は、もう少しめんどうです。 これらのフォルダはパソコンごとにフォルダ名が異なりますので、次のようにマクロを変更してください。 sub ブック保存() dim savefilename as string, re as variant, wsh as variant, path as string set wsh = createobject("wscript.shell") path = wsh.specialfolders("desktop") & "\" ''デスクトップの場合 path = wsh.specialfolders("mydocuments") & "\" ''マイドキュメントの場合 with sheets("sheet1").range("a1") if .value = "" then msgbox "店舗名が入力されていません", vbexclamation exit sub else savefilename = path & "販売日報_" & .value & "_" & format(now, "yyyymmdd_hhmmss") end if end with set wsh = nothing re = application.getsaveasfilename(savefilename) if re = false then msgbox "保存を中止しました", vbexclamation else activeworkbook.saveas savefilename msgbox "ブックを保存しました", vbinformation end if end sub >従い、「名前を付けて保存」を使用できないようにすることは可能 >でしょうか? 「名前を付けて保存」を完全に使用できなくすることは、不可能だと考えた方がいいでしょう。 メニューを隠したり、ショートカットキーを無効にする程度なら可能ですが「名前を付けて保存」機能自体を無効にすることはできませんし、するべきではありません。マクロはexcelが持つ機能のひとつに過ぎないからです。 たとえば、シートを編集して、excel自体を終了しようとすれば、excelが自動的に「変更を保存しますか?」と聞いてきます。なにより、マクロを無効にしてこのブックが開かれれば、どんな制御も無駄になります。