Excelで請求書を作成する際に自動的にフォルダを作成して保存する方法

このQ&Aのポイント
  • Excelで請求書を作成する際に、ファイル名の頭4桁に年月を入れ、保存先候補として自動的にフォルダを表示する方法について質問します。
  • 具体的には、あらかじめ一年分のフォルダを作成しておき、請求書の保存時に自動的に対象月のフォルダに保存できるようにしたいと考えています。
  • 現在はファイル名に年月を表示することはできていますが、保存先の設定について悩んでいます。効率的な方法があれば教えてください。
回答を見る
  • ベストアンサー

エクセルで、請求書を作るとき、ファイル名の頭4桁に年月を入れ(例:平成

エクセルで、請求書を作るとき、ファイル名の頭4桁に年月を入れ(例:平成22年6月なら2206)、名前をつけて保存をしたときに、保存先候補として、自動的に任意で作成しておいた2206フォルダが出てくるようにできないでしょうか? あらかじめ、一年分(2204~2303)としてフォルダ12個を一つの期について作っておき、あとは請求書の原本を入れておきます。 その原本を開き、名前をつけて保存したときに自動的に、対象月のフォルダにしまうことができたら、ミスなく、対象月フォルダに保存できるかなと思い質問します。 もっと効率のよい方法があればもちろんそれでもよいです。今、ファイル名の頭4桁で平成○年○月をファイルに表示するところまでできました。あとは保存で悩んでいます、よろしくお願いします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.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("保存しませんでした") ちゃんとできればあなたの要求はほぼ満たすものになるはずです。

a_nyan
質問者

お礼

勉強不足のまま質問してしまい、もうしわけありませんでした。自分なりにも勉強し、改めてマクロ入力し、ほぼ満足いく形にできました。丁寧な説明文、ありがとうございました。 いまだ勉強中で、まだVBAの文法を理解できていない部分も多く、トラブルも多いですが、少しずつ解決していきたいと考えています。 また質問等、してしむことありますが、お時間あれば回答いただけるとありがたいです。ありがとうございました。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

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セルの値を元にしたフォルダとファイル名で保存します。 また、その際、ボタンは削除します(請求書ブックにボタンは残らない)。

a_nyan
質問者

補足

わかりやすい回答、ありがとうございます。さっそくやってみましたが、なぜかうまくいきません。 日付入力セルに、22/07と入力すると平成22年07月と表示されるように設定していますが、そのせいでしょうか? ちなみに、使用ソフトはエクセル2002、OSはXPのホームエディションです。 また、ボタンをクリックすると、 D:¥会社書類¥ホーム書類¥発行済み見積請求書¥¥任意の言葉.xls.に存在します     と表示されますが、Dドライブを探しても、ほかを探しても、ファイルが見つかりません。 原本ファイルは元の場所にそのままありますが、ボタンを一度クリックすると、ボタンが消えてしまうので、再度原本ファイルを開いて別な請求書を作りたいときに、コマンドボタン表示させる必要があるので、できれば、原本ファイルと同フォルダ内にある月ごとのサブフォルダ(2207や2208や2209・・・)に保存され、なおかつ、原本ファイルを開いたときにはコマンドボタンもすぐ押せるようになっていてほしいのですが・・無理でしょうか? 無茶な注文、本当にすみません。日常的に請求書を作る人が、機械に弱く、説明してもなかなか理解できず、保存先フォルダを間違えたり・・はしょっちゅうで、後で大変なので、できるだけ操作をシンプルにして、ミスのないようにしたいなと思っています。本来ならもっともっと勉強してから書き込むほうが、ツーカーで通じるのかもしれません・・私の知識もまだ浅く、試行錯誤しましたがうまくできませんでした。申し訳ないですが、補足で回答をいただけないでしょうか??

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ファイル名を基にするのではなく、セルに入れた日付を元に、フォルダとファイル名を決めて「名前を付けて保存」ダイアログを表示する方法です。 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

a_nyan
質問者

補足

すみません、マクロ勉強中で、最近やっとマクロの概要がわかったレベルなので、上記の式をそうやったらよいのか、まったくわかりません(;;) ちなみに請求書の、I2(アイ-2)のセルに日付を平成年月の4桁で入力すると(例:今月なら2207)・・ →ファイル名の先頭に年月が表示され、任意の言葉を後ろに足すこともできる →保存先も、その年月ごとのフォルダに保存される。 の場合の手順を教えていただけるとありがたいのですが・・どうか、お願いします(><) 新しいマクロの記録方法を最近知ったレベルです。ご面倒をかけて、すみません・・。

回答No.2

一個ファイルに12個のページを作り それぞれのページに、2204~2303 と、 ページ名を付けて管理する方が、 簡素化できると思いますが? 基本ページを作成後、ページのコピーで 12ページ作成し、ページ名を変更すれば、 フォルダ管理よりも管理しやすいと思います。

a_nyan
質問者

お礼

回答ありがとうございます。ただいまマクロ勉強中で、いろいろと簡素化できる方法を模索しています。ご意見参考にさせていただきます。ありがとうございました。

  • hayasi456
  • ベストアンサー率40% (2402/5878)
回答No.1

請求書の原本を請求書を作る月のフォルダに入れておき開けば「名前を付けて保存」をクリックすると開いた月のフォルダが出てきます。 月が変わったら原本を移動するか、それぞれの月の各フォルダに入れておけば良いでしょう。

a_nyan
質問者

お礼

回答ありがとうございます。ご意見参考にさせていただきます。ありがとうございました。

関連するQ&A

  • エクセルで、ファイル内に入力した日付を、保存時のファイル名に反映したい

    エクセルで、ファイル内に入力した日付を、保存時のファイル名に反映したい。 お世話になります。請求書の作成・保存を効率よくしたいと考えています。 例:作ったファイルの、ある特定のセル(日付を入力)で平成22年6月と表示された状態で名前をつけて保存をクリックすると、ファイル名の欄に自動的に2206・・と反映され、なおかつ、自分の言葉で現場名などを入力して2206グーマンション・・という風にして保存したいです。もっというと、保存先のフォルダも自動的に2206フォルダとかに入るようにできないでしょうか?? 詳しい方、教えていただけるとありがたいです・・!お願いします

  • エクセルの年月の設定

    エクセルについて教えてください。 例えば、A1のセルに「平成21年2月」と設定した後、B1のセルに自動的に「平成21年1月」、C1のセルに自動的に「平成20年12月」となるようにしたい場合、どのような関数を組めばいいのでしょうか? つまり、隣のセルには1ヶ月引いた年月を表示するようにしたいのです。 おわかりになる方、是非とも回答をよろしくお願いしますm(_ _)m

  • ファイル名の頭3桁が同じフォルダに移動させる

    こんにちは、自分で解決できなかったのでこちらで質問させていただきました。 頭3桁が一致したときにそれぞれのフォルダに移動させるbatを教えてくださいmm ●たとえば(拡張子はtxtとpdf) ●●ファイル名 123456789.txt 123456780.txt 12345678 2.pdf 234567890.txt 23456789-1.txt 345678901.pdf ●●フォルダ名 123_A 234_B 3456 ●●やりたいこと 123_Aのフォルダへ移動  └123456789.txt   123456780.txt   12345678 2.pdf 234_Bのフォルダへ移動  └1234567890.txt   23456789-1.txt 3456のフォルダへ移動  └345678901.pdf どなたか教えてくださると助かりますmm

  • エクセルVBA ファイル名を日付にしたいのですが・・・

    A1のセルに表示上は平成16年9月11日と表示されているのですが、 (データー的には2004/9/11という形で入っているセルになっています。) そのセルを指定して、新規ファイル名にして保存したいのです。ファイル名としては、後で見て何日の分か分かればいいので、平成と名前が出ようと2004年とでようと、2004・9・11であろうとどんな形でも、問題ないのですが・・・ 何かいい方法ありますでしょうか?? 宜しくお願いいたします

  • ファイル名による移動

    ファイル名に4桁のキーをつけています。 このキーの上2桁に合致するフォルダに ファイルを移動するバッチを組みたいのですが、 可能でしょうか? たとえば、ファイル名「0101.txt」「0102.txt」「0201.txt」があった場合、 「0101.txt」「0102.txt」⇒01フォルダへ 「0201.txt」⇒02フォルダへ 頭が固くてすみません・・・ よろしくお願いいたします。

  • ファイル名に親フォルダ名をつけたい

    お世話になります。 VBScriptで、下記のような動きをさせたいのですが、 私の頭では全くわかりませんので、ご知識ある方 何卒よろしくお願いします。 Scriptを実行すると、「対象のテキストファイル」の 名前を「親のフォルダ名+"_"+対象のテキストファイル名」 にしたいのです。 例えば、 hogeフォルダに、 「複数のテキストファイル(拡張子.txt)」 「batファイル」 を置いて、 batファイルを実行すると、 現在のテキストファイルの名前の前に,親のフォルダ名をつけたいという 形です。 ※元のテキストファイル名が,「1.txt」なら「hoge__1.txt」にしたい インターネットで、いろいろ調べたのですが、断片的な情報では、 私の頭ではまったくわかりませんでした。。 そこで、大変申し訳ないのですが、実際に動くソースレベルで 教えて頂きたいので、ご知識ある方、何卒よろしくお願い致します。

  • エクセルで保存時のファイル名

    エクセルでファイルを書き込む(「ファイル」-「名前を付けて保存」) 時に、セル内にあるテキストをファイル名として自動的に書き込み時に 指定する事はできるでしょうか。 例えば A1セルに"名古屋"、A2セルに"10月"と入っている時に 「名前を付けて保存」で、ファイル名=名古屋10月.csv (ファイルの種類はCSV)としたいのですが。 ご教授、よろしくお願いいたします。

  • エクセルの年月表示でお願いします

    8桁のランダムな数字約2000行を年月表示へ表示させる方法を教えて下さい。 例:20080318 → 2008年3月 宜しくお願いいたします。

  • ファイル名の頭文字を自動的に付けられるソフトはありますか

    ファイル名の頭文字を自動的に付けられるソフトはありますか たとえば 「音楽」というなまえのファイル名に頭文字をつけて「 「【お】音楽」という名前にできるやつです

  • フォルダ名をファイル名の頭につけるバッチ

    お世話になります。 現在、ファイルをフォルダ単位で保存していて、保存しているフォルダは数百個あり、各フォルダに入っているファイルの数はまちまちなのですが、各フォルダの中にあるファイル(全てフォルダの直下にファイルを保存しており、サブディレクトリは作成していないはずです)の頭にフォルダ名を一括でつけたいのですが、そのようなバッチファイルは作れるでしょうか? やりたいこととしては、例えば、"6753シャープ"というフォルダ内に複数個のファイル、例えば"01.txt"、"02.txt"、"03.txt"というファイルがある場合、 それらのファイルをまとめてバッチファイルのアイコンにドラッグアンドドロップしたらファイルを"6753シャープ01.txt"、"6753シャープ02.txt"、"6753シャープ03.txt" というようにリネームさせることは可能でしょうか? 使用しているPCはWindows7 Professionalです。

専門家に質問してみよう