यह ट्यूटोरियल प्रदर्शित करेगा कि टेक्स्ट फ़ाइलों से सामग्री को कैसे पढ़ा जाए और इसे VBA के साथ वर्कशीट में पेस्ट किया जाए।
वर्कशीट में टेक्स्ट फ़ाइल सामग्री पढ़ें
टेक्स्ट फ़ाइल की सामग्री को पढ़ने का सबसे आसान तरीका है कि इसे वर्कशीट के सेल में कॉपी किया जाए।
123456789101112 | उप FSOPasteTextFileContent ()नई फाइलसिस्टमऑब्जेक्ट के रूप में मंद एफएसओFSO सेट करें = CreateObject ("Scripting.FileSystemObject")FileToRead सेट करें = FSO.OpenTextFile("C:\Test\TestFile.txt", ForReading) 'यहां अपनी टेक्स्ट फ़ाइल का पथ जोड़ेंटेक्स्टस्ट्रिंग = FileToRead.ReadAllFileToRead.बंद करेंThisWorkbook.Sheets(1).Range("A1").Value = TextString 'आप उस वर्कशीट और सेल को निर्दिष्ट कर सकते हैं जहां टेक्स्ट फ़ाइल की सामग्री को पेस्ट करना हैअंत उप |
उपरोक्त कोड FileSystemObject का उपयोग करता है। इसका उपयोग करने के लिए, आपको वीबी स्क्रिप्ट रन-टाइम लाइब्रेरी का संदर्भ सेट करना होगा। अधिक जानकारी के लिए यहां देखें।
FileSystemObject का उपयोग किए बिना आप अपनी टेक्स्ट फ़ाइल की सामग्री को नीचे दिए गए कोड के साथ पेस्ट कर सकते हैं। यदि आपकी टेक्स्ट फ़ाइल में लाइन सेपरेटर है, तो इसे लाइन दर लाइन चिपकाया जाएगा।
123456789101112 | उप पेस्टटेक्स्टफाइल सामग्री ()कार्यपुस्तिका के रूप में मंद wbExcel, कार्यपुस्तिका के रूप में wbTextवर्कशीट के रूप में एक्सेल को मंद करेंसेट wbExcel = ThisWorkbook 'यहां निर्दिष्ट करें कि टेक्स्ट फ़ाइल की सामग्री को किस एक्सेल फ़ाइल में चिपकाया जाना हैWsExcel सेट करें = wbExcel.Sheets(1) 'यहां निर्दिष्ट करें कि किस कार्यपत्रक का उपयोग करना हैसेट करें wbText = Workbooks.Open("C:\Test\TestFile.txt") 'यहाँ अपनी टेक्स्ट फ़ाइल का पथ जोड़ेंwbText.Sheets(1).Cells.Copy wsExcel.CellswbText.Cose SaveChanges:=Falseअंत उप |
टेक्स्ट फ़ाइल पढ़ें सामग्री लाइन से लाइन, कॉलम द्वारा कॉलम
आपकी टेक्स्ट फ़ाइल में कॉमा, सेमीकोलन, टैब, स्पेस आदि द्वारा अलग-अलग पंक्तियों में कई पंक्तियाँ और कई तत्व सूचीबद्ध हो सकते हैं… टेक्स्ट फ़ाइल की सामग्री को सही ढंग से पढ़ने और चिपकाने के लिए, आपको नीचे इस कोड की आवश्यकता हो सकती है:
1234567891011121314151617181920212223242526 | उप PasteTextFileContentWithSeparators ()स्ट्रिंग के रूप में मंद स्ट्रलाइननई फाइलसिस्टमऑब्जेक्ट के रूप में मंद एफएसओवस्तु के रूप में मंद टीएसओडिम स्ट्रलाइन एलीमेंट्स वैरिएंट के रूप मेंलंबे समय के रूप में मंद सूचकांकडिम आई ऐज़ लॉन्गस्ट्रिंग के रूप में मंद सीमांककFSO सेट करें = CreateObject ("Scripting.FileSystemObject")सेट TSO = FSO.OpenTextFile("C:\Test\TestFile.txt")Delimiter=", " 'वह सीमांकक जो आपकी टेक्स्ट फ़ाइल में उपयोग किया जाता हैसूचकांक = 1जबकि TSO.AtEndOfStream = False . करेंस्ट्रलाइन = टीएसओ। रीडलाइनStrLineElements = स्प्लिट (StrLine, Delimiter)i = LBound(StrLineElements) से UBound(StrLineElements) के लिएCells(Index, i + 1).Value = StrLineElements(i) 'यह कोड एक्टिव वर्कशीट के A1 (सेल(1,1)) सेल से टेक्स्ट फाइल की सामग्री को पेस्ट करना शुरू कर देगाअगला मैंइंडेक्स = इंडेक्स + 1कुंडलीटीएसओ। बंद करेंअंत उप |
आपकी टेक्स्ट फ़ाइल में उपयोग किया जाने वाला सीमांकक अल्पविराम (","), अंतरिक्ष के साथ अल्पविराम (","), अर्धविराम (";"), अंतरिक्ष के साथ अर्धविराम ("; "), स्थान (" "), टैब हो सकता है (फिर परिसीमक = vbTab बदलें) या दुर्लभ मामलों में कोई अन्य वर्ण।
टेक्स्ट फ़ाइलों को Arrays में पढ़ें
यदि आपको अपनी टेक्स्ट फ़ाइल की सामग्री को एक सरणी में पढ़ने की आवश्यकता है और पेस्ट को लाइन से लाइन, कॉलम से कॉलम को अपनी वर्कशीट में पेस्ट करना है, तो आपको नीचे इस कोड की आवश्यकता होगी:
12345678910111213141516171819202122232425262728293031323334 | उप ReadDelimitedTextFileIntoArray ()स्ट्रिंग के रूप में मंद सीमांककमंद टेक्स्टफाइल पूर्णांक के रूप मेंस्ट्रिंग के रूप में मंद फ़ाइलपथस्ट्रिंग के रूप में मंद फ़ाइल सामग्रीडिम लाइनअरे () स्ट्रिंग के रूप मेंमंद डेटाअरे () स्ट्रिंग के रूप मेंमंद TempArray () स्ट्रिंग के रूप मेंडिम आरडब्ल्यू अस लॉन्ग, कोल अस लॉन्गDelimiter = vbTab 'वह सीमांकक जो आपकी टेक्स्ट फ़ाइल में उपयोग किया जाता हैFilePath = "सी:\टेस्ट\TestFileTab.txt"आरडब्ल्यू = 1टेक्स्टफाइल = फ्रीफाइलटेक्स्टफाइल के रूप में इनपुट के लिए फाइलपाथ खोलेंफ़ाइल सामग्री = इनपुट (एलओएफ (टेक्स्टफाइल), टेक्स्टफाइल)टेक्स्टफाइल बंद करेंLineArray() = Split(FileContent, vbNewLine) 'vbNewLine को vbCrLf या vbLf में बदलें, जो आपकी टेक्स्ट फ़ाइल में प्रयुक्त लाइन सेपरेटर पर निर्भर करता हैx = LBound(LineArray) के लिए UBound(LineArray) के लिएअगर लेन (ट्रिम (लाइनअरे (एक्स))) 0 तोTempArray = स्प्लिट (लाइनअरे (एक्स), डिलीमीटर)कर्नल = यूबाउंड (TempArray)ReDim रक्षित DataArray(col, rw)y = LBound (TempArray) के लिए UBound (TempArray) के लिएडेटाअरे (y, rw) = TempArray (y)Cells(x + 1, y + 1).Value = DataArray(y, rw) 'यह कोड सक्रिय वर्कशीट के A1 (सेल (1,1)) सेल से टेक्स्ट फ़ाइल की सामग्री को चिपकाना शुरू कर देगाअगला yअगर अंतआरडब्ल्यू = आरडब्ल्यू + 1अगला एक्सअंत उप |
आपकी टेक्स्ट फ़ाइल में लाइन सेपरेटर कैरिज रिटर्न और लाइनफीड संयोजन (Chr(13)+Chr(10)) या लाइनफीड (Chr(10)) हो सकते हैं। तदनुसार vbCrLf या vbLf का प्रयोग करें। यदि आप निश्चित नहीं हैं, तो लाइन विभाजक को इंगित करने के लिए vbNewLine का उपयोग करें।