Page 1 of 1

อยากนำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือ3ครับอาจารย์

Posted: Sat Apr 09, 2022 4:47 pm
by ballkoong
:?: อยากให้นำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือsheet3 ต้องทำอย่างไรครับอาจารย์

Code: Select all

Sub CollectData()
Dim wb As Workbook, s As Worksheet, db As Worksheet  '
Dim StrPath As Variant, i As Integer, f As Byte
StrPath = Application.GetOpenFilename(FileFilter:="Excel File (*.xls*),*.xls*", _
   MultiSelect:=True) 'StrPath คือ Excel
   
If TypeName(StrPath) = "Boolean" Then Exit Sub   'ถ้าไม่เลือกให้ออก
Set db = ThisWorkbook.Sheets(1)  'db คือ workbook
db.UsedRange.ClearContents  'เคลียร์ค่าเก่าออก
Application.ScreenUpdating = False  'ไม่ให้หน้าจอมีวูปวาบ
For i = 1 To UBound(StrPath)  '
    Set wb = Workbooks.Open(StrPath(i))
    For Each s In wb.Worksheets
    f = IIf(db.Range("a1").Value = "", 0, 1)  'ถ้านำข้อมูลมาวางแล้วไม่ต้องเอาหัวคอลัม ถ้ายังไม่มีให้เอาหัวมาด้วย
     If s.Range("a1").Value <> "" Then    'ถ้าเอ1ไม่เท่ากับค่าว่าง
        s.UsedRange.Offset(f, 0).Copy    'ให้คัดลอกมาวาง
      With db   'วางที่sheet1
          .Range("a" & .Rows.Count).End(xlUp).Offset(f, 0) _
            .PasteSpecial xlPasteValues
             End With

End If
   Next s
    wb.Close False
   Application.CutCopyMode = False
Next i
    Application.ScreenUpdating = True   'คือค่าเก่าต่อจากที่วูปวาป
   MsgBox "Finished.", vbInformation  'เสร็จแล้วเเจ้งข้อความ

 End Sub

Re: อยากนำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือ3ครับอาจารย์

Posted: Mon Apr 11, 2022 8:30 am
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'Other code
Set wb = Workbooks.Open(StrPath(i))
For Each s In wb.Worksheets
    if s.name <> "Sheet1" then
        f = IIf(db.Range("a1").Value = "", 0, 1)  'ถ้านำข้อมูลมาวางแล้วไม่ต้องเอาหัวคอลัม ถ้ายังไม่มีให้เอาหัวมาด้วย
        If s.Range("a1").Value <> "" Then    'ถ้าเอ1ไม่เท่ากับค่าว่าง
            s.UsedRange.Offset(f, 0).Copy    'ให้คัดลอกมาวาง
            With db   'วางที่sheet1
                .Range("a" & .Rows.Count).End(xlUp).Offset(f, 0) _
                .PasteSpecial xlPasteValues
            End With
        End If
    end if
Next s
'Other code

Re: อยากนำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือ3ครับอาจารย์

Posted: Mon Apr 18, 2022 8:28 am
by ballkoong
ขอโทษครับ อาจารย์ ผมนำไป Run แล้ว ติด Error นี้ครับ

Re: อยากนำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือ3ครับอาจารย์

Posted: Mon Apr 18, 2022 11:27 am
by puriwutpokin
ประกาศตัวแปรที่เดิม มีด้วยครับ เช่นตัวนี้

Code: Select all

Dim StrPath As Variant

Re: อยากนำข้อมูลจากไฟล์อื่นแต่ไม่ให้ดึงจากSheetที่1แต่อยากให้ดึงจากsheet2หรือ3ครับอาจารย์

Posted: Tue Apr 19, 2022 7:19 am
by snasui
ballkoong wrote: Mon Apr 18, 2022 8:28 am ขอโทษครับ อาจารย์ ผมนำไป Run แล้ว ติด Error นี้ครับ
:D ที่ผมตอบไปนั้นเป็นเพียงส่วนสำคัญที่ต้องปรับ คำว่า 'Other code คือ Code ที่มีอยู่เดิมที่ต้องใช้ประกอบกัน ดูที่คุณ puriwutpokin แนะนำเพิ่มเติมเพื่อประกอบความเข้าใจด้วยครับ
puriwutpokin wrote: Mon Apr 18, 2022 11:27 am ประกาศตัวแปรที่เดิม มีด้วยครับ เช่นตัวนี้

Code: Select all

Dim StrPath As Variant