Page 1 of 1

ส่งข้อมูลจาก Excel ไปยัง Notepad

Posted: Sun Sep 29, 2024 3:39 pm
by Wreuangsri
แบบทับไฟล์เก่า และแบบต่อจากไฟล์เก่า พร้อมกับแนบไฟล์มาด้วย ครับ

ในแผ่นงาน Sheet1 ผมต้อการส่งข้อมูลจาก Excel ไปยัง Notepad แบบทับไฟล์เก่า หรือแบบต่อจากไฟล์เก่า
แบบเดียวกับในแผ่นงาน myLogSheet ต้องเขียน VB Code อย่างไรครับ

Re: ส่งข้อมูลจาก Excel ไปยัง Notepad

Posted: Mon Sep 30, 2024 6:26 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    
    Dim filename As String, lineText As String
    Dim my_range As Range
    
    filename = "C:\Users\Wanchai\Desktop\new file.txt"

    If VBA.Dir(filename) = "" Then
        Set fso = VBA.CreateObject("Scripting.FileSystemObject")
        Set oFile = fso.CreateTextFile(logPath)
        'oFile.WriteLine ("") 'clear the file
        oFile.Close
    Else
        'if file exists  delete it
        If Sheet2.ckbxReplace.Value = True Then VBA.Kill filename
    End If
    Open filename For Output As #1
    
    Set my_range = Worksheets("Sheet1").Range("A2:Z21")
    For i = 2 To 20 'แถว
        For j = 1 To 26  'คอลัมน์
            lineText = IIf(j = 1, "", lineText) & my_range.Cells(i, j)
        Next j
    Print #1, lineText
    Next i
    
    Close #1
    
    MsgBox ("เสร็จแล้ว")
    
    On Error Resume Next
    Shell ("C:\Windows\system32\notepad.exe" & " " & filename), vbNormalFocus

End Sub

Re: ส่งข้อมูลจาก Excel ไปยัง Notepad

Posted: Mon Sep 30, 2024 8:32 am
by Wreuangsri
ยังไม่เป็นผลตามที่ต้องการครับ เมื่อติ๊กเครื่องหมายถูกออกยังไม่ต่อจากไฟล์เดิมครับ

Re: ส่งข้อมูลจาก Excel ไปยัง Notepad

Posted: Mon Sep 30, 2024 9:28 am
by snasui
:D ตัวอย่าง Code ครับ

Code: Select all

Private Sub CommandButton1_Click()
    
    Dim filename As String, lineText As String
    Dim my_range As Range
    
    filename = "C:\Users\Wanchai\Desktop\new file.txt"
    
   ' Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    
    If Sheet2.ckbxReplace.Value = True Then
        Open filename For Output As #1
    Else
        Open filename For Append As #1
    End If
    Set my_range = Worksheets("Sheet1").Range("A2:Z21")
    For i = 2 To 20 'แถว
        For j = 1 To 26  'คอลัมน์
            lineText = IIf(j = 1, "", lineText) & my_range.Cells(i, j)
        Next j
    Print #1, lineText
    Next i
    
    Close #1
    
    MsgBox ("เสร็จแล้ว")
    
    On Error Resume Next
    Shell ("C:\Windows\system32\notepad.exe" & " " & filename), vbNormalFocus

End Sub

Re: ส่งข้อมูลจาก Excel ไปยัง Notepad

Posted: Mon Sep 30, 2024 9:50 am
by Wreuangsri
เรียบร้อยแล้วครับ ขอบคุณมากครับ