Page 1 of 1

ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 5:41 pm
by tanusorn
Dim strPath As Variant, i As Integer
Dim fName As String, nb As Workbook
Dim tb As Workbook

Set tb = ThisWorkbook
strPath = Application.GetOpenFilename("Excel files(.xlsx),*.xlsx*", _
Title:="Please select text files.", MultiSelect:=True)
If TypeName(strPath) = "Boolean" Then Exit Sub

For i = 1 To UBound(strPath)
Set nb = Workbooks.Open(strPath(i))
With nb.Worksheets(1)
.Range("a1").Offset(0, .UsedRange.Columns.Count) _
.Resize(.UsedRange.Rows.Count - 1, 1).Value = .Name
.UsedRange.Offset(0, 0).Copy
End With
With tb.Sheets(1)
.Range("a" & .Rows.Count).End(xlUp).Offset(0, 0).PasteSpecial xlPasteValues
End With
Cells.EntireColumn.AutoFit
Columns("A:AS").EntireColumn.AutoFit
Application.CutCopyMode = False
nb.Close False
Next i

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 5:46 pm
by snasui
:D กรุณา Post Code ให้แสดงเป็น Code ดูตัวอย่างได้จากกฎการใช้บอร์ดข้อ 5 ด้านบนครับ :roll:

นอกจากนี้กรุณาแนบไฟล์ตัวอย่างที่ได้ปรับ Code ให้เป็นไปตามต้องการมาแล้วด้วยจะได้ช่วยตอบต่อไปจากนั้นครับ

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 6:09 pm
by tanusorn

Code: Select all

Private Sub CommandButton1_Click()

    Dim strPath As Variant, i As Integer
    Dim fName As String, nb As Workbook
    Dim tb As Workbook
    
    Set tb = ThisWorkbook
    strPath = Application.GetOpenFilename("Excel files(*.xlsx*),*.xlsx*", _
        Title:="Please select text files.", MultiSelect:=True)
    If TypeName(strPath) = "Boolean" Then Exit Sub
    
    For i = 1 To UBound(strPath)
        Set nb = Workbooks.Open(strPath(i))
        With nb.Worksheets(1)
            .Range("a1").Offset(0, .UsedRange.Columns.Count) _
                .Resize(.UsedRange.Rows.Count - 1, 1).Value = .Name
            .UsedRange.Offset(0, 0).Copy
        End With
        With tb.Sheets(1)
            .Range("a" & .Rows.Count).End(xlUp).Offset(0, 0).PasteSpecial xlPasteValues
        End With
        Cells.EntireColumn.AutoFit
    Columns("A:AS").EntireColumn.AutoFit
        Application.CutCopyMode = False
        nb.Close False
    Next i

    'Selection.Cut
    'Sheets.Add After:=ActiveSheet
    'ActiveSheet.Paste
End Sub

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 6:19 pm
by snasui
:D Code ที่เขียนมาไม่มีระบุว่าต้องการให้ไฟล์ใดขึ้นก่อนขึ้นหลัง

ไม่ทราบว่ามีการกำหนดไว้ตรงไหน อย่างไร ว่าไฟล์ไหนขึ้นก่อนหรือหลัง ได้เขียน Code เช่นนั้นไว้แล้วหรือไม่ ถ้ายังไม่ได้เขียนให้เขียนมาเองก่อน ได้เท่าไรก็เท่านั้นแต่ขอให้ลองเขียนมาเองก่อนครับ

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 6:50 pm
by tanusorn
มันกำหนดอย่างไรหรอครับ แบบเลือกไฟล์ใดก่อนให้ขึ้นอันนั้นก่อน พอดีผมไม่ค่อยมีความรู้เท่าไรครับ

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 7:28 pm
by snasui
:D คุณ tanusorn ต้องทราบก่อนครับว่าต้องการเงื่อนไขการทำงานเป็นอย่างไร อธิบายสิ่งนั้นมาให้ทราบกันก่อน จะได้ช่วยคิดวิธีการทำงานแต่ต้องไปเขียน Code มาเองก่อน จะได้ช่วยแก้ไขปรับปรุงให้ได้ครับ

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 8:10 pm
by snasui
tanusorn wrote: Thu Jun 20, 2019 6:50 pm แบบเลือกไฟล์ใดก่อนให้ขึ้นอันนั้นก่อน
:D ปัจจุบันเมื่อเลือกให้ไฟล์ไหนขึ้นก่อนแล้วมันแสดงผลอย่างไรครับ :?:

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 9:31 pm
by tanusorn
ตอนผมรันไม่เป็นแบบนี้อ่าครับ เลยคิดว่าผมต้องผิดตรงไหนแน่เลย

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 9:39 pm
by snasui
:D ช่วยยกตัวอย่างวิธีการเลือกตำแหน่งไฟล์และวิธีการจัดเรียงของไฟล์ที่ได้จากการรันโปรแกรมมาด้วยครับ

เช่น เลือกไฟล์ 1, 3, 2 แต่โปรแกรมยังเรียงเป็น 1, 2, 3 เช่นนี้หรือไม่ หรือเรียงอย่างไรครับ

สำหรับคำว่า "อ่ะครับ" หรือ "อ่าครับ" ให้ใช้คำว่า "ครับ" แทนเพื่อให้เป็นไปตามกฎการใช้บอร์ดข้อ 1 ด้านบนครับ :roll:

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 10:19 pm
by tanusorn
สมมุติว่าผมมีไฟล์ ข้อมูล 1,2 แล้วอัน 3 ที่เป็นไฟล์ที่มีโค้ดอยู่ ผมต้องการดึงข้อมูลมารวมไว้ที่ไฟล์ 3 โดยตอนเลือกดึงเป็นลำดับ คือ1,2 แต่ผลที่ออกมาคือมันออกเป็น 2,1ครับ

Re: ผมใช้โค้ดของพี่รัน แต่ถ้าผมต้องการเลือกว่าต้องการให้ไฟล์ไหนขึ้นก่อนต้องทำอย่างไรหรอครับ

Posted: Thu Jun 20, 2019 10:49 pm
by snasui
:D โปรแกรมจะดึงไฟล์มาให้โดยเรียงจากบนลงล่างครับ

หากจะแก้ให้ทำงานได้ง่ายควรเปลี่ยนชื่อไฟล์ให้มีตัวเลขกำกับ กำหนดการเรียงไว้ใน Folder ตามต้องการ

ไม่เช่นนั้นก็เลือกวิธีการคีย์ชื่อไฟล์ และ Path ของไฟล์ไว้ในไฟล์โปรแกรมแล้วค่อย Loop ดึงมาตามลำดับที่กำหนดครับ