電子書籍の厳選無料作品が豊富!

 見積書をエクセルで作ってあるのですがそれをお得意様別(200件くらい)のフォルダーに保管しています。

これらを全てオープンにして日付別に並び替えたいのですが何かいい方法はないでしょうか?過去の分はそのままで新しいやり方でもOKです。

ちなみに今はお得意様別に保管してから再度「全ての見積書」のフォルダーに保管しています。

これでも大した手間ではないのですが訂正があった時にそれぞれを直さなくてはいけないのです。

やり方がちょと原始的ですからもう少しスマートに管理する方法はないでしょうか?

宜しくお願い致します。

A 回答 (6件)

またまた登場、onlyromです。


 
最後の方にコードが書いてありますのでそれをエクセルのVBEにコピペします。

【前提条件】
フォルダーの階層は次のようになってるものとする

__C:¥・・・¥見積書(フォルダー)
___________¥三菱商事(フォルダー)
___________¥トヨタ自(フォルダー)
___________¥シャープ(フォルダー)


【プログラムコピペ方法】

(1)エクセルを立ち上げる
(2)「ツール」メニュー > 「マクロ」 > 「Visual Basic Editor」をクリック
   これでVisual Basic Editorの画面になる(以下VBEと呼ぶ)
(3)VBEの「挿入」メニュー > 「標準モジュール」をクリック
   これでプログラムを書くための白いコードウィンドウが表示される
(4)そこに、提示したプログラムをコピペする
(5)VBEの画面を閉じる(×ボタン)


■ここでエクセル画面に戻るので以下のことをする

(1)「ツール」メニュー > 「マクロ」 > 「セキュリティー」をクリック
   これでセキュリティウィンドウが表示されるので
   セキュリティレベルを「中」にしてウィンドウを閉じる
(2)このエクセルブックを「見積一覧.xls」など適当な名前で保存する
   ●保存場所が重要になります!!
   ●保存場所は、見積書フォルダー
 
階層は以下のようになります。

__C:¥・・・¥見積書(フォルダー)
___________¥見積一覧.xls ■このブック■
___________¥三菱商事(フォルダー)
___________¥トヨタ自(フォルダー)
___________¥シャープ(フォルダー)
 
 
以下がプログラムですのでこれをコピペ。
'------------------------------------------------


  Dim fsoObj
  Dim myFolder

Sub Auto_Open()
  Dim Msg As Integer
  Sheets(1).Select
  Range("E1").Select

  Msg = MsgBox("見積一覧を作成しますか?", vbYesNo, "確認")
  If Msg = vbYes Then
    Call MitumoriIchiran
    MsgBox "一覧作成終了", vbOKOnly, "終了"
  End If
End Sub


Sub MitumoriIchiran()
  Cells.Clear

  myFolder = ThisWorkbook.Path

  Set fsoObj = CreateObject("Scripting.FileSystemObject")
  Call FileList(myFolder)

  With Range("A1:D1")
   .Value = Array("得意先名", "見積ブック名", "作成日", "更新日")
   .EntireColumn.AutoFit
   .HorizontalAlignment = xlCenter
   .Interior.ColorIndex = 6
   .EntireColumn.NumberFormatLocal = "yyyy/mm/dd hh:mm"
  End With
  With Range("A1").CurrentRegion.Borders
    .LineStyle = xlContinuous
    .Weight = xlThin
    .ColorIndex = xlAutomatic
  End With
End Sub


Sub FileList(myFolder)
  Dim fsoFolder
  Dim fsoSubFolder
  Dim fsoFile
  Dim R As Long
  
  Set fsoFolder = fsoObj.GetFolder(myFolder)

  For Each fsoFile In fsoFolder.Files
  If fsoFolder <> ThisWorkbook.Path Then
  R = Cells(Rows.Count, "A").End(xlUp).Row + 1
  Cells(R, "A").Value = Right(fsoFolder, InStr(StrReverse(fsoFolder), "\") - 1)
  Cells(R, "B").Value = Replace(fsoFile, fsoFolder & "\", "")
  Cells(R, "C").Value = fsoFile.datecreated
  Cells(R, "D").Value = fsoFile.DateLastModified
  ActiveSheet.Hyperlinks.Add Cells(R, "B"), fsoFile
  End If
  Next

  For Each fsoSubFolder In fsoFolder.SubFolders
   Call FileList(fsoSubFolder)
  Next
  
End Sub

'------------------------------------------------


【実行方法】
このブックをダブルクリック等で立ち上げると
見積一覧を作成するかどうかのメッセージが出るので
作成するときは、Yes, しないときは、No をクリックするだけです。
また作成が終了すると、終了メッセージが表示されます。


なお、これはちゃんとテスト済みですので上手くいかない場合は質問者のやり方がおかしいことになります。(^^;;;
不明な点がありましたら遠慮なく質問願います。
以上。
 
    • good
    • 0
この回答へのお礼

こんにちは、お忙しい中お手数をお掛けしました。

お蔭様でまさしく求めていたものが出来ました。ありがとう御座いました。

昔ロータス123を少し使っておりましたがそれからエクセルに取って変わって確かにいいなとは思っていましたがまだ「コンピュータはこんなもんじゃないな」と少し不満でした。

でも今回その不満が満足されました。ここまでくるとパソコンを使っている実感が出ます。凄い!!

マクロ勉強しなきゃいけませんね。大変参考になりました。ありがとうございました。

お礼日時:2009/01/15 17:52

再度の登場、onlyromです。



>どこまで理解できるかどうか分かりませんが勉強してみたいと思います。

何事につけ向学心というのは大切なことです。

一発必中で動作するようにしたいと思いますので以下の補足を願います。

(1)実際のフォルダー名のフルパスは?

   このフォルダー名とは、各得意先フォルダーのある親フォルダーのことです。
   例えば、次のようなフルパスだと

 C:\Documents and Settings\Onlyrom\My Documents\見積書

   この「見積書」フォルダーの中に、各得意先フォルダーがあることになります。

(2)Excelのバージョンは? xl2000-xl2003? xl2007?
 
(3)コードを提示した場合それをあるところにコピペするわけですが
   その方法、またその実行方法は分かりますか?

以上。
 
    • good
    • 0
この回答へのお礼

 お世話になります。

(1)>この「見積書」フォルダーの中に、各得意先フォルダーがあることになります・・・・・その通りです。

(2)xl2003 これです。

(3)コードを提示した場合・・・・・・そもそもこれが分かりませんでしたのでその後がチンプンカンプンでした。

「コードを提示 エクセル」で調べてみましたらBASICのようなものが出てきましたがこれでしょうか?BASICでしたら多少は分かりますが「あるところにコピペする」は分かりませんでした。

こんなんで大丈夫でしょうか?

お礼日時:2009/01/14 20:34

●方法1●


一番簡単なのは、各得意先フォルダーは使用せずに
「全見積」フォルダーのみ使用する方法だと思います。

作成した見積ブックは「全見積」フォルダーに保存する
見積ブック名は、その前に【得意先名】を付加する
こうすると、
「全見積」フォルダーを開いて得意先別でも作成日別でも
どちらでもソート可能ですよね


●方法2●
別の方法としては既出の回答にもありますようにエクセルを利用する方法。
エクセルに全ての見積ブック「得意先名、見積ブック名、作成日、更新日」の一覧を作成し
この一覧から見積ブックを開けるようにハイパーリンクをセットします。
この方法では「全見積フォルダー」は使用しないで、各得意先フォルダーのみ使用する
 
■方法1では既に作成された見積ブックの前に、得意先名を付加するための
簡単なプログラムの実行が必要(1回限りの実行)
(もちろんそれを手動でやるなら別ですが)

■方法2では、全見積ブックを見たいときだけ実行するプログラムが必要
(新規、修正がなければ実行の必要はなし)

ご希望があれば簡単なサンプルコードをアップしますが。。。
以上。
 
    • good
    • 0
この回答へのお礼

>得意先別でも作成日別でもどちらでもソート可能ですよね.....
どうやってやるのかな?と思って適当にいじってましたら出来ました。これは簡単で良いですね。ありがとうございました。

でもスマートさから言えば「方法2」ですね。

>ご希望があれば簡単なサンプルコードをアップしますが。。。・・・どこまで理解できるかどうか分かりませんがお願いできますか。勉強してみたいと思います。

お礼日時:2009/01/13 21:48

No.2です。



> 日付別だけではなくお得意様別でも分類できるようにしたいのですが何かいいお知恵はないでしょうか?

フォルダでは、2段階の並べ替えができませんので、
Excelを使って、日付、得意先名およびファイル名をリストアップし、ファイルへのハイパーリンクを設定するくらいしか考え付きません。(ファイルの目次のようなものです。)

この場合、どのくらいの件数のリンクを設定することができるか分かりませんので、リンクが機能しなくなった場合にも対処しやすいように、ファイルは現状のまま得意先別のフォルダに収納しておいた方がよいと思います。

なお、ファイル名をリストアップする際には、下記URLのようなことができるようですのでご参照ください。
(残念ながら私は、マクロのことは皆目分かりません。)
「デスクトップ上にあるフォルダ内のファイルを選択して開くマクロ」
http://oshiete1.goo.ne.jp/qa2814657.html
「Excel VBAでのファイル名取得方法」
http://oshiete1.goo.ne.jp/qa3254716.html
    • good
    • 0
この回答へのお礼

 再びありがとうございます。

私もマクロのことはあまりよく分かりませんが「FileSearch」これは面白そうですね。調べてみます。

お忙しい中色々とご足労をお掛けしました。ありがとうございました。

お礼日時:2009/01/12 13:53

一番普通に行われている方法は、ファイルの名前を付けるとき、090111***のように先頭に6桁の日付を付けます。



既に作成済みのファイルを含めて、日付順に並び替えるには、そのフォルダを開いて、メニューバーの「表示」→「詳細表示の設定」で、「作成日時」にチェックを入れます。

「表示」→「詳細」をクリックにしますと「作成日時」が表示されますので、「作成日時」をクリックすると作成日時が「昇順」または「降順」で並べ替えされます。
再度、「作成表示」をクリックすると「昇順」が「降順」に並べ替えされます。

お試しください。
    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。

6桁の日付+スペース+3桁のお得意様番号の計10桁にしてファイルに名前を付けそれらを1つのフォルダーに何でもかんでも保管する。

日付で分類の時は先頭の6桁で並び替えお得意様別で分類する時は後半の3桁で並び替えをしようと思ったのですがこれが出来ませんでした。

日付別だけではなくお得意様別でも分類できるようにしたいのですが何かいいお知恵はないでしょうか?

宜しくお願い致します。

お礼日時:2009/01/11 14:45

直接の回答ではないです。

参考になると思います。

みやほりんの失敗談
http://miyahorinn.fc2web.com/schooltxt/Ex060120. …
    • good
    • 0
この回答へのお礼

200個あるフォルダーの中に保管されているファイルの並び替えですのでご指摘の方法がどのように応用できるのか検討してみます。ありがとうございました。

お礼日時:2009/01/11 14:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!