Page 1 of 1

ขอความช่วยเหลือในเรื่องการใช้ VBA เลือกเฉพาะไฟล์นั้นๆ เพื่อนำมารวบรวมข้อมูลต่อ

Posted: Tue Feb 08, 2022 11:00 pm
by clearwipe01
01. Check error data Consolidation - Jan' 22.xlsm
สวัสดี พี่ๆทุกท่านครับ
ผมขอรบกวนสอบถามพี่ๆทุกท่านหน่อยครับ
พอดีผมลองทำเขียน VBA ที่ให้สามารถเลือกไฟล์ในเครื่องได้โดยเลือกแบบเป็นไฟล์ Excel.xlsx
แล้วอยากให้เลือกแค่ไฟล์นั้น(ที่ต้องใช้)จากโฟลเดอร์ที่มีหลายไฟล์ Excel รวมกัน
แต่ผมเขียนโค้ดให้มันอ่าน(ก็อปปี้)เฉพาะไฟล์นั้นและรวบรวมไฟล์นั้นไม่เป็นครับ
จึงอยากขอความช่วยเหลือพี่ๆทุกท่านหน่อยครับ
ขอบคุณครับ

Code: Select all

Sub GetSheets()
' Collect Sheets by browse folder directory
Dim Get_Path As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    With Application.FileDialog(msoFileDialogFilePicker)
     Clicked = .Show
        If Clicked = 0 Then 'The Cancel button or the X is clicked.
            Exit Sub
        ElseIf Clicked <> 0 Then ' if OK is pressed
            Get_Path = .SelectedItems(1) & "\"
        End If
Path = Get_File
End With
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Re: ขอความช่วยเหลือในเรื่องการใช้ VBA เลือกเฉพาะไฟล์นั้นๆ เพื่อนำมารวบรวมข้อมูลต่อ

Posted: Wed Feb 09, 2022 8:35 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub GetSheets()
    ' Collect Sheets by browse folder directory
    Dim Get_Path As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '    With Application.FileDialog(msoFileDialogFilePicker)
    '     Clicked = .Show
    '        If Clicked = 0 Then 'The Cancel button or the X is clicked.
    '            Exit Sub
    '        ElseIf Clicked <> 0 Then ' if OK is pressed
    '            Get_Path = .SelectedItems(1) & "\"
    '        End If
    'Path = Get_File
    'End With
    'Filename = Dir(Path & "*.xlsx")
    'Do While Filename <> ""
    Get_Path = Application.GetOpenFilename("Excel file(*.xls*),*.xls*")
    If Get_Path = "False" Then Exit Sub
    Workbooks.Open Filename:=Get_Path, ReadOnly:=True
    For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Copy After:=ThisWorkbook.Sheets(1)
    Next Sheet
    Workbooks(VBA.Split(Get_Path, "\")(UBound(VBA.Split(Get_Path, "\")))).Close
    'Filename = Dir()
    'Loop
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Re: ขอความช่วยเหลือในเรื่องการใช้ VBA เลือกเฉพาะไฟล์นั้นๆ เพื่อนำมารวบรวมข้อมูลต่อ

Posted: Wed Feb 09, 2022 3:04 pm
by clearwipe01
ขอบพระคุณอย่างสูงครับ อาจารย์ ใช้งานได้ตามแบบที่ต้องการเลยครับ
ขอบคุณครับ
snasui wrote: Wed Feb 09, 2022 8:35 am :D ตัวอย่างการปรับ Code ครับ

Code: Select all

Sub GetSheets()
    ' Collect Sheets by browse folder directory
    Dim Get_Path As String
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '    With Application.FileDialog(msoFileDialogFilePicker)
    '     Clicked = .Show
    '        If Clicked = 0 Then 'The Cancel button or the X is clicked.
    '            Exit Sub
    '        ElseIf Clicked <> 0 Then ' if OK is pressed
    '            Get_Path = .SelectedItems(1) & "\"
    '        End If
    'Path = Get_File
    'End With
    'Filename = Dir(Path & "*.xlsx")
    'Do While Filename <> ""
    Get_Path = Application.GetOpenFilename("Excel file(*.xls*),*.xls*")
    If Get_Path = "False" Then Exit Sub
    Workbooks.Open Filename:=Get_Path, ReadOnly:=True
    For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Copy After:=ThisWorkbook.Sheets(1)
    Next Sheet
    Workbooks(VBA.Split(Get_Path, "\")(UBound(VBA.Split(Get_Path, "\")))).Close
    'Filename = Dir()
    'Loop
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub