Page 1 of 1
รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Mon Jul 03, 2017 11:27 am
by humnoy12
อยากจะรวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกันครับ ซึ่งบางไฟล์มีหลาย sheet ด้วยกันจะเพิ่มเติม code ยังไงดีครับช่วยแนะนำหน่อยครับ
พึ่งเริ่มต้นเขียน vba ครับ
Code: Select all
Sub Copy()
Dim wb As Workbook
Dim ws As Worksheet
Set ws = ActiveSheet
Set wb = Workbooks.Open(Application.GetOpenFilename)
wb.Worksheets(1).Cells.Copy
ws.Range("A1").PasteSpecial
wb.Close
End Sub
Re: รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Mon Jul 03, 2017 7:56 pm
by snasui

ตัวอย่างการปรับ Code ครับ
Code: Select all
Sub Copy()
Dim wb As Workbook
Dim ws As Worksheet
Dim wk As Worksheet
Set ws = ActiveSheet
Set wb = Workbooks.Open(Application.GetOpenFilename)
For Each wk In wb.Worksheets
wk.UsedRange.Copy ws.Range("a" & ws.Rows.Count).End(xlUp).Offset(1, 0)
Next wk
wb.Close
End Sub
Re: รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Mon Jul 03, 2017 9:02 pm
by humnoy12
ขอบคุณครับอาจารย์ ตรงกับความต้องการครับ แต่อยากจะเพิ่มเติมว่าให้แยกเป็น sheet ของใครของมันไม่ต้องมารวมไว้ที่ sheet เดียวครับ
อย่างเช่นในภาพ
Re: รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Mon Jul 03, 2017 10:23 pm
by snasui

ลองปรับ Code มาเองก่อน ติดตรงไหนค่อยถามกันต่อ ในการสอบถามปัญหาควรแนบไฟล์ประกอบจะได้สะดวกในการตอบครับ
Re: รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Tue Jul 04, 2017 11:37 am
by humnoy12
ลองปรับ code ดูแล้วตอนนี้มาแค่ Sheet เดียวครับ ควรจะเพิ่มเติมตรงไหนดีครับ อยากจะให้ Sheet ในไฟล์ทั้งหมดมาอยู่ในอีก ไฟล์นึงครับ
Code: Select all
Sub OpenFileCopy()
Dim wb1 As Workbook
Dim wb2 As Workbook
Set wb1 = ActiveWorkbook
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Report to Parse", _
FileFilter:="Report Files *.xlsx (*.xlsx),")
If FileToOpen = False Then
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
If Sheet.Visible = True Then
Sheet.Copy After:=wb1.Sheets(wb1.Sheets.Count)
wb2.Close
End If
Next Sheet
End If
End Sub
Re: รวม sheet จากไฟล์อื่นๆมาไว้ในไฟล์เดียวกัน VBA
Posted: Tue Jul 04, 2017 12:07 pm
by humnoy12
ตอนนี้ลองปรับแก้แล้ว ได้ตามที่ต้องการแล้วครับ
Code: Select all
Sub OpenFileCopy()
Dim wb1 As Workbook
Dim wb2 As Workbook
Set wb1 = ActiveWorkbook
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Report to Parse", _
FileFilter:="Report Files *.xlsx (*.xlsx),")
If FileToOpen = False Then
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
If Sheet.Visible = True Then
Sheet.Copy after:=wb1.Sheets(wb1.Sheets.Count)
End If
Next Sheet
wb2.Close
End If
End Sub