3

私はこれまでVBで何もしたことがなく、このスクリプトで少し問題を解決しようとしています。基本的に、スクリプトはフォルダー内のすべてのjpgを検索する必要があります。ファイル名が既に存在する場合は、ターゲットフォルダーから削除し、値をテーブルに追加してから、ソースファイルの名前を変更してターゲットフォルダーに存在するようにします。

このスクリプトはある程度機能します。たとえば、ファイルがまだ存在しない場合はファイルの名前を変更しますが、すでに存在するファイルの場合は1つだけ処理してから終了します。残りをクリアするために複数回実行できますが、一度にすべてをクリアしたいと思います。私はかなりの読書をしましたが、何が悪いのかわかりません。誰かがこれに光を当てることができますか?

Public Function GetLPUFileAddress()

Dim strSourceFolder As String
Dim strFile As String
Dim strTargetFolder As String

Dim dbs As DAO.Database
Dim rstMgr As DAO.Recordset

strSourceFolder = "C:\Users\Images\LPU-HOLDING\"
strFile = Dir(strSourceFolder & "*.JPG")
strTargetFolder = "C:\Users\Images\LPU\"

Do While strFile <> ""
    If Dir(strTargetFolder & strFile) <> "" Then Kill strTargetFolder & strFile
    CurrentDb.Execute "INSERT INTO TBL_LPU ( File_Name, Import_Date ) VALUES ('" & strFile & "',Date())"
    Name strSourceFolder & strFile As strTargetFolder & strFile
    strFile = Dir
Loop

End Function
4

1 に答える 1

4

Dir()などの適切なフィルタを指定して関数を呼び出すと、"C:\Users\Images\LPU\*.JPG"列挙が開始され、最初のファイル名が取得されます。
その後、Dir()パラメータなしで関数を繰り返し呼び出すと、*.JPG呼び出しごとに 1 つずつ、すべてのファイル名が取得されます。
任意の時点Dir()でパラメーターを使用して呼び出すと、現在の列挙がリセットされ、新しい列挙が開始されます。

したがって、Dir()で列挙している間は、 を使用してフォルダー内のファイルの存在を確認することはできませんDir()。これにより、列挙がリセットされます。

ファイルの存在を確認する別の方法を使用するか、エラーを無視して確認せずに強制終了する必要があります。

于 2012-08-21T15:19:53.020 に答える