ऐसा लगता है कि आप इस तथ्य है कि जब VBA ही यूनिकोड वर्ण का समर्थन करता है, VBA विकास के वातावरण नहीं है द्वारा गुमराह किया जा रहा है। वीबीए संपादक अभी भी विंडोज़ में लोकेल सेटिंग के आधार पर पुराने "कोड पेज" वर्ण एन्कोडिंग का उपयोग करता है।
निश्चित रूप से FileSystemObject
et। अल। वास्तव में फ़ाइल नामों में यूनिकोड वर्णों का समर्थन करते हैं, जैसा कि निम्न उदाहरण द्वारा दिखाया गया है। 1_English.txt
सामग्री:: London is a city in England.
फ़ाइल का नाम: 2_French.txt
सामग्री: Paris is a city in France.
फ़ाइल का नाम: 3_Połish.txt
सामग्री: तीन सादा पाठ फ़ाइलें
फ़ाइल का नाम वाला कोई फ़ोल्डर के साथ Warsaw is a city in Poland.
निम्नलिखित वीबीए कोड ...
Option Compare Database
Option Explicit
Sub scanFiles()
Dim fso As New FileSystemObject, fldr As Folder, f As File
Set fldr = fso.GetFolder("C:\__tmp\so33685990\files")
For Each f In fldr.Files
Debug.Print f.Path
Next
Set f = Nothing
Set fldr = Nothing
Set fso = Nothing
End Sub
... पैदा करता तत्काल विंडो में निम्न उत्पादन ...
C:\__tmp\so33685990\files\1_English.txt
C:\__tmp\so33685990\files\2_French.txt
C:\__tmp\so33685990\files\3_Polish.txt
ध्यान दें कि Debug.Print
बयान क्योंकि VBA विकास के वातावरण मेरी Windows का उपयोग कर ł
प्रदर्शित नहीं कर सकता l
करने के लिए ł
चरित्र धर्मान्तरित लोकेल (यूएस अंग्रेज़ी)।
हालांकि, निम्नलिखित कोड तीनों फ़ाइलों को सफलतापूर्वक खोल करता है ...
Option Compare Database
Option Explicit
Sub scanFiles()
Dim fso As New FileSystemObject, fldr As Folder, f As File, ts As TextStream
Set fldr = fso.GetFolder("C:\__tmp\so33685990\files")
For Each f In fldr.Files
Set ts = fso.OpenTextFile(f.Path)
Debug.Print ts.ReadAll
ts.Close
Set ts = Nothing
Next
Set f = Nothing
Set fldr = Nothing
Set fso = Nothing
End Sub
... प्रदर्शित
London is a city in England.
Paris is a city in France.
Warsaw is a city in Poland.
स्रोत
2015-11-13 12:42:06
मेरे बुरा है, मैं वास्तव में जल्दी में ऐसा किया है, लेकिन यह नहीं था यह इंगित करने के लिए कि यह एक डुप्लिकेट था, यह काम करने के लिए एक संभावित कोण को इंगित करना था, लेकिन एक नजदीक देखो के बाद यह आपके मुद्दे पर लागू नहीं होगा। मुझे एक नजदीक देखो। क्या आप अपना कोड पोस्ट कर सकते हैं? या आपने 'डिर' के लिए उपयोग किए जाने वाले चर को 'मंद' कैसे किया? क्या आपने कोशिश की * फ़ाइलें स्क्रिप्टिंग ऑब्जेक्ट * भी? – R3uK
यह लिंक http://www.vbforums.com/showthread.php?555086-RESOLVED-यूनिकोड-फ़ाइल-नाम और हाइलाइट = FindNextFileW/# 4 ... दिलचस्प नहीं लगता है लेकिन यह वीबी है और न केवल वीबीए है। बाद में विशेष चरित्र को बदलने के लिए एक विधि भी है, लेकिन यह केवल उस चरित्र के लिए काम करेगी जिसके लिए आपने ट्रांसकोडिफिकेशन किया है। वैसे भी, ऐसा लगता है कि एफएसओ (फाइल स्क्रिप्टिंग ऑब्जेक्ट) में 'डिर' की तुलना में समान सीमा नहीं है, इसलिए व्यक्तिगत रूप से मैं उस तरह से जाऊंगा यदि यह आपके कोड में लागू करने के लिए जटिल नहीं है! – R3uK
डैन ... एफएसओ का एक ही मुद्दा है ... क्या आपने अपना डिर वैल्यू वैरिएंट घोषित करने की कोशिश की है? (जंगली अनुमान है लेकिन इस बिंदु पर, ऐसा लगता है (कम से कम मेरे लिए) कि केवल वीबी या ट्रांसकोडिफिकेशन शेष है ...)। ट्रांसको/कन्वर्ट के लिए लिंक यहां दिए गए हैं: http://www.pcreview.co.uk/threads/workaround-for-chdir-curdir-when-path-has-unicode-characters.3155241/#post-10639076 और http: //www.vbforums.com/showthread.php?596307- कैसे-to-check-if-a-file-folder-with-unicode-filename-extists-getting-its-attributes&p=3683899&viewfull=1#post3683899 – R3uK