|
皆さん、おはようございます。
>試しにEXCELマクロを作成して、実用可能か検証してみては如何でしょうか?
とIROCさんがおっしゃっていますね!!
私も賛成です。
監視は、私も遊びと実験を兼ねて何回か簡単なものを作った事があります。
でも、実用するには、不安材料があったし、そのような案件もなかったし・・。
Excel2000から、VBAでも独自イベントが作成できますよね!!
これで実験(デバッグ)してみて下さい。
・新規ブックのSheet1にコントロールツールボックスのコマンドボタンを二つ
作成して下さい。
Commandbutton1----監視開始
Commandbutton2----監視終了
・クラスモジュールを作成して下さい(クラス名は、Class1)
そのClass1のモジュールに、
'==================================
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private fso As Object
Private i_fld As Object
Private i_flcnt As Long
Event addfile(ByVal flcnt As Long)
Public m_stop As Boolean
'========================================================
Sub set_init_flcnt(fldnm As String)
Set fso = CreateObject("Scripting.FileSystemObject")
Set i_fld = fso.GetFolder(fldnm)
i_flcnt = i_fld.Files.Count
Set fso = Nothing
End Sub
'========================================================
Sub fld_ment()
'ここが監視実行プロシジャーですが、
'簡単なロジックでしかチェックしていません。
'実際には、初期ファイルリストを作成して、照合を行うような方法だと思います
'ここでは、ファイル数が増えたら、イベントを発生させるようにしています
Dim c_fld As Folder
m_stop = False
Do While m_stop = False
DoEvents
Call Sleep(300)
If i_fld.Files.Count > i_flcnt Then
i_flcnt = i_fld.Files.Count
RaiseEvent addfile(i_flcnt)
End If
Loop
End Sub
・次にコマンドボタンを作成したSheet1のモジュールに
'===============================================================
Private WithEvents flmet As Class1
'===============================================================
Private Sub CommandButton1_Click()
'監視開始ボタン
Set flmet = New Class1
With flmet
.set_init_flcnt ("D:\My Documents\cd")
.fld_ment
End With
End Sub
'================================================================
Private Sub CommandButton2_Click()
'監視終了ボタン
flmet.m_stop = True
End Sub
'================================================================
Private Sub flmet_addfile(ByVal flcnt As Long)
' ファイル数が増えたら、セルA1にファイル数セット
Cells(1, 1).Value = flcnt
End Sub
こんなコードで一見すると、動いているように見えます。
但し、監視開始後のExcelの動きは、重いです。
前述しましたが、実際に監視するチェックはもっと複雑です。
この程度のロジックで実験してみて、問題ないのなら次のステップに・・・
というように実験してみたらどうですか?
|
|