私はWindowsユーザーです。条件を「* 1.jpg」に設定すると、「2」で終わるファイルが一覧表示されます。(条件を* 2.jpgまたは* 3.jpgに設定すると、これらは正常に機能します)
Sub prob()
Dim x As String
x = Dir("C:\Users\" & Environ("UserName") & "\Downloads\folder\jpg\*" & "1" & ".jpg")
End Sub
3つのファイルがあります:company 34 31.jpg(これはリストされません)company 34 32.jpg(条件が1または2の場合にリストされます)company 34 33.jpg(条件3の場合にリストされます)
他のいくつかの例があります。たとえば、他のフォルダーでは、条件が* 3.jpgであるのに、2で終わるjpgファイルが返されます。これにはロジックやパターンが見つかりません。PNG形式は条件 "* 1.png"でのみ機能しないようであり、たとえばpdf形式ではすべてがエラーなしで機能するようです。
隠しファイルはなく、複数のバグの可能性がある1000行のコードもありません。たった一行です。数字で終わるファイルが欲しいのですが、他のファイルが返されます。
私にとっては非常に紛らわしい状況であり、パターンを理解することすらできないほど気分が悪く、完全にランダムに見えます。
2.2。
あなたはおそらく、互換性の理由でWindowsが生成する短いファイル名(8.3)の犠牲者です。これを確認するには、CMD
ウィンドウを開き、フォルダに移動してコマンドを発行します。Dir /x *1.jpg
これによりDir
、VBAと同じ結果が表示されます。おそらくcompany 34 32.jpg
、次のような短い名前のファイルが含まれています。compan~1.jpg
私が考えることができる最善の方法は、ワイルドカードをに変更してから*.jpg
、の前の最後の文字がであるかどうかを手動で確認.
すること1
です。
fileName = Dir("C:\Users\" & Environ("UserName") & "\Downloads\folder\jpg\*.jpg")
Do While filename <> ""
If Mid(filename, InStrRev(filename, ".") - 1, 1) = "1" Then
Debug.Print filename
End If
filename = Dir
Loop
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加