2016-02-29 9 views
5

Sto selezionando un elenco di file in base a un criterio utilizzando Dir. Memorizzandoli in una serie di stringhe. Quindi iterando attraverso l'array ed elaborando i file.Come gestire i nomi di file con caratteri unicode in VBA usando Dir?

Come posso gestire i nomi di file con caratteri Unicode? Ho provato a fare strconv() ma non ho aiutato.

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

Poi più tardi i per accedere alle proprietà dei file in questo modo:

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

l'ultima riga ottengo un errore il file non viene trovato. Lo fa solo per i nomi di file con caratteri Unicode. C'era un altro post su questo qui: Working with Unicode file names in VBA (using Dir, FileSystemObject, etc.) ma non risolveva il problema con Dir.

il mio esempio: VBA (orologio) c: \ my-test-file.pdf Unicode: C: \ My-test-file.pdf

(non si può vedere la differenza qui, ma se si copia incolla in Notepad ++ vedrai che i trattini sono caratteri diversi per i due file, VBA sta convertendo il carattere unicode dash in un trattino locale di Windows)

Oppure l'esempio dalla domanda collegata: 3_Połish.txt (in Unicode) vs 3_Polish.txt (in VBA)

+0

Hai provato ad aggiungere un orologio sul tuo 'nomefilm'? Cosa viene visualizzato? – ZwoRmi

+0

Sì, naturalmente, VBA sta convertendo il nome del file in windows locale: (non puoi vederlo qui ma i trattini sono diversi tra i due nomi di file, se copi incolla su Notepad ++ vedrai cosa intendo) VBA (orologio) c: \ my-test-file.pdf Unicode: c: \ my-test-file.pdf – Atti

+0

Hai provato a utilizzare 'fso.GetFolder (percorso)'? – ZwoRmi

risposta