2016-02-29 19 views
5

Wybieram listę plików na podstawie kryteriów z użyciem Dir. Przechowywanie tych w tablicy ciągów. Następnie następuje iteracja w tablicy i przetwarzanie plików.Jak obsługiwać nazwy plików znakami Unicode w VBA za pomocą Dir?

Jak mogę obsługiwać nazwy plików ze znakami Unicode? Próbowałem zrobić strconv(), ale nie pomogłem.

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

Później `ll próby uzyskania dostępu do właściwości plików, takich jak ten:

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

w ostatnim wierszu pojawia się błąd pliku nie zostanie znaleziony. Robi to tylko dla nazw plików ze znakami Unicode. Był inny wpis dotyczący tego tutaj: Working with Unicode file names in VBA (using Dir, FileSystemObject, etc.), ale to nie rozwiązało problemu z Dir.

moim przykładzie: VBA (watch) c: \ my-test-file.pdf Unicode: C: \ my-test-file.pdf

(nie można dostrzec różnicę tutaj, ale jeśli skopiujesz pastę do Notepad ++ zobaczysz, że myślniki są różnymi znakami dla dwóch plików, VBA konwertuje znak kreskowy Unicode na myślnik w menu Windows)

Lub przykład z połączonego pytania: 3_Połish.txt (w Unicode) vs 3_Polish.txt (w języku VBA)

+0

Czy próbowałeś dodać zegarek na swoim 'vfilename'? Co jest wyświetlane? – ZwoRmi

+0

Tak, oczywiście, VBA konwertuje nazwę pliku na ustawienia regionalne systemu Windows: (nie widzisz tego tutaj, ale myślniki różnią się między tymi dwoma nazwami plików, jeśli skopiujesz wklej do Notepad ++, zobaczysz, co mam na myśli) VBA (watch) c: \ my-test-file.pdf Unicode: c: \ my-test-file.pdf – Atti

+0

Czy próbowałeś użyć 'fso.GetFolder (path)'? – ZwoRmi

Odpowiedz