エクセルのマクロに関する質問です。少しややこしいので300ポイント差し上げます。


あるデスクトップのフォルダにさまざまなデータが入っています。

また、あるエクセルの列に、さまざまなファイル名がかかれています。例えば

test1.pdf
test2.pdf
test3.pdf

エクセルの各セルを参照して、書かれているファイル名のファイルがそのフォルダに存在すれば、隣に同じ名前を出力し、存在しなければ、”不明”と出力するプログラムを書きたいです。例えば

test1.pdf test1.pdf
test2.pdf 不明
test3.pdf test3.pdf

この場合test1.pdfとtest3.pdfは指定したフォルダに存在しましたが、test2.pdfは指定したフォルダに存在しませんでした。


このようなプログラムはどうしたらいいのでしょうか?
皆さんのお力を貸して下さい。よろしくお願いします。

尚確認するファイルは数千個あるため、できればファイルの存在を確認するだけで、ファイル自体はオープンしないプログラムが良いです。

回答の条件
  • 1人5回まで
  • 登録:2006/09/29 22:30:02
  • 終了:2006/09/29 23:51:24

ベストアンサー

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/09/29 22:54:20

ポイント300pt

こちらでいかがでしょうか?

ファイルの存在は「Dir」関数で調べます。


Sheet1に次のような感じでファイル名を記入

 
test1.pdf 
test2.pdf 
test3.pdf 

標準モジュールに次の記述を貼り付けて実行してください。

Option Explicit

Sub Hatena()

    'ファイルのあるフォルダ

    Const FILE_PATH = "C:\Documents and Settings\XXXXXXX\デスクトップ\hatena" '■ここを設定

    'ファイル名

    Dim fname As String

    'A1セルを選択

    Range("A1").Activate

    'セルが空になるまで処理を続ける

    Do Until ActiveCell.Value = ""

        'ファイル名を取得

        fname = ActiveCell.Value

        'ファイルの有無をDIR関数で調べる

        If Dir(FILE_PATH & "\" & fname) = "" Then

            'ファイルが無いので、右となりのセルに不明をセット

            ActiveCell.Offset(0, 1).Value = "不明"

        Else

            'ファイルがあるので、右となりのセルにファイル名をセット

            ActiveCell.Offset(0, 1).Value = fname

        End If

        '下のセルに移動

        ActiveCell.Offset(1, 0).Activate

    Loop

End Sub

id:ReoReo7

回答ありがとうございます。早速やってみます。

2006/09/29 23:22:47
  • id:ReoReo7
    無事動作し望みのデータを得られました。ありがとうございました!
  • id:llusall
    たくさんのポイントといるか君ありがとうございました。
    とても励みになります。

    追記ですが、
    ファイルの存在を確認するには、FSO(FileSystemObject)を使用しても可能です。


    ' ファイルシステムオブジェクトを取得する。
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' ファイルの存在を確認する
    If fso.FileExists("C:\orz.txt") Then
    MsgBox "ファイルを発見!"
    Else
    MsgBox "ファイルが見つからない!"
    End If
    ' オブジェクトを解放
    Set fso = Nothing
  • id:ReoReo7
    違うやり方もできるのですね。
    ありがとうございます。参考にさせて頂きます!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません