- ベストアンサー
Excelで請求書を作成する際に自動的にフォルダを作成して保存する方法
- Excelで請求書を作成する際に、ファイル名の頭4桁に年月を入れ、保存先候補として自動的にフォルダを表示する方法について質問します。
- 具体的には、あらかじめ一年分のフォルダを作成しておき、請求書の保存時に自動的に対象月のフォルダに保存できるようにしたいと考えています。
- 現在はファイル名に年月を表示することはできていますが、保存先の設定について悩んでいます。効率的な方法があれば教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 日付入力セルに、22/07と入力すると平成22年07月と表示されるように設定していますが、そのせいでしょうか? 恐らくその通りです。 I1セルに入っているのは何ですか?日付のシリアル値ですか?文字列ですか? #表示はどうでもいいです。 前回の捕捉に4桁の数値で平成年月が入っているとありましたので、2207と、4桁の数字が入っている前提で書いていました。日付のシリアル値が入っているのでしたら、コードの2か所を変更してください。 sPath = ThisWorkbook.Path & "\" & Format(Range("I1").Value, "0000") sFile = Format(Range("I1").Value, "0000") & "任意の言葉.xls" ↓ sPath = ThisWorkbook.Path & "\" & Format(Range("I1").Value, "eemm") sFile = Format(Range("I1").Value, "eemm") & "任意の言葉.xls" 文字列でしたら、ほかのセルで何とかして4桁の数値にしてください。 あと、保存しなかった時が分かりにくいのでしたら、以下のように変更してください。 ErrTrap: ↓ Exit Sub ErrTrap: MsgBox("保存しませんでした") ちゃんとできればあなたの要求はほぼ満たすものになるはずです。
その他の回答 (4)
- mt2008
- ベストアンサー率52% (885/1701)
ANo.3です。 「名前を付けて保存」のダイアログに拘っているわけではないんですね? では、シート上にボタンを配置し、そのボタンを押すと、I1セルの4桁の数値を基にしたフォルダとファイル名で保存するやり方を……。 Excelのバージョンが書いていないので、2003の場合で説明します。 1.シート上にコントロールツールボックスでボタン(CommandButton1)を貼り付ける。ボタンのCaptionは適当に変更(例:請求書保存)。 2.貼り付けたボタンをWクリックするとVBエディタ画面が開きます。 開かない場合は、デザインモードにします。 3.VBエディタに以下を貼り付けます ---- Private Sub CommandButton1_Click() Call Sample1 End Sub Sub Sample1() Dim sPath As String Dim sFile As String sPath = ThisWorkbook.Path & "\" & Format(Range("I1").Value, "0000") sFile = Format(Range("I1").Value, "0000") & "任意の言葉.xls" If MsgBox(sPath & "\" & sFile & " に、存在します。", vbOKCancel) = vbCancel Then Exit Sub If Dir(sPath, vbDirectory) = "" Then MkDir (sPath) 'フォルダが無ければ作成 On Error GoTo ErrTrap Shapes("CommandButton1").Cut 'ボタン削除 ActiveWorkbook.SaveAs Filename:=sPath & "\" & sFile MsgBox ("保存しました") ErrTrap: End Sub ---- #「任意の言葉」は適当に変更してください。 4.シートに戻り、デザインモードを終了(ボタンを押せる状態にする)。 5.このブックを請求書の原本として保存します(Excelのメニューから保存)。 請求書として保存する時はシートに貼り付けたボタンを押すと、I1セルの値を元にしたフォルダとファイル名で保存します。 また、その際、ボタンは削除します(請求書ブックにボタンは残らない)。
補足
わかりやすい回答、ありがとうございます。さっそくやってみましたが、なぜかうまくいきません。 日付入力セルに、22/07と入力すると平成22年07月と表示されるように設定していますが、そのせいでしょうか? ちなみに、使用ソフトはエクセル2002、OSはXPのホームエディションです。 また、ボタンをクリックすると、 D:¥会社書類¥ホーム書類¥発行済み見積請求書¥¥任意の言葉.xls.に存在します と表示されますが、Dドライブを探しても、ほかを探しても、ファイルが見つかりません。 原本ファイルは元の場所にそのままありますが、ボタンを一度クリックすると、ボタンが消えてしまうので、再度原本ファイルを開いて別な請求書を作りたいときに、コマンドボタン表示させる必要があるので、できれば、原本ファイルと同フォルダ内にある月ごとのサブフォルダ(2207や2208や2209・・・)に保存され、なおかつ、原本ファイルを開いたときにはコマンドボタンもすぐ押せるようになっていてほしいのですが・・無理でしょうか? 無茶な注文、本当にすみません。日常的に請求書を作る人が、機械に弱く、説明してもなかなか理解できず、保存先フォルダを間違えたり・・はしょっちゅうで、後で大変なので、できるだけ操作をシンプルにして、ミスのないようにしたいなと思っています。本来ならもっともっと勉強してから書き込むほうが、ツーカーで通じるのかもしれません・・私の知識もまだ浅く、試行錯誤しましたがうまくできませんでした。申し訳ないですが、補足で回答をいただけないでしょうか??
- mt2008
- ベストアンサー率52% (885/1701)
ファイル名を基にするのではなく、セルに入れた日付を元に、フォルダとファイル名を決めて「名前を付けて保存」ダイアログを表示する方法です。 A1セルに日付(=Today()でもいい)を入れておき、C:\TEST\の下のその日付を元にしたフォルダ(今月なら"2207")に日付を基にしたファイル名(例:平成22年07月01日.xls)で保存する画面を表示します。 メニュー上の「名前を付け保存」の替わりに↓こんな感じのマクロを使います。 Sub Sample() Dim rtn As Variant Dim sFullPath As String sFullPath = "C:\TEST\" & Format(Range("A1"), "eemm") & "\" & Format(Range("A1"), "ggge年mm月dd日") & ".xls" rtn = Application.GetSaveAsFilename(sFullPath) If rtn <> "False" Then ActiveWorkbook.SaveAs Filename:=sFullPath End If End Sub
補足
すみません、マクロ勉強中で、最近やっとマクロの概要がわかったレベルなので、上記の式をそうやったらよいのか、まったくわかりません(;;) ちなみに請求書の、I2(アイ-2)のセルに日付を平成年月の4桁で入力すると(例:今月なら2207)・・ →ファイル名の先頭に年月が表示され、任意の言葉を後ろに足すこともできる →保存先も、その年月ごとのフォルダに保存される。 の場合の手順を教えていただけるとありがたいのですが・・どうか、お願いします(><) 新しいマクロの記録方法を最近知ったレベルです。ご面倒をかけて、すみません・・。
- HRI-Sankou
- ベストアンサー率32% (64/199)
一個ファイルに12個のページを作り それぞれのページに、2204~2303 と、 ページ名を付けて管理する方が、 簡素化できると思いますが? 基本ページを作成後、ページのコピーで 12ページ作成し、ページ名を変更すれば、 フォルダ管理よりも管理しやすいと思います。
お礼
回答ありがとうございます。ただいまマクロ勉強中で、いろいろと簡素化できる方法を模索しています。ご意見参考にさせていただきます。ありがとうございました。
- hayasi456
- ベストアンサー率40% (2402/5878)
請求書の原本を請求書を作る月のフォルダに入れておき開けば「名前を付けて保存」をクリックすると開いた月のフォルダが出てきます。 月が変わったら原本を移動するか、それぞれの月の各フォルダに入れておけば良いでしょう。
お礼
回答ありがとうございます。ご意見参考にさせていただきます。ありがとうございました。
お礼
勉強不足のまま質問してしまい、もうしわけありませんでした。自分なりにも勉強し、改めてマクロ入力し、ほぼ満足いく形にできました。丁寧な説明文、ありがとうございました。 いまだ勉強中で、まだVBAの文法を理解できていない部分も多く、トラブルも多いですが、少しずつ解決していきたいと考えています。 また質問等、してしむことありますが、お時間あれば回答いただけるとありがたいです。ありがとうございました。