2016-02-29 5 views
5

Dirを使用して条件に基づいてファイルのリストを選択しています。 これらを文字列の配列に格納します。 次に、配列を反復処理してファイルを処理します。Dirを使用してVBAでユニコード文字でファイル名を処理する方法は?

ユニコード文字でファイル名を処理するにはどうすればよいですか? 私はstrconv()を実行しようとしましたが、助けませんでした。私は、ファイルが見つからないエラーを取得し、最後の行で

vfilename = vCurrDir & "\" & vfile 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
vDateMod = objFSO.GetFile(vfilename).datelastmodified 

vfile = Dir(vCurrDir & vCrit, vbNormal) 'vCrit is something like *test* 

はその後I`llは、このようなファイルのプロパティにアクセスしてみてください。ユニコード文字を持つファイル名に対してのみこれが行われます。 これに関する別の記事がここにあります:Working with Unicode file names in VBA (using Dir, FileSystemObject, etc.)しかし、それはDirの問題を解決しませんでした。

私の例: VBA(腕時計)C:C:私のテスト-file.pdfのユニコード\ \私のテスト-file.pdf

(あなたがここでの違いを見ることはできませんが、あなたはペーストをコピーする場合それらをNotepad ++に変換すると、ダッシュが2つのファイルの異なる文字であることがわかります.VBAはUnicodeダッシュ文字をWindowsのロケールに変換しています)

またはリンクされた質問の例: 3_Połish.txt )vs 3_Polish.txt(VBA)

+0

あなたの 'vfilename'に時計を追加しようとしましたか?何が表示されますか? – ZwoRmi

+0

もちろん、VBAはファイル名をWindowsに変換しています。ロケール:(ここでは表示されませんが、メモ帳に貼り付けた場合は2つのファイル名が異なります。 c:\ my-test-file.pdf Unicode: c:\ my-test-file.pdf – Atti

+0

'fso.GetFolder(path)'を使ってみましたか? – ZwoRmi

答えて

関連する問題