Đóng và lưu tên file notepad sau khi copy dữ liệu từ excel sang

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào các ACE GPE

Em có file dữ liệu cần copy sang file dạng *txt
Nếu chuyển bằng cách SAVE AS sheets sang đuôi *txt thì em làm được, nhưng để kích hoạt NotePad và dán dữ liệu sang sau đó đóng file NotePad và lưu tên thì em không có cách nào xử lý được.

Khi chuyển từ Sheet sang file mới rồi lưu dạng *txt thì import vào phần mềm báo lỗi số cột, vì vậy bắt buộc phải copy sang Notepad. Về việc này em có sưu tầm trên mạng 1 đoạn code, nhưng để lưu tên file *txt và đóng lại thì vẫn không đáp ứng được.

Mong các ACE giúp đỡ.

Em cảm ơn!

Sub ExportToNotePad()

Dim WB As Workbook
Dim FileName As String
Dim WS As Worksheet
Dim LR As Integer

Set WB = ThisWorkbook
FileName = WB.Sheets("Ventas").Range("A2").Value
Application.ScreenUpdating = False

WB.Sheets("Ventas").Activate
Range("A12").Select
LR = WB.Sheets("Ventas").Range(Selection, Selection.End(xlDown)).Count + 1

WB.Sheets("Sheet1").Activate
WB.Sheets("Sheet1").Range("A3:AD1048576").ClearContents
WB.Sheets("Sheet1").Range("A2:AD2").Select
Selection.Copy
WB.Sheets("Sheet1").Range(Cells(3, 1), Cells(LR, 30)).PasteSpecial

For Each WS In WB.Worksheets
If WS.Name = "Sheet1" Then
WS.Activate
Range(, .End(xlDown)).Select
Selection.Copy
Shell "notepad.exe", vbNormalFocus
With Application
SendKeys "^V"
SendKeys "^S"
SendKeys "{ENTER}"
SendKeys "LE20543254798" & FileName
SendKeys "%fx"
VBA.AppActivate .Caption
End With
'With NWB
'.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'.Application.CutCopyMode = False
'.SaveAs Filename:="C:Usersphannd3DesktopLE20543254798.txt", _
FileFormat:=xlUnicodeText, CreateBackup:=False
'.Close savechanges:=True
'End With
End If
Next WS
WB.Sheets("Ventas").Activate
Application.ScreenUpdating = True
MsgBox "Export Successful!"
End Sub

thiết nghĩ sendkey chỉ là giải pháp sau cùng gọi là "bí quá làm liều" thôi chứ xuất nội dung ra file .txt hình như chả ai làm thế . bạn thử tìm trong diễn đàn các bài viết tương tự xem sao

Chào bạn,

Như mình đã nói ở trên, nếu kết xuất từ 01 Sheets ra *txt thì đơn giản nhưng import vào phần mềm vì ko nhận, Phần mềm báo lỗi số cột định dạng. (Điều kiện chỉ có 01 cột duy nhất).
Vì vậy cần phải kích hoạt Notepad và paste vào đó.
Về các bài viết cuả các diễn đàn khác, mình tìm mấy ngày nay mà ko có. Các nào cũng phải tự điền tên và bấm SAVE, CLOSE thủ công.

Mong các cao thủ trợ giúp.

mình ko hiểu lắm ý bạn về số cột gì đó …
nhưng bạn có thể tưởng tượng :
cái cần tạo : 1 file text
và như câu nói kinh điển của các vị trên GPE : cái gì làm bằng tay thủ công thì code cũng làm dc
dưới đây là vài dòng ghi dữ liệu ra file text . nếu ghi sai ý bạn thì bạn cho ý kiến lại

Public Sub hello()

Dim r As Long
Dim lr As Long
Dim c As Integer
Dim lc As Integer
Dim i As Long
r = firstRow
If r > 0 Then
    Dim fsT As Object
    Set fsT = CreateObject("ADODB.Stream")
    fsT.Type = 2 'string data type
    fsT.Charset = "utf-8"
    fsT.Open

lr = Sheet2.Range("d" & r).End(xlDown).Row
    lc = Sheet2.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    Dim str As String
    For i = r To lr Step 1
        str = ""
        For c = 1 To lc Step 1
            str = str & Sheet2.cells(i, c) & "|"
        Next
        str = str & vbNewLine
        fsT.writetext str
    Next
    fsT.SaveToFile ThisWorkbook.Path & "\newtext.txt", 2
End If

End Sub
Private Function firstRow() As Long

Dim cells As Variant
Dim i As Integer
firstRow = 0
cells = Sheet2.Range("d1:d1000").Value
For i = 1 To 1000 Step 1
    If Trim(cells(i, 1)) <> "" And IsNumeric(cells(i, 1)) Then
        firstRow = i
        Exit For
    End If
Next
End Function

Nếu theo code bạn post lên thì mình đoán là bạn đang làm mọi việc rắc rối thêm lên. (1)*
Mình đã xem qua file của bạn, mình lại đoán tiếp là dữ liệu chỉ thực sự bắt đầu từ dòng số 12 và từ dòng 1 và đến 11 sẽ không thay đổi hoặc không thay đổi nhiều. (2)

Giả sử (1) & (2) là đúng thì bạn chỉ việc export/import dữ liệu kể từ dòng 12 trở về sau thôi. Nếu không thì mình hiểu nhầm, bạn có thể dừng đọc câu trả lời này.

Bạn muốn lưu dữ liệu dưới dạng file *.txt – thì có nhiều cách để lưu, 2 cách thường được sử dụng là:
1. lưu dưới dạng các giá trị ngăn cách nhau bằng dấu phẩy (CSV – comma separated values)
2. lưu dưới dạng các giá trị ngăn cách nhau bằng dấu tab (TSV – tab separated values)

Vì bạn không up file txt kết quả lên nên mình đoán là nhiều người lười chưa viết code vội, mình cũng vậy. Mình sẽ đoán tiếp là bạn sẽ upload file txt lên.
Hẹn gặp lại sớm 🙂

(1)*: Đoạn code: mở notepad ra, sử dụng sendkeys để dán dữ liệu sau đó lại đổi tên file rồi tiếp sau đó làm vài thứ khác … Tại sao không lấy dữ liệu ra, tạo 1 file txt với tên bạn muốn và ghi dữ liệu vào.

www.giaiphapexcel.com/diendan/threads/%C4%90%C3%B3ng-v%C3%A0-l%C6%B0u-t%C3%AAn-file-notepad-sau-khi-copy-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%AB-excel-sang.102032/#post-635614

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm