Cần mọi người hỗ trợ giúp code xuất dữ liệu từ 1 vùng sang file TXT (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Em xin chào cả nhà GPE. Hôm nay là bài đầu tiên sau lệnh khóa gần 2 tháng.
Ví dụ em có 1 vùng B3:B100 em muốn xuất sang 1 file Notepad có tên "Data.txt" nằm cùng thư mục với File excel thì em viết code ra làm sao. rất mong mọi người hổ trợ. Mình xin chân thành cảm ơn ạ

Và lưu ý: Do có 1 vài thành viên trong diễn đàn vẫn còn sân si với mình. mặc dù mình đã làm 1 topic xin lổi sáng nay. Nên từ sau về sau mình không mong muốn chuyện đó xảy ra nữa. Cụ thể các bài của mình đăng mình sẻ không cần các thành viên có tên sau trả lời

PacificPR
thuyyeu99
VetMini

befaint

Vì thường xuyên trả lời không đúng chủ đề của người hỏi. Thường xuyên châm chọc gây ra mâu thuẩn mất đoàn kết. Nếu ai biết thì trả lời mình vô cùng cảm ơn. còn 4 thành viên phía trên thì cho dù trả lời mình cũng không thèm đọc nữa. Em xin hết


1585993627070.png
 

File đính kèm

Lần chỉnh sửa cuối:
Em xin chào cả nhà GPE. Hôm nay là bài đầu tiên sau lệnh khóa gần 2 tháng.
Ví dụ em có 1 vùng B3:B100 em muốn xuất sang 1 file Notepad có tên "Data.txt" nằm cùng thư mục với File excel thì em viết code ra làm sao. rất mong mọi người hổ trợ. Mình xin chân thành cảm ơn ạ

Và lưu ý: Do có 1 vài thành viên trong diễn đàn vẫn còn sân si với mình. mặc dù mình đã làm 1 topic xin lổi sáng nay. Nên từ sau về sau mình không mong muốn chuyện đó xảy ra nữa. Cụ thể các bài của mình đăng mình sẻ không cần các thành viên có tên sau trả lời

PacificPR
thuyyeu99
VetMini

befaint

Vì thường xuyên trả lời không đúng chủ đề của người hỏi. Thường xuyên châm chọc gây ra mâu thuẩn mất đoàn kết. Nếu ai biết thì trả lời mình vô cùng cảm ơn. còn 4 thành viên phía trên thì cho dù trả lời mình cũng không thèm đọc nữa. Em xin hết


View attachment 234739
Từng nhìn thấy cách làm bài này rồi. Lười tìm lại
 
Upvote 0
Upvote 0
Nếu bạn biết VBA, thì có thể vận dụng đoạn code dưới đây.


File sẽ được lưu không chứa UTF-8 BOM.
-----------------------------
JavaScript:
Sub SaveAsTxtFile()
  Dim i As Long, j As Long, Arr, Text As String, fileName As String
  Arr = Range("B2").CurrentRegion.Value
  j = UBound(Arr, 1)
  If j > 1 Then
    If UBound(Arr, 2) > 1 Then
      For i = 1 To j
        Text = VBA.IIf(Text = "", "", Text & VBA.vbNewLine) & VBA.Join(Application.Index(Arr, i, 0), VBA.vbTab)
      Next i
    Else
      Text = VBA.Join(Application.Transpose(Arr), VBA.vbNewLine)
    End If
    Call CreateFile("text.txt", ThisWorkbook.Path, Text)
    'Call CreateFile("text.txt", "<Folder Name>", Text)
  End If
End Sub
Sub CreateFile(ByVal fileName As String, _
               ByVal FolderPath As String, _
      Optional ByVal Text As String = "", _
      Optional ByVal OverWriteFiles As Boolean = True, _
      Optional ByVal ReplaceSpaceName As String = " ")
  fileName = VBA.Strings.Replace(fileName, " ", ReplaceSpaceName)
  Dim UTFStream As Object, BinaryStream As Object
  Dim FullName$, FSO As Object
  Set FSO = VBA.CreateObject("Scripting.FileSystemObject")
  FullName = FolderPath & VBA.IIf(RIGHT(FolderPath, 1) Like "[\/]", "", "\") & fileName
  If Not OverWriteFiles Then
    If FSO.FileExists(FullName) Then GoTo Ends
  Else
    If FSO.FileExists(FullName) Then FSO.DeleteFile FullName, True
  End If
  GoSub MakeFolder
  Dim FolderArray, Tmp$, Item, tFolder$
  On Error GoTo Ends
  Set UTFStream = VBA.CreateObject("ADODB.Stream")
  Set BinaryStream = VBA.CreateObject("ADODB.Stream")
  UTFStream.Type = 2 'adTypeText
  UTFStream.Mode = 3 'adModeReadWrite
  UTFStream.Charset = "UTF-8"
  UTFStream.Open
  UTFStream.WriteText Text
  UTFStream.Position = 3 'skip BOM
  BinaryStream.Type = 1 'adTypeBinary
  BinaryStream.Mode = 3 'adModeReadWrite
  BinaryStream.Open
  UTFStream.CopyTo BinaryStream
  BinaryStream.SaveToFile FullName, 2 'adSaveCreateOverWrite
  BinaryStream.flush
  UTFStream.Close
  BinaryStream.Close
Ends:
On Error Resume Next
  UTFStream.Close: BinaryStream.Close
  Set UTFStream = Nothing: Set BinaryStream = Nothing: Set FSO = Nothing
On Error GoTo 0
Exit Sub
MakeFolder:
  On Error Resume Next
  tFolder = FolderPath
  If RIGHT(tFolder, 1) = "\" Then tFolder = LEFT(tFolder, Len(tFolder) - 1)
  If tFolder Like "\\*\*" Then tFolder = VBA.Strings.Replace(tFolder, "\", "@", 1, 3)
  FolderArray = VBA.Split(tFolder, "\")
  FolderArray(0) = VBA.Strings.Replace(FolderArray(0), "@", "\", 1, 3)
  With FSO
    For Each Item In FolderArray
      Tmp = Tmp & Item & "\"
      If Not .FolderExists(Tmp) Then .CreateFolder (Tmp)
    Next
  End With
  On Error GoTo 0
Return
End Sub
 
Upvote 0
Em xin chào cả nhà GPE. Hôm nay là bài đầu tiên sau lệnh khóa gần 2 tháng.
Ví dụ em có 1 vùng B3:B100 em muốn xuất sang 1 file Notepad có tên "Data.txt" nằm cùng thư mục với File excel thì em viết code ra làm sao. rất mong mọi người hổ trợ. Mình xin chân thành cảm ơn ạ

Và lưu ý: Do có 1 vài thành viên trong diễn đàn vẫn còn sân si với mình. mặc dù mình đã làm 1 topic xin lổi sáng nay. Nên từ sau về sau mình không mong muốn chuyện đó xảy ra nữa. Cụ thể các bài của mình đăng mình sẻ không cần các thành viên có tên sau trả lời

PacificPR
thuyyeu99
VetMini

befaint

Vì thường xuyên trả lời không đúng chủ đề của người hỏi. Thường xuyên châm chọc gây ra mâu thuẩn mất đoàn kết. Nếu ai biết thì trả lời mình vô cùng cảm ơn. còn 4 thành viên phía trên thì cho dù trả lời mình cũng không thèm đọc nữa. Em xin hết


View attachment 234739

Bạn thử xem được không?
Mã:
Option Explicit

Sub Kommentar_Tab()
    'https://stackoverflow.com/questions/16395154/copy-used-range-to-text-file/16396129#16396129
    Dim wbSource As Workbook, wsSource As Worksheet, wbDest As Workbook, fName As String
    
    Set wbSource = ActiveWorkbook
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    Set wbDest = Workbooks.Add

    wsSource.Range("B2").CurrentRegion.Copy
    wbDest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    Application.CutCopyMode = False
    fName = ThisWorkbook.Path & "\Data.txt"

    wbDest.SaveAs fName, FileFormat:=xlUnicodeText
    wbDest.Close SaveChanges:=True

End Sub
 
Upvote 0
Bạn thử xem được không?
Mã:
Option Explicit

Sub Kommentar_Tab()
    'https://stackoverflow.com/questions/16395154/copy-used-range-to-text-file/16396129#16396129
    Dim wbSource As Workbook, wsSource As Worksheet, wbDest As Workbook, fName As String
   
    Set wbSource = ActiveWorkbook
    Set wsSource = ThisWorkbook.Sheets("Sheet1")
    Set wbDest = Workbooks.Add

    wsSource.Range("B2").CurrentRegion.Copy
    wbDest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    Application.CutCopyMode = False
    fName = ThisWorkbook.Path & "\Data.txt"

    wbDest.SaveAs fName, FileFormat:=xlUnicodeText
    wbDest.Close SaveChanges:=True

End Sub
Tuyệt vời đúng ý mình luôn. cảm ơn bạn rất nhiều. Chúc bạn và gia đình bạn 1 ngày cuối tuần vui vẽ hạnh phúc
Bài đã được tự động gộp:

Nếu bạn biết VBA, thì có thể vận dụng đoạn code dưới đây.


File sẽ được lưu không chứa UTF-8 BOM.
-----------------------------
JavaScript:
Sub SaveAsTxtFile()
  Dim i As Long, j As Long, Arr, Text As String, fileName As String
  Arr = Range("B2").CurrentRegion.Value
  j = UBound(Arr, 1)
  If j > 1 Then
    If UBound(Arr, 2) > 1 Then
      For i = 1 To j
        Text = VBA.IIf(Text = "", "", Text & VBA.vbNewLine) & VBA.Join(Application.Index(Arr, i, 0), VBA.vbTab)
      Next i
    Else
      Text = VBA.Join(Application.Transpose(Arr), VBA.vbNewLine)
    End If
    Call CreateFile("text.txt", ThisWorkbook.Path, Text)
    'Call CreateFile("text.txt", "<Folder Name>", Text)
  End If
End Sub
Sub CreateFile(ByVal fileName As String, _
               ByVal FolderPath As String, _
      Optional ByVal Text As String = "", _
      Optional ByVal OverWriteFiles As Boolean = True, _
      Optional ByVal ReplaceSpaceName As String = " ")
  fileName = VBA.Strings.Replace(fileName, " ", ReplaceSpaceName)
  Dim UTFStream As Object, BinaryStream As Object
  Dim FullName$, FSO As Object
  Set FSO = VBA.CreateObject("Scripting.FileSystemObject")
  FullName = FolderPath & VBA.IIf(RIGHT(FolderPath, 1) Like "[\/]", "", "\") & fileName
  If Not OverWriteFiles Then
    If FSO.FileExists(FullName) Then GoTo Ends
  Else
    If FSO.FileExists(FullName) Then FSO.DeleteFile FullName, True
  End If
  GoSub MakeFolder
  Dim FolderArray, Tmp$, Item, tFolder$
  On Error GoTo Ends
  Set UTFStream = VBA.CreateObject("ADODB.Stream")
  Set BinaryStream = VBA.CreateObject("ADODB.Stream")
  UTFStream.Type = 2 'adTypeText
  UTFStream.Mode = 3 'adModeReadWrite
  UTFStream.Charset = "UTF-8"
  UTFStream.Open
  UTFStream.WriteText Text
  UTFStream.Position = 3 'skip BOM
  BinaryStream.Type = 1 'adTypeBinary
  BinaryStream.Mode = 3 'adModeReadWrite
  BinaryStream.Open
  UTFStream.CopyTo BinaryStream
  BinaryStream.SaveToFile FullName, 2 'adSaveCreateOverWrite
  BinaryStream.flush
  UTFStream.Close
  BinaryStream.Close
Ends:
On Error Resume Next
  UTFStream.Close: BinaryStream.Close
  Set UTFStream = Nothing: Set BinaryStream = Nothing: Set FSO = Nothing
On Error GoTo 0
Exit Sub
MakeFolder:
  On Error Resume Next
  tFolder = FolderPath
  If RIGHT(tFolder, 1) = "\" Then tFolder = LEFT(tFolder, Len(tFolder) - 1)
  If tFolder Like "\\*\*" Then tFolder = VBA.Strings.Replace(tFolder, "\", "@", 1, 3)
  FolderArray = VBA.Split(tFolder, "\")
  FolderArray(0) = VBA.Strings.Replace(FolderArray(0), "@", "\", 1, 3)
  With FSO
    For Each Item In FolderArray
      Tmp = Tmp & Item & "\"
      If Not .FolderExists(Tmp) Then .CreateFolder (Tmp)
    Next
  End With
  On Error GoTo 0
Return
End Sub
Quá pro. Tuyệt vời đúng ý mình luôn. cảm ơn bạn rất nhiều. Chúc bạn và gia đình bạn 1 ngày cuối tuần vui vẽ hạnh phúc
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom