
エクセルで、複数の店舗で使用する「販売日報」を作成しております。
各店舗からいただくこの日報は別のシステムで取り込みを行う為、
ファイル名を統一する必要があり、店舗側で勝手にファイル名を作成
できないように、例えば、日報のエクセルのシート内に「ファイル保存」
ボタンを作成し、ファイル名を自動作成するマクロを登録したいと思って
おりますが、マクロはほとんど分からず、いいアイデアが浮かびません。
どなたかお知恵をお貸しいただけないでしょうか?
■ファイル名は、下記のように「販売日報」を先頭にして店舗名_保存日_
保存時間の体裁を考えてます。
ファイル名:販売日報_(店舗名)_(日付)_(時間)
※(店舗名)は販売日報(エクセル)内で「A1セル」など固定した
場所に入力されており、その値を参照したい。
※「日付」「時間」も自動作成したい。
うまくお伝えすることができませんが、イメージとしては「ファイル保存」
ボタンを押すと、エクセルで左上の「ファイル」-「名前を付けて保存」
を押した際に表示される「保存先を選択する画面」が表示され、ファイル名
には、『販売日報_(店舗名)_(日付)_(時間)』が既に表示されている、
といった具合です。
いろいろネットを介し調べましたが、ぴったりのものがなく悩んでおりました。
何卒宜しくお願いいたします。
No.1ベストアンサー
- 回答日時:
ご質問のマクロは、次のような感じですね。
Sub ブック保存()
Dim SaveFileName As String, re As Variant
With Sheets("Sheet1").Range("A1")
If .Value = "" Then
MsgBox "店舗名が入力されていません", vbExclamation
Exit Sub
Else
SaveFileName = "販売日報_" & .Value & "_" & Format(Now, "yyyymmdd_hhmmss")
End If
End With
re = Application.GetSaveAsFilename(SaveFileName)
If re = False Then
MsgBox "保存を中止しました", vbExclamation
Else
ActiveWorkbook.SaveAs SaveFileName
MsgBox "ブックを保存しました", vbInformation
End If
End Sub
Sheet1のセルA1に店舗名が入力されていたとします。
また、ファイル名の日時は「20080508_080305」という形式としました。
日時を設定しているのは"yyyymmdd_hhmmss"部分です。
なお、指示がありませんでしたので、ブックは『カレントフォルダ』に保存されるようにしています。
上記のマクロを、標準モジュールに貼り付けてください。
続いて、ワークシートにボタンを配置しましょう。
[表示]-[ツールバー]-[フォーム]で[フォーム]ツールバーを表示します。
[ボタン]ボタンをクリックしてからワークシート上をドラッグすると、その位置にボタンが配置されます。
[マクロの登録]ダイアログボックスが表示されますので、先に作ったマクロ「ブック保存」を選択して[OK]ボタンをクリックします。
この時点で、ワークシートに配置したボタンが選択状態になっていますので「ボタン 1」部分をクリックすれば、好きな文字列に編集できますよ。
編集が終わったら、どこかのセルをクリックして、ボタンの選択を解除してください。
この回答への補足
早速のご返答、また完璧なご指導いただき大変大変ありがとうございます!
やりたかったのは正にこれでした。本当に感激しております。
1点マクロの内容でご質問があります。
マクロの記述で、”『カレントフォルダ』に保存する”部分はどこに
なりますでしょうか?
また、カレントフォルダ以外で指定したフォルダに保存したい場合には
どのように記述すれば宜しいのでしょうか?
また、マクロではないかもしれませんが、せっかく「ファイル保存」
ボタンを作成しても、それを利用してくれず、通常通り「ファイル」-
「名前を付けて保存」されてしまうことも考えられます。
従い、「名前を付けて保存」を使用できないようにすることは可能
でしょうか?
あれもこれも聞くばかりで申し訳なく思っておりますが、何卒ご教授
いただきますようお願いいたします。
No.2
- 回答日時:
>マクロの記述で、”『カレントフォルダ』に保存する”部分はどこに
>なりますでしょうか?
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が自動的に「変更を保存しますか?」と聞いてきます。なにより、マクロを無効にしてこのブックが開かれれば、どんな制御も無駄になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2023/01/20 14:36
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル文書を保存したらメモ...
-
エクセルを上書き保存したのに...
-
エクセル・マクロ(VBA)で、指定...
-
ピボットテーブルの更新ができない
-
メール添付されているファイル...
-
EXCELで同一名のファイルがある...
-
Excelで上書き保存時の確認をは...
-
エクセル 更新していないのに...
-
Excelの読み取り専用について質...
-
エクセルで「ファイル保存名」...
-
いきなりPDFでPDFファイルを開...
-
複数のブックを上書き保存する...
-
エクセルがwindows終了時に未保...
-
「上書き保存」で一度警告を出...
-
EXCEL VBA で終了出来ますか?
-
Illustratorファイルに読み取り...
-
起動するとファイル名がbook11...
-
エクセル 上書きしていないの...
-
エクセル2007で互換モードで上...
-
エクセル2007 上書き保存せず...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを上書き保存したのに...
-
いきなりPDFでPDFファイルを開...
-
エクセル文書を保存したらメモ...
-
メール添付されているファイル...
-
Excel画面の自動更新 Excelファ...
-
エクセルでCSVファイルとして保...
-
エクセルでVBAを使用して1分毎...
-
EXCELで同一名のファイルがある...
-
ピボットテーブルの更新ができない
-
エクセル 更新していないのに...
-
Illustratorファイルに読み取り...
-
エクセルがwindows終了時に未保...
-
エクセル2007で互換モードで上...
-
マクロ VBA ファイル名を連番...
-
エクセル・マクロ(VBA)で、指定...
-
開いてるファイル(エクセル等)...
-
エクセルが「名前を付けて保存...
-
メールソフト「サンダーバード...
-
Excel2019とOneDriveでのサイン...
-
Excelで上書き保存時の確認をは...
おすすめ情報