アプリ版:「スタンプのみでお礼する」機能のリリースについて

スキャンした画像を、取り込んだ日付のフォルダに自動的に保存してくれるソフト(できればフリーソフト希望です)をどなたかご存知ないでしょうか?

大抵の画像管理ソフトは、規定のフォルダの中に全ての画像ファイルが保存されていますが、そうではなくて、
例えば6月10にスキャンした2枚の画像と6月21にスキャンした3枚の画像を、以下のようなパスで保管したいと考えています。
画像1)My Document\My Picture\Scan\20050610\Scanfile001.jpg
画像2)My Document\My Picture\Scan\20050610\Scanfile002.jpg
画像3)My Document\My Picture\Scan\20050621\Scanfile001.jpg
画像4)My Document\My Picture\Scan\20050621\Scanfile002.jpg
画像5)My Document\My Picture\Scan\20050621\Scanfile003.jpg
(日付フォルダまでのパスはあくまでサンプルであり、実際にはどのようなパスでも構いません)

スキャン→保存した画像ファイルを、日付フォルダ毎に一括でデータベースに取り込みたいので、「ファイル名+日付.jpg」といった管理では不十分なのです。
また、画像ファイルはスキャンのみで、ファイルの取込は考えていません。

Vector等で色々探してみたのですが、数が多すぎてこれといったものを見つけることができません。
どなたか良いソフトをご存知の方がいらっしゃれば、教えて頂けませんでしょうか。
よろしくお願いします。

A 回答 (4件)

> Excelファイルをダブルクリックするだけで実行されるようにする


エクセルを開かないでマクロを実行する方法は、私にはわかりません /(-_-; ので、
代替案です。

ファイルのダブルクリックでExcelファイルが開いた後に、マクロが自動実行され、
自動的にブックを閉じます。(他のExcelが開かれていない場合はExcelを終了)
'
Sub Auto_Open()
  Dim FPath1, FPath2, FName, i, FDate, FExt
  Dim FLD As Folder, FSObj As New FileSystemObject
  Application.ScreenUpdating = False
  FPath1 = Range("A1").Value & "\"
  FName = Dir$(FPath1 & "*.*")
  Do While FName <> ""
    FDate = FileDateTime(FPath1 & FName)
    FPath2 = WorksheetFunction.Substitute(Mid(FDate, 1, InStr(FDate, " ") - 1), "/", "")
    On Error Resume Next
    MkDir$ FPath1 & FPath2
    Set FLD = FSObj.GetFolder(FPath1 & FPath2)
    i = FLD.Files.Count + 1
    FExt = Mid(FName, InStrRev(FName, "."), 5)
    FileCopy FPath1 & FName, FPath1 & FPath2 & "\" & "Scanfile" & _
       WorksheetFunction.Text(i, "000") & FExt
    Kill FPath1 & FName
    FName = Dir$
  Loop
  Application.ScreenUpdating = True
  If Windows.Count = 1 Then Application.Quit
  ActiveWorkbook.Close
End Sub

<自動実行/自動終了 以外の変更点>
・ファイルの拡張子が Jpg 以外でも処理するようにしました。
・変更後のファイル名の連番が 001、002 の形式になるようにしました。

※当ブックを開くたびにマクロが起動してしまいますので、マクロの内容を変更する
 場合は、いったん他のブックを開いてセキュリティレベルを"高"にしてから、当ブ
 ックを開いてくださいね。
    • good
    • 0
この回答へのお礼

素晴らしい!!
これでやりたいことができるようになりました!

ご丁寧な回答に感謝します。ありがとうございました^^

お礼日時:2005/07/11 12:51

#1です。

若干補足すれば、データベースで

1.指定されたフォルダに新規追加されたファイル名を取得
2.日付別に表示
3.対象ファイル名にチェック(何らかのフラッグ)
4.チェックされたファイルをデータベースに取り込み

は、簡単にできます。ちなみに4.の処理はお奨めできませんが。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

残念ながら、私の使っているDBソフトではそのような高度な処理ができません・・・。
色々とアドバイスありがとうございます。

お礼日時:2005/07/11 08:38

こんにちは~。


Excelで処理するものですが、遊びで作ってみました。

スキャナから直接振り分けることはできませんが、スキャンして1つのフォルダの
中に格納してあるすべてのファイルを日付で振り分け、Scanfile001.jpg の形式の
名前に変更します。
なお、日付名のフォルダは、元フォルダの中のサブフォルダとして作成されます。

1.[Alt]+[F11] で Visual Basic Editor を起動します。
2.[ツール]-[参照設定] で Microsoft Scripting Runtime にチェックを入れます。
3.[挿入]-[標準モジュール] で開かれる画面に下記をコピペします。
4.Visual Basic Editor を閉じます。
'
Sub Furiwake()
  Dim FPath1, FPath2, FName, i, FDate
  Dim FLD As Folder, FSObj As New FileSystemObject
  Application.ScreenUpdating = False
  FPath1 = Range("A1").Value & "\"
  FName = Dir$(FPath1 & "*.*")
  Do While FName <> ""
    FDate = FileDateTime(FPath1 & FName)
    FPath2 = WorksheetFunction.Substitute(Mid(FDate, 1, InStr(FDate, " ") - 1), "/", "")
    On Error Resume Next
    MkDir$ FPath1 & FPath2
    Set FLD = FSObj.GetFolder(FPath1 & FPath2)
    i = FLD.Files.Count + 1
    FileCopy FPath1 & FName, FPath1 & FPath2 & "\" & "Scanfile" & i & ".jpg"
    Kill FPath1 & FName
    FName = Dir$
  Loop
  Application.ScreenUpdating = True
End Sub

セルA1に、スキャンしたファイルの入っているディレクトリ名をフルパスで入力して
から、マクロを実行します。(入力例: C:\MyFiles\GraphicData\Scan )
    • good
    • 0
この回答へのお礼

お返事遅くなりましてすいません。

素敵なスクリプトありがとうございます^^
思っていた結果が出るので、活用させていただきたいと思います。

ところで、スクリプトのあるExcelファイルをダブルクリックするだけで、このスクリプトが実行されるようにすることは可能なんでしょうか?ご存知であれば教えていただければ幸いです。

お礼日時:2005/07/11 08:36

>データベースに取り込みたい



データベースに取り込んで管理すれば、日付フォルダに分類されている必要がないと考えますが?
数千枚の画像(主として写真)をデータベースで管理しています。番号が巡回重複するため、月毎ではフォルダを変更していますが、それで充分で、なんの不都合もありません。勿論日付のみならず、時刻(必要があれば分単位)で検索できるようになっています。

この回答への補足

お返事ありがとうございます。

教えていただいた内容は、画像をデータベースに取り込んだ後の話だと思うのですが、私が目的としているのは「どのスキャンされたファイル(画像)をデータベースに取り込めばよいのかがハッキリわかるようにする」事なのです。
画像の取り込みは1日10枚程度毎日行われるので、例えば月毎のフォルダ分けでは、今日はどのファイルを取り込んでよいのか分かりにくいのではないかと考えている次第です。

補足日時:2005/07/09 14:04
    • good
    • 0

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