আমি ভিবিএতে নতুন, আমি নিজেই এটি করছি। কলাম এ-তে প্রতিটি মানের জন্য পৃথক পাঠ্য ফাইল তৈরি করতে আমাকে স্বয়ংক্রিয় করতে হবে I আমি কলাম এটির মান সহ পাঠ্য ফাইলের নামকরণ করতে চাই, কলাম বিএফের সাথে টেক্সট ফাইলগুলির বিষয়বস্তু রয়েছে,
উদাহরণস্বরূপ: আমার কাছে 20000 সারি (এবং 5 টি কলাম) সহ নীচের মতো কিছু সহ একটি মাস্টার এক্সেল ফাইল রয়েছে:
VendorCode | ItemCode | Price1 | Price2 | Price3
____________________________________________________
033204 | svk3409 | 23.2 | 23.3 | 23.4
_____________________________________________________
033204 | svk5619 | 24.2 | 24.3 | 24.4
_____________________________________________________
033204 | cli7890 | 34.2 | 34.3 | 34.4
_____________________________________________________
023272 | svk3413 | 18.9 | 18.2 | 18.3
_____________________________________________________
023272 | svk4567 | 90.2 |90.3 | 90.4
আমার কাছে রেফারেন্সগুলি থেকে এখন পর্যন্ত নিম্নলিখিত কোড রয়েছে তবে এটি প্রতিটি বিক্রেতার কোডের জন্য সমস্ত সারি ফেরত দেয় না। এটি প্রতিটি vendorcode.txt এর জন্য কেবল একটি সারি দেয়।
Sub SaveRangeToCsvFiles()
Dim FileName As String
Dim Ws As Worksheet
Dim rngDB As Range
Dim r As Long, c As Long
Dim pathOut As String
Dim i As Long
pathOut = ThisWorkbook.Path & "\" '<~~ set your path: C:\temp\
Set Ws = ActiveSheet 'Sheets("AllData")
With Ws
r = .Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'c = .Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For i = 2 To r
Set rngDB = .Range("a" & i).Resize(1, 6)
FileName = .Range("a" & i).Offset(, 4)
TransToCSV pathOut & FileName & ".txt", rngDB
Next i
End With
MsgBox ("Files Saved Successfully")
End Sub
Sub TransToCSV(myfile As String, rng As Range)
Dim vDB, vR() As String, vTxt()
Dim i As Long, n As Long, j As Integer
Dim objStream
Dim strTxt As String
Set objStream = CreateObject("ADODB.Stream")
vDB = rng
For i = 1 To UBound(vDB, 1)
n = n + 1
ReDim vR(1 To UBound(vDB, 2))
For j = 1 To UBound(vDB, 2)
vR(j) = vDB(i, j)
Next j
ReDim Preserve vTxt(1 To n)
vTxt(n) = Join(vR, vbTab)
Next i
strTxt = Join(vTxt, vbCrLf)
With objStream
'.Charset = "utf-8"
.Open
.WriteText strTxt
.SaveToFile myfile, 2
.Close
End With
Set objStream = Nothing
End Sub
সম্পাদনা করুন: আমি অন্য সংস্থার সহায়তায় চেষ্টা করেছি এবং কোডটি পরিবর্তন করেছি। নিচে দেখ. এখন এটি প্রতিটি ভেন্ডর কোডের জন্য সমস্ত সারি দেয়। পূর্ববর্তী কোডের বিপরীতে, এটি প্রতিটি বিক্রেতার পাঠ্য ফাইলে সারিগুলি ওভাররাইট করে না, পরিবর্তে এটি এতে যুক্ত করে। তবে এই ফলাফলটি নিয়ে সমস্যাটি কলামগুলি পৃথক লাইনে রয়েছে। আমার যা দরকার তা হ'ল সমস্ত কলামগুলি একই লাইনে ট্যাব-সীমান্ত দিয়ে পৃথক করা। আমি কীভাবে দ্বিতীয় কোডটি ঠিক করতে পারি দয়া করে পরামর্শ দিন। আমি যা অর্জন করতে চাই তার খুব কাছাকাছি।
সাব টু ফাইল ()
Dim FilePath As String, CellData As String, LastCol As Long, LastRow As Long
Dim Filenum As Integer, loc As String
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Application.DefaultFilePath = "C:\Users\9418\Desktop\Work Files"
'loc = Application.DefaultFilePath
For i = 1 To LastRow
FilePath = Application.DefaultFilePath & "\" & Trim(ActiveSheet.Cells(i, 1).Value) & ".txt"
Filenum = FreeFile
Open FilePath For Append As Filenum
CellData = ""
For j = 2 To LastCol
CellData = Trim(ActiveSheet.Cells(i, j).Value)
Print #Filenum, CellData
Next j
Close #Filenum
Next i
MsgBox ("Done")
শেষ সাব
** সাম্প্রতিক সম্পাদনা: ** আমি এখানে আমার নিজস্ব উত্তর পোস্ট করছি।
ইন্টারনেটে আরও উল্লেখ করার পরে, আমি অবশেষে নীচের কোডটি নিয়ে এসেছি যা ভেন্ডারকোডের প্রতি সমস্ত সারি পৃথক পাঠ্য ফাইলগুলিতে প্রদান করে এবং কলাম মানগুলিও একই লাইনে রয়েছে। তবে, এখন এই ক্যোয়ারিতে সমস্যাটি হ'ল কিছু পাঠ্য ফাইল ফেরত দেওয়ার পরে কিন্তু যখন কোনও ভেন্ডরকোডের জন্য সারি সংখ্যা বেশি থাকে তখন এটি 'ওভার ফ্লো' ত্রুটি দেয়। আমি আমার মাস্টার ফাইলে সারিগুলি আলাদা এক্সেল ফাইলগুলিতে আলাদা করার চেষ্টা করেছি। প্রতিটি ফাইলের মধ্যে 200-500 সারি থাকে। তবুও এটি ওভার প্রবাহের জন্য আমাকে ত্রুটি দেয়। এই ত্রুটিটি সংশোধন করতে আমি কী করতে পারি দয়া করে কেউ পরামর্শ দিতে পারেন।
অপশন সুস্পষ্ট
সাব ক্রিয়েটফিলইচলাইন ()
Dim myPathTo As String
myPathTo = "\\901db1\IT_Canada\Vending Price Updates"
Dim myFileSystemObject As Object
Set myFileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim fileOut As Object
Dim myFileName As String
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Dim i As Long
For i = 2 To lastRow
If Not IsEmpty(Cells(i, 1)) Then
myFileName = Cells(i, 1) & ".txt"
Set fileOut = myFileSystemObject.OpenTextFile(myFileName, 8, True)
fileOut.write Cells(i, 4) & " " & Cells(i, 8) & " " & Cells(i, 8) & " " & Cells(i, 8) & vbNewLine
fileOut.Close
End If
Next
Set myFileSystemObject = Nothing
Set fileOut = Nothing
শেষ সাব