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)
Czy próbowałeś dodać zegarek na swoim 'vfilename'? Co jest wyświetlane? – ZwoRmi
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
Czy próbowałeś użyć 'fso.GetFolder (path)'? – ZwoRmi