• ベストアンサー
  • 困ってます

エクセルで「ファイル保存名」を自動作成したい

エクセルで、複数の店舗で使用する「販売日報」を作成しております。 各店舗からいただくこの日報は別のシステムで取り込みを行う為、 ファイル名を統一する必要があり、店舗側で勝手にファイル名を作成 できないように、例えば、日報のエクセルのシート内に「ファイル保存」 ボタンを作成し、ファイル名を自動作成するマクロを登録したいと思って おりますが、マクロはほとんど分からず、いいアイデアが浮かびません。 どなたかお知恵をお貸しいただけないでしょうか? ■ファイル名は、下記のように「販売日報」を先頭にして店舗名_保存日_ 保存時間の体裁を考えてます。  ファイル名:販売日報_(店舗名)_(日付)_(時間)   ※(店舗名)は販売日報(エクセル)内で「A1セル」など固定した    場所に入力されており、その値を参照したい。   ※「日付」「時間」も自動作成したい。 うまくお伝えすることができませんが、イメージとしては「ファイル保存」 ボタンを押すと、エクセルで左上の「ファイル」-「名前を付けて保存」 を押した際に表示される「保存先を選択する画面」が表示され、ファイル名 には、『販売日報_(店舗名)_(日付)_(時間)』が既に表示されている、 といった具合です。 いろいろネットを介し調べましたが、ぴったりのものがなく悩んでおりました。 何卒宜しくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数9673
  • ありがとう数7

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

  • ベストアンサー
  • 回答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点マクロの内容でご質問があります。 マクロの記述で、”『カレントフォルダ』に保存する”部分はどこに なりますでしょうか? また、カレントフォルダ以外で指定したフォルダに保存したい場合には どのように記述すれば宜しいのでしょうか? また、マクロではないかもしれませんが、せっかく「ファイル保存」 ボタンを作成しても、それを利用してくれず、通常通り「ファイル」- 「名前を付けて保存」されてしまうことも考えられます。 従い、「名前を付けて保存」を使用できないようにすることは可能 でしょうか? あれもこれも聞くばかりで申し訳なく思っておりますが、何卒ご教授 いただきますようお願いいたします。

関連するQ&A

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • Excelマクロでpdfを自動作成したい

    複数のExcelシートからなるブックを、pdfとして出力しています。 現在はJustSystemのJustpdf2ドライバを使っているのですが、これだとマクロで完全自動化できないことが判明しました。 ・PDFのフアイル名と保存場所 ・上書きかどうか をいちいち聞いてきます。 Excelマクロで完全自動化するには、 ・ファイル名、保存場所をマクロで指定できる。もしくはExcelファイルと同じ場所に同じファイル名で作成する ・1シート目は上書き、2シート目からは現存のpdf (前シートのpdf)に続けて保存できるように、マクロで「上書き」か「続けて保存」かを指定できる ことが必要なのですが、JustSystemに問い合わせたところ、Justpdf2では無理とのことでした。 上記のように、複数シートからなるExcelブックを、マクロで完全自動でPDF化できるドライバ、方法がありましたら、お教えください。

  • エクセルファイルを数人で自動作成するには?

    以前このような質問をしました。 ☆効率的な書類の作成について教えて下さい http://okwave.jp/qa/q9134400.html 複数のユーザーが入力するデータを、 1つのエクセルファイルに効率的にまとめたいのです。 2つのオプションをさらに考えました。 (1)OUTLOOKにデータをメールしてもらい、 マクロで、自動的にメールからエクセルに保存していく。 (2)INFOPATHのフォームを作成し、 それをメールして、入力したデータをエクセルファイルに保存していく どちらのオプションがいいでしょうか?

その他の回答 (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

  • エクセルVBAでの自動ファイル保存

    エクセルVBAを使い入力したシート(ファイル)を、一定のデータが 入力された時点で指定した場所に例えば作成日をファイル名にして自動 的に保存していくようにしたいのですが、プログラムはどのようにすればいいのでしょうか? 実現させたいプログラムは、このような感じにしたいです。 1.VBAで指定シートにデータ入力→2.データ数10個で自動的に日付をファイル名にして自動的に保存→3.更に、データ10個追加された時点で前に作成されたファイルを自動で更新→4.データの入力完了で更に自動で更新 2~4のプログラムをご教授お願いします。

  • エクセルについての質問

    現在、エクセルの4つファイルを6人で共有しています。 そのファイルA~Dに店舗情報が2000件程あります。 A~Dファイルの店舗名は一致していますが、情報の内容が違います。 やりたいことは店舗名毎にファイルを作り、店舗名毎のファイルにA~Dファイルの内容を参照させたいと考えています。 店舗名毎のファイルのテンプレートはあります。 アドバイスをいただきたい事 (1)、Aファイルの店舗名から自動的にテンプレートのファイルのファイル名を入力してエクセルファイルとして作成する方法。作成するファイルは2000個位になります。 (2)、(1)で作成したファイルのを自動で開き(VLOOKUP関数があります)、参照させたのち、ファイルを保存して閉じる。 (3)、(2)の内容を繰り返す。2000個のファイルがあるため。

  • エクセルファイルのPDF保存マクロ

    お世話になります。 エクセル2007を使用しています。コマンドボタンを押すとMsg BOXを出現させ「PDF形式で保存しますか?」と表示し「はい」を押すとエクセルファイルをPDFファイル形式に自動で保存しようと考えています。 紙の大きさはB4サイズでPDFファイルに保存させたいです。 保存先はデスクトップのフォルダ「購買分」と言う所に保存します。 保存の名称に関してはエクセルファイルのC1には「2014年2月」と表示されており「購買分2014年2月」と自動で保存してくれる様にしたいです。 この様なマクロはエクセルで組むことが出来るのでしょうか?

  • 開いてるファイル(エクセル等)をバッチかVBScript自動的に保存す

    開いてるファイル(エクセル等)をバッチかVBScript自動的に保存する方法は? 幾つかのアプリを終了させ、その際エクセルを終了するときに、 開いているエクセルファイルを全部自動的に保存させて終了させたいと思います。 バッチでは保存のコマンドは無いようで、VBSで終わらせ方は分かったのですが、その前の保存がわかりません。ちなみにBookのタイトルはそのときにより変わります。あと今回はエクセルのマクロはつかいたくないので、VBSで使えるのでお願いします。

  • エクセルのcsv保存で。。

    前と同じような質問ですみません。。。 エクセルのSheet5をcsv形式で保存する際、 名前を付けて保存のダイアログを表示させて、 ファイルの名前を常に「bonaplus.csv」と 既定値で表示させておくようなマクロは できないでしょうか? ※bonaplusの後には作成日付を入力します。 ※csvファイルを作成した後に元のエクセルファイルの  保存になります。

  • エクセルファイルの自動送信

    アンケートをエクセルで作成し、ファイルを配布して、アンケートの入力が終了したら、それをメールに添付して返信してもらう予定です。 パソコンの操作に不慣れな人がいることを考えて、たとえば、エクセルのシートに「送信」ボタンを配置し、これをクリックすれば・・・ 1.エクセルファイルを保存 2.メールソフトを起動 3.メールにエクセルファイルを添付 4.送信先(自分のメールアドレス)を自動入力 5.送信 という一連の流れをマクロで実行できないかと考えているのですが可能でしょうか? メールが使えない場合もあると思いますので、そのときはFDで回収しようと思います。 可能であれば、マクロをどう記述すればいいか教えて頂けないでしょうか。 アクセスVBAについては少々わかるのですが、エクセルは未経験です。 よろしくお願いします。

  • エクセル保存時に自動で日付

    お世話になります。 エクセル2003で保存するときに、 ファイル名の頭に、あるセルの日付を毎回打たなくても自動でつけることってできますか? マクロでもかまいませんが。 たとえばA1に061212と入っていたら、 そのブックを保存するときに、061212 業務日報って自動で保存時の名前に出るように なるでしょうか?

  • エクセルでファイルをcsv形式で保存するマクロについて

    同様の質問が以前にあったのですが、 どうやら私のは少し違うようなので新規質問として投稿させていただきます。 エクセルファイルを保存する際、保存形式を「テキスト(タブ区切り)(*.txt)」にして、 ファイル名の拡張子の部分だけ(.csv)にして保存するマクロを作成したいです。 しかし、エクセルに付いているオートマクロ機能で記録しようとすると、 ・ファイル名がオートマクロを作成した際に付けたファイル名になってしまう。 ・保存場所がオートマクロを作成した際に保存したフォルダになってしまう。 という問題が発生します。 なので、 ・保存する際のファイル名は現在作業しているファイルの名前をそのまま使用する。 ・保存する際のファイル名の拡張子部分は(.csv)に変更する ・保存場所は現在作業しているファイルがあるフォルダにする(もしくはプログラムで予めパスを指定できる)。 ・保存形式は「テキスト(タブ区切り)(.txt)」 の4つの条件を満たすマクロの作成方法をお教えいただけますでしょうか? すみませんが、よろしくおねがいします

  • エクセルで作成した2つのファイルを同時に開くとおかしくなります

    エクセル2003で作成したファイルを、2つ同時に開いた時なのですが、開くことは開くのに画面上で同時に表示できません。 左下のタスクバー上には2種類のファイル名 (とりあえずAとBとします) が一応は表示されます。 ところが画面上ではどちらか一方のファイル (たとえばA) しか開かれておらず、タスクバーで表示されている、もう一方のファイル名 (B) をクリックすると何とか開きますが、その時に自動的に先に開いていたファイル (A) が最小化されてしまうのです。 「あれ?」 と思って、タスクバーにあるファイル名 (A) をクリックすると一応は開くのですが、、今度は開いたはずのファイル (B) が勝手に最小化されるのです。 どうしてですか? あるいは、そもそも同時に2つのエクセルファイルを作業するのは無理なんでしょうか? OSはXPです。

  • VBA ファイル作成時にマクロを含まない

    只今、excelのVBAを学習中です。早速ですが質問させていただきます。 excelファイルを作成し、入力されたファイル名で保存するプログラムを組んでいます。 その際、作成したファイルがマクロを含んでしまうのですがマクロをふくまないようにする事は可能でしょうか? VBAを始めたばかりなので初歩的な質問で大変恐縮です。よろしくお願い致します。