初心者
2023/01/18 (水) 22:07:07
ddef7@7bb1a
Ayameさん、hatenaさんご指摘ありがとうございます。
教えていただいた内容で、エラーが出なくなりました。シートも選択できるように修正してみました。
前回教えていただいたコードも組み合わせてなんとか複数ファイルを取り込んで、フォルダを移動させることができていると思われますが、確認していただけないでしょうか。
Private Sub コマンド5_Click()
Dim dname As String
Dim destinationFolder As String
dname = "C:\アクセス\エクセル\"
destinationFolder = "C:\アクセス\エクセル\処理済\"
Dim FSO As New Scripting.FileSystemObject
Dim fl As Folder
Set fl = FSO.GetFolder(dname) ' フォルダを取得
On Error Resume Next 'エラーが発生した場合無視して次の行へ
Dim f As File
For Each f In fl.Files 'フォルダ内のファイルを取得
If FSO.GetExtensionName(f.Path) = "xlsx" Then '拡張子がxlsxのファイル
Dim ExApp As Object
Set ExApp = CreateObject("Excel.Application")
ExApp.Visible = False '正常動作確認後、削除してもOK
Dim DesktopPath As String, FilePath As String
Dim Rng1 As String
Dim Rng2 As String
Dim Rng3 As String
Dim Rng4 As String
Dim wb As Object
Set wb = ExApp.Workbooks.Open(FileName:=f.Path) '開いたブックを変数に代入
Rng1 = wb.Worksheets("Sheet1").Cells(1, 1)
Rng2 = wb.Worksheets("Sheet1").Cells(1, 3)
Rng3 = wb.Worksheets("Sheet1").Cells(4, 1)
Rng4 = wb.Worksheets("Sheet1").Cells(4, 3)
wb.Close '開いたブックを閉じる
ExApp.Quit 'エクセルを閉じる
CurrentDb.Execute "insert into T1(f1,f2,f3,f4) VALUES('" & Rng1 & "','" & Rng2 & _
"','" & Rng3 & "','" & Rng4 & "');", dbFailOnError
If Err.Number = 0 Then 'エラーなくインポートされた
CurrentDb.Execute "UPDATE T1 SET ファイル名 = '" & f.Name & "'" & _
" WHERE ファイル名 Is Null;", dbFailOnError
FSO.MoveFile f.Path, destinationFolder 'ファイル移動
End If
If Err.Number <> 0 Then 'エラー発生
'とりあえずイミディエイトにファイル名、エラーメッセージを出力
Debug.Print f.Name & " " & Err.Number & ":" & Err.Description
CurrentDb.Execute "insert into T3(ファイル名,エラー番号,エラー内容) VALUES('" & f.Name & "','" & Err.Number & _
"',""'" & Err.Description & "'"");", dbFailOnError
Err.Clear
End If
End If
Next
On Error GoTo 0 'エラー処理を無効にする
Set FSO = Nothing
End Sub
どうぞよろしくお願いします。
通報 ...