:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#1

Post by akung »

ผมลองทำแล้ว สามารถเปิดไฟล์ได้ครับตามที่เราเลือก แต่จะติดปัญหา ไฟล์ที่ 2 จะ Error คือ พอเปิดไฟล์ที่ 1 ได้แล้ว สร้างไฟล์ใหม่และทำ Copy ไฟล์ .txt ไปไว้ในไฟล์ใหม่แล้ว แต่พอเปิด .txt ไฟล์ที่ 2 มันกับฟ้อง Error รบกวนด้วยครับ ขอบคุณครับ

Code: Select all

Dim x As Integer
    Dim wkbAll As Workbook
    Dim wkbTemp As Workbook
    Dim sDelimiter As String
    Dim rTarget As Range
    Dim r As Range
    
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    sDelimiter = "|"

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Text Files (*.txt), *.txt", _
      MultiSelect:=True, Title:="Text Files to Open")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
    wkbTemp.Sheets(1).Copy
    Set wkbAll = ActiveWorkbook
    wkbTemp.Close (False)
    wkbAll.Worksheets(x).Columns("A:A").TextToColumns _
      Destination:=Range("A1"), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=False, Semicolon:=False, _
      Comma:=False, Space:=False, _
      Other:=True, OtherChar:="|"

   x = x + 1

Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x))
    Set wkbAll = ActiveWorkbook
        With wkbAll
            With Sheets(1)
                Set rTarget = .Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            End With
            
                 r.SpecialCells(xlCellTypeConstants).EntireRow.Copy
                 rTarget.PasteSpecial xlPasteValues
           
        End With
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#2

Post by snasui »

:D แนบไฟล์ตัวอย่างมาด้วยเพื่อจะได้ช่วยทดสอบได้ครับ
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#3

Post by akung »

snasui wrote::D แนบไฟล์ตัวอย่างมาด้วยเพื่อจะได้ช่วยทดสอบได้ครับ
อัพไฟล์ให้แล้วครับ รบกวนอาจารย์ด้วยครับ

ผมอัพไฟล์ .txt ไม่ผ่าน ครับ

ไฟล์ .txt ผมใช้ notepad ครับ คีย์ แค่ 3 ฟิลด์ คือ

ไฟล์ที่ 1 ชื่อ Test1.txt
นาย ก. สมส่วน 100
นาย ข. สมใจ 200

ไฟล์ที่ 2 ชื่อ Test2.txt
นาย ค. แซ่ตั้ง 300
นาย ง. แซ่ลี้ 400
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#4

Post by snasui »

:D Code สำหรับรวม Text File ดูที่นี่เป็นตัวอย่างครับ viewtopic.php?f=3&t=309#p1661
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#5

Post by akung »

snasui wrote::D Code สำหรับรวม Text File ดูที่นี่เป็นตัวอย่างครับ viewtopic.php?f=3&t=309#p1661
จาก Code ผมพยายามแก้ไข Column เริ่มต้น เพราะจาก Code มันให้เริ่มต้นที่ Column C แถวที่ 2 แต่ผมต้องการให้เริ่มที่ Column A แถวที่ 2 ครับต้องแก้ตรงไหนครับ

Code: Select all

Sub Import()
    Dim rTarget As Range
    Dim i As Integer
    Dim TextFileImport As Variant
    On Error GoTo MsgError
    TextFileImport = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
           "Select Text Data File", , True)
    For i = 1 To UBound(TextFileImport)
    Set rTarget = Worksheets("School").Range("C65536").End(xlUp).Offset(1, 0)
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & TextFileImport(i), _
        Destination:=rTarget)
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 874
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Next i
    Exit Sub
MsgError:
    MsgBox "Please select a file"
    Exit Sub
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#6

Post by snasui »

:D แก้ตรง Set rTarget = Worksheets("School").Range("C65536").End(xlUp).Offset(1, 0) เป็น Set rTarget = Worksheets("School").Range("A65536").End(xlUp).Offset(1, 0) ครับ
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#7

Post by akung »

snasui wrote::D แก้ตรง Set rTarget = Worksheets("School").Range("C65536").End(xlUp).Offset(1, 0) เป็น Set rTarget = Worksheets("School").Range("A65536").End(xlUp).Offset(1, 0) ครับ
ขอบคุณครับอาจารย์ เส้นผมบังภูเขาจริง ๆ :lol:
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#8

Post by akung »

ขออนุญาติรบกวนอาจารย์อีกครั้งครับ คือ .txt ไำฟล์ที่ได้ มีตัว | เป็นตัวคั่นอยู่ จึงอยากต้องการให้ฟิลด์แยกตาม ตัว | ต้องเขียนอย่างไรครับผมใช้ Code นี้แต่ก็ ไม่ผ่านครับ

Code: Select all

wkbAll.Worksheets(x).Columns("A:A").TextToColumns _
      Destination:=Range("A1"), DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=False, Semicolon:=False, _
      Comma:=False, Space:=False, _
      Other:=True, OtherChar:="|"
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#9

Post by snasui »

:D ลองดูตัวอย่าง code ตามด้านล่างครับ

Code: Select all

Sub Import()
    Dim rTarget As Range
    Dim i As Integer
    Dim TextFileImport As Variant
    On Error GoTo MsgError
    TextFileImport = Application.GetOpenFilename("Text Files (*.txt),*.txt", , _
           "Select Text Data File", , True)
    For i = 1 To UBound(TextFileImport)
    Set rTarget = Worksheets("Sheet1").Range("A65536").End(xlUp).Offset(1, 0)
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & TextFileImport(i), _
        Destination:=rTarget)
        .FieldNames = True
        'Other code
        .TextFileOtherDelimiter = "|" '<== Add this line
        .Refresh BackgroundQuery:=False
    End With
    Next i
    Exit Sub
MsgError:
    MsgBox "Please select a file"
    Exit Sub
End Sub
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#10

Post by akung »

ขอบคุณอาจารย์มาก ๆ ครับ
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#11

Post by akung »

รบกวนอาจารย์เพิ่มเติมครับ ถ้าผมต้องการเปลี่ยนการรวมไฟล์จาก .txt เป็น xls จะต้องทำเปลี่ยนคำสั่งอะไรบ้างครับ ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#12

Post by snasui »

:D ลองดูตัวอย่างจากโพสต์นี้ครับ viewtopic.php?f=3&t=6593#p42201
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#13

Post by akung »

ขอบคุณอาจารย์มากครับ

แต่จาการตรวจเช็คโปรแกรม ระบบทำการเปิดไฟล์ขึ้นมาตามที่เลือก และมีการ Copy ข้อมูลถูกต้อง แต่พอตอนที่จะมาวางเหมือนคำสั่งมันโดดข้ามไปยอมวาง ไม่ทราบว่าเป็นเพราะอะไร รบกวนอาจารย์ด้วยครับ

Code: Select all

Option Explicit
Sub CollectData()
    Dim sh As Worksheet, thisBook As Workbook, strThisbook As Variant
    Dim ob As Workbook, i As Integer, rRow As Long, tg As Range
    
    Set ob = ThisWorkbook
    ob.Sheets(1).UsedRange.Clear
    strThisbook = Application.GetOpenFilename(Filefilter:= _
            "All File (*.*), *.*", Title:="Please select source file(s).", MultiSelect:=True)
    If TypeName(strThisbook) = "Boolean" Then
        MsgBox "Please select file(s)."
        Exit Sub
    End If
    rRow = 1
    For i = 1 To UBound(strThisbook)
        Set thisBook = Workbooks.Open(strThisbook(i))
        Application.ScreenUpdating = False
        For Each sh In thisBook.Worksheets
            sh.UsedRange.Copy
            ob.Sheets(1).Range("a" & rRow).PasteSpecial xlPasteValues 'ตรงนี้ไม่ทำงาน
            rRow = ob.Sheets(1).UsedRange.Rows.Count + 1
            Application.CutCopyMode = False
        Next sh
        thisBook.Saved = True
        thisBook.Close
    Next i
    Application.ScreenUpdating = True
    MsgBox "Data already collected."
End Sub
User avatar
snasui
Site Admin
Site Admin
Posts: 31257
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#14

Post by snasui »

:D แนบไฟล์ตัวอย่างมาด้วยเพื่อเพื่อน ๆ จะได้ช่วยทดสอบได้ครับ
akung
Member
Member
Posts: 159
Joined: Sun Mar 11, 2012 10:20 am

Re: รวม ไฟล์ .txt หลาย ๆ ไฟล์ไว้ใน Sheets เดียว

#15

Post by akung »

จากการทดสอบอีกครั้ง ผมฝั่งคำสั่งไว้ใน This Workbook สรุปว่าคำสั่งใช้งานได้อย่างถูกต้องครับ

แต่ตอนแรกที่ทดสอบผมนำคำสั่งไปฝั่งไว้ที่ Personal Marco Workbook คำสั่งทำงานไม่ครบตามที่แจ้งครับ ตอนนี้กำลังหาสาเหตุอยู่ครับ
You do not have the required permissions to view the files attached to this post.
Post Reply