मेरे पास एक एक्सेल फ़ाइल है जहां एक कॉलम में संख्या, स्ट्रिंग, दिनांक इत्यादि जैसे डेटा होंगे। मैं उस एकल कॉलम को वीबीए का उपयोग करके टेक्स्ट में कनवर्ट करना चाहता हूं।

कोड: (यहां मैं कॉलम A को टेक्स्ट में बदलने की कोशिश कर रहा हूं)

Sub Datatotext()
    Dim xWs As Worksheet
    For Each xWs In Application.ActiveWorkbook.Worksheets
        xWs.Activate
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 2), TrailingMinusNumbers:=True
        Next
    ActiveWorkbook.Save
End Sub

मुद्दा: उपरोक्त कोड चलाने के बाद एक कॉलम को टेक्स्ट में बदल दिया जाता है, लेकिन दिनांक मानों के लिए, महीने और तारीख के हिस्से की अदला-बदली हो रही है और शून्य हटा दिया गया है। उदाहरण: २९/०३/२०३३ --- में परिवर्तित--> ३/२९/२०३३। जबकि अन्य डेटा जैसे स्ट्रिंग, नंबर आदि को बिना किसी समस्या के टेक्स्ट के रूप में संग्रहीत किया जाता है। इसमें मेरी मदद करो। मुझे टेक्स्ट के समान डेटा चाहिए जैसे: 29/03/2033 -> 29/03/2033

इनपुट फ़ाइल: इनपुट फ़ाइल

पाठ में कनवर्ट करने के बाद इनपुट फ़ाइल डेटा

0
prabhaahar 11 सितंबर 2020, 16:05

1 उत्तर

सबसे बढ़िया उत्तर

सबसे पहले, अपने कोड के साथ वास्तव में सावधान रहें, यह कार्यपुस्तिका में प्रत्येक शीट के कॉलम ए को बदल देगा।

इस कोड को आज़माएं, यह कॉलम के प्रत्येक सेल को टेक्स्ट में और फिर कॉलम टाइप को टेक्स्ट में बदल देगा।

Dim rngColumn As Range
Dim cel As Variant
Dim usdRng As Long
Dim arr() As String
Dim count As Long
Dim xWs As Worksheet
' It's looping through the worksheets

Application.Calculation = xlCalculationManual
For Each xWs In Application.ActiveWorkbook.Worksheets
    'get last used row number
    usdRng = xWs.UsedRange.Rows.count
    Set rngColumn = xWs.Range("A1:A" & CStr(usdRng))
    
    ReDim arr(1 To usdRng)
    
    xWs.Range("A:A").Columns.AutoFit

    count = 1
    For Each cel In rngColumn
        arr(count) = cel.Text
        count = count + 1
    Next
    xWs.Range("A:A").NumberFormat = "@"
    xWs.Range("A1:A" & CStr(count-1)).Value = Application.Transpose(arr)
    
Next

Application.Calculation = xlCalculationAutomatic
ActiveWorkbook.Save
0
rodrigo.cantunes 25 सितंबर 2020, 17:25