Sub 檢查檔名()
Dim FileName, PathName, FileCheck As String
PathName = "L:\報告審查區\"
j = InputBox("請輸入筆數")
For i = 2 To j + 1
FileName = Range("A" & i) & ".xlsm"
FileCheck = Dir(PathName & FileName)
If FileCheck = FileName Then
Range("K" & i) = "已完成"
Else
Range("K" & i) = "未完成"
End If
Next
End Sub
請問上述語法判斷檔名必須包含副檔名,有什麼方式可以不要判斷副檔做比對?
另請教,如何判斷檔名前幾個字元相符就shoe出資料?
以上請專家指導,感激不盡。
補充說明
要比對的檔案在L:\報告審查區\底下,這裡頭包含了多種副檔名的檔案,但檔名是報告編號+廠商名稱,圖片上只要檔名符合報告編號,狀態列就顯示"已完成"。
試試這個
用LEFT取左邊固定11位數
Sub 檢查檔名()
Dim FileName, PathName, FileCheck As String
PathName = "L:\報告審查區\"
j = InputBox("請輸入筆數")
For i = 2 To j + 1
FileName = Range("A" & i) & ".*" '取所有副檔名類型
FileCheck = Left(Dir(PathName & FileName), 11)
If FileCheck = Left(FileName, 11) Then
Range("K" & i) = "已完成"
Else
Range("K" & i) = "未完成"
End If
Next
End Sub
您好,謝謝您的指教,我將與法修改如下:
Sub 檢查檔名()
Dim FileName, PathName, PathDone, FileCheck, FileDone As String
PathName = "L:\報告審查區\"
PathDone = "L:\報告完成區\"
j = InputBox("請輸入筆數")
For i = 2 To j + 1
FileName = Range("A" & i) & ".*"
FileCheck = Left(Dir(PathName & FileName), 11)
FileDone = Left(Dir(PathDone & FileName), 11)
If FileCheck = Left(FileName, 11) Then
Range("K" & i) = "已完成(未審核)"
ElseIf FineDone = Left(FileName, 11) Then
Range("K" & i) = "已完成(已審核)"
Else
Range("K" & i) = "未完成"
End If
Next
End Sub
判斷PathDone的檔案時會無法比對檔名,例如檔名為"XX220819A01廠商名稱.pdf" 無法判別前11個字元相同後顯示"已完成(已審核)"。
請指教,非常感激。
原本 FileName = Range("A" & i) & ".*"
只會抓到 XX220819A01.*
因此無法與XX220819A01廠商名稱.* 字串符合
試試把filename修改如下:
FileName = Range("A" & i) & "*.*"
你可以自己在filename以及filecheck、filedone下一行插入msgbox
例如msgobx FileName
來檢測自己抓到的字串
您好,程式修改如下就可正常判斷了。
FileName = Range("A" & i) & "*.*"
'MsgBox FileName
FileCheck = Left(Dir(PathName & FileName), 11) & ""
'MsgBox FileCheck
FileDone = Left(Dir(PathDone & FileName), 11) & ""
'MsgBox FileDone
非常謝謝您幫了大忙,感激不盡。