• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBEで「名前を付けて保存」する方法)

VBEで「名前を付けて保存」する方法

このQ&Aのポイント
  • VBEを使用して「名前を付けて保存」する方法について知りたいです。
  • 保存するファイル名を変数とし、保存するディレクトリを指定する方法について教えてください。
  • 保存したファイルに読み取りのパスワードを設定し、保存後にファイルを閉じるかどうかのダイアログを表示する方法を教えてください。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 簡単な操作かと存じますので、ベタ打ちのコードを呈示するだけではなくて、少し解説させていただきます。  先ず、お示しの条件で [新しいマクロの記録] を取ってみましょう。 ChDir "C:\Program Files" ActiveWorkbook.SaveAs Filename:="C:\Program Files\0423.xls", FileFormat:= _   xlNormal, Password:="0423", WriteResPassword:="", ReadOnlyRecommended:= _   False, CreateBackup:=False というコードが得られます。 >ファイル名は変数(4日後の日付をMMDDで。  これは、ワークシートでは =TEXT(TODAY()+4,"MMDD") という式になりますね。  VBA では [TEXT 関数] は [Format 関数] に、[TODAY 関数] は [Date 関数] になりますので、そのまま、 Format(Date + 4, "MMDD") でよいでしょう。 >月を跨いでもきちんと認識されるように Debug.Print Format(Date + 11, "MMDD") を実行すると、イミディエイトウィンドウ に「0430」と表示され、「11」を「12」に変更して実行すると「0501」と表示されます。  問題ありませんね。  ということで、 "C:\Program Files\0423.xls" の部分が "C:\Program Files\" & Format(Date + 4, "MMDD") & ".xls" に、 Password:="0423" の部分は、そのまま Password:=Format(Date + 4, "MMDD") になります。 >保存したらファイルを閉じるかどうかのダイアログを出す。  [MsgBox 関数の使用例] のヘルプをご覧ください。 Dim Response Response = MsgBox("保存しました。ブックを閉じますか?", vbYesNo, "保存後の処理") If Response = vbYes Then  ThisWorkbook.Close End If でどうでしょうか?  ということで、ベタ打ちのコードは下記のようなことになりますが、既に同名のブックが存在する場合の処理はしておりませんので、別途お考えください。 Sub TEST()  Dim MyFolder As String  Dim MyDate As String  Dim Response As Integer  MyFolder = "C:\Program Files"  MyDate = Format(Date + 4, "MMDD")  ChDir MyFolder  ActiveWorkbook.SaveAs Filename:=MyFolder & "\" & MyDate & ".xls", _   Password:=MyDate  Response = MsgBox("保存しました。ブックを閉じますか?", vbYesNo, "保存後の処理")  If Response = vbYes Then   ThisWorkbook.Close  End If End Sub  なお、要らぬお節介ですが、「C:\Program Files直下」に ユーザーファイル を保存するのはいかがかと存じます。  せめて、ワンクッション置いて  MyFolder = "C:\Program Files\hoge" みたいにされる方がよいかと。。。

rihitomo
質問者

お礼

ありがとうございます! 素晴らしく役に立ちました。 しかも解説まで付けていただいて、とても分かりやすかったです!

関連するQ&A

専門家に質問してみよう