Page 1 of 1

อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Mon Nov 28, 2016 7:52 pm
by yangkodza

Code: Select all

Sub Macro1()
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "='[รายชื่อประถม.xlsx]ป.1-1'!R[1]C"
    Selection.AutoFill Destination:=Range("B2:E2"), Type:=xlFillDefault
    Range("B2:E2").Select
    Selection.AutoFill Destination:=Range("B2:E51")
    Range("B2:E51").Select
    Range("A1").Select
End Sub
จาก Code ข้างต้น โปรแกรมดึงข้อมูลมาได้ปกติ
แต่อยากจะปรับ Code ให้ว่า
ถ้าไม่เจอไฟล์ดังกล่าว ก็ไม่ต้องดึงข้อมูล
เพราะถ้าไม่เจอไฟล์ จะฟ้องหน้าต่างถามหาไฟล์เลยไม่อยากให้ถามครับ

รบกวนช่วยปรับ Code ให้หน่อยครับ
ดึงไฟล์.rar

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 6:07 pm
by snasui
:D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub Macro1()
    Range("B2").Select
    On Error Resume Next
    Set wb = Workbooks("รายชื่อประถม.xlsx")
    If Err <> 0 Then Exit Sub
    ActiveCell.FormulaR1C1 = "='[รายชื่อประถม.xlsx]ป.1-1'!R[1]C"
    Selection.AutoFill Destination:=Range("B2:E2"), Type:=xlFillDefault
    Range("B2:E2").Select
    Selection.AutoFill Destination:=Range("B2:E51")
    Range("B2:E51").Select
    Range("A1").Select
End Sub

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 6:40 pm
by yangkodza
snasui wrote::D ตัวอย่างการปรับ Code ตามด้านล่างครับ

Code: Select all

Sub Macro1()
    Range("B2").Select
    On Error Resume Next
    Set wb = Workbooks("รายชื่อประถม.xlsx")
    If Err <> 0 Then Exit Sub
    ActiveCell.FormulaR1C1 = "='[รายชื่อประถม.xlsx]ป.1-1'!R[1]C"
    Selection.AutoFill Destination:=Range("B2:E2"), Type:=xlFillDefault
    Range("B2:E2").Select
    Selection.AutoFill Destination:=Range("B2:E51")
    Range("B2:E51").Select
    Range("A1").Select
End Sub
อาจารย์ครับ ผมนำ Code ไปใช้ แต่ไม่มีการแสดงผลอะไรครับ
ในขณะที่ไฟล์ฐานข้อมูลยังอยู่ ไม่สามารถดึงข้อมูลได้ครับ

Code ที่ใช้ครับ

Code: Select all

Sub Macro3()
    Range("B2").Select
    On Error Resume Next
    Set wb = Workbooks("รายชื่อประถม.xlsx")
    If Err <> 0 Then Exit Sub
    ActiveCell.FormulaR1C1 = "='[รายชื่อประถม.xlsx]ป.1-1'!R[1]C"
    Selection.AutoFill Destination:=Range("B2:E2"), Type:=xlFillDefault
    Range("B2:E2").Select
    Selection.AutoFill Destination:=Range("B2:E51")
    Range("B2:E51").Select
    Range("A1").Select
End Sub

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 7:23 pm
by yangkodza
ทำได้แล้วครับอาจารย์
Code ที่อาจารย์ให้มาถูกต้องแล้ว
เป็นที่คอมผมเอง อาการเครื่องแปลกๆ
สงสัยได้เวลาลงวินโดวใหม่อีกแล้วครับ

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 7:38 pm
by yangkodza
อาจารย์ครับ รบกวนสอบถามเพิ่มเติมครับ
Code ที่ใช้อยู่จริงเราดึงข้อมูลมาจากหลายไฟล์
ดัง code แนบ

Code: Select all

Sub ดึงคะแนนเทอม1()
    Range("J2").Select      ' คะแนนสังคม เทอม1
    ActiveCell.FormulaR1C1 = "=[01_สังคมศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[32]"
    Selection.AutoFill Destination:=Range("j2:j51")
        Range("L2").Select      ' คะแนนสุขศึกษา เทอม1
    ActiveCell.FormulaR1C1 = "=[02_สุขศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[30]"
    Selection.AutoFill Destination:=Range("L2:L51")
            Range("M2").Select      ' คะแนนศิลปะ เทอม1
    ActiveCell.FormulaR1C1 = "=[03_ศิลปะ_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[29]"
    Selection.AutoFill Destination:=Range("M2:M51")
            Range("N2").Select      ' คะแนนศิลปะ เทอม1
    ActiveCell.FormulaR1C1 = "=[04_กอท_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[28]"
    Selection.AutoFill Destination:=Range("N2:N51")
            Range("O2").Select      ' คะแนนภาษาอังกฤษ เทอม1
    ActiveCell.FormulaR1C1 = "=[05_ภาษาอังกฤษ_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[27]"
    Selection.AutoFill Destination:=Range("O2:O51")
            Range("P2").Select      ' คะแนนคอมพิวเตอร์ เทอม1
    ActiveCell.FormulaR1C1 = "=[06_คอมพิวเตอร์_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[26]"
    Selection.AutoFill Destination:=Range("P2:P51")
            Range("Q2").Select      ' คะแนนภาษาอังกฤษเพื่อการสื่อสาร เทอม1
    ActiveCell.FormulaR1C1 = "=[07_ภาษาอังกฤษเพื่อการสื่อสาร_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[25]"
    Selection.AutoFill Destination:=Range("Q2:Q51")
            Range("R2").Select      ' คะแนนหน้าที่พลเมือง เทอม1
    ActiveCell.FormulaR1C1 = "=[08_หน้าที่พลเมือง_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[24]"
    Selection.AutoFill Destination:=Range("R2:R51")
    End Sub
Sub ดึงคะแนนเทอม2()
    Range("J2").Select      ' คะแนนสังคม เทอม2
    ActiveCell.FormulaR1C1 = "=[01_สังคมศึกษา_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[32]"
    Selection.AutoFill Destination:=Range("j2:j51")
        Range("L2").Select      ' คะแนนสุขศึกษา เทอม2
    ActiveCell.FormulaR1C1 = "=[02_สุขศึกษา_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[30]"
    Selection.AutoFill Destination:=Range("L2:L51")
            Range("M2").Select      ' คะแนนศิลปะ เทอม2
    ActiveCell.FormulaR1C1 = "=[03_ศิลปะ_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[29]"
    Selection.AutoFill Destination:=Range("M2:M51")
            Range("N2").Select      ' คะแนนศิลปะ เทอม2
    ActiveCell.FormulaR1C1 = "=[04_กอท_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[28]"
    Selection.AutoFill Destination:=Range("N2:N51")
            Range("O2").Select      ' คะแนนภาษาอังกฤษ เทอม2
    ActiveCell.FormulaR1C1 = "=[05_ภาษาอังกฤษ_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[27]"
    Selection.AutoFill Destination:=Range("O2:O51")
            Range("P2").Select      ' คะแนนคอมพิวเตอร์ เทอม2
    ActiveCell.FormulaR1C1 = "=[06_คอมพิวเตอร์_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[26]"
    Selection.AutoFill Destination:=Range("P2:P51")
            Range("Q2").Select      ' คะแนนภาษาอังกฤษเพื่อการสื่อสาร เทอม2
    ActiveCell.FormulaR1C1 = "=[07_ภาษาอังกฤษเพื่อการสื่อสาร_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[25]"
    Selection.AutoFill Destination:=Range("Q2:Q51")
            Range("R2").Select      ' คะแนนหน้าที่พลเมือง เทอม2
    ActiveCell.FormulaR1C1 = "=[08_หน้าที่พลเมือง_ป.1_เทอม2.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[24]"
    Selection.AutoFill Destination:=Range("R2:R51")
    End Sub
เราสามารถใช้

Code: Select all

 On Error Resume Next
    Set wb = Workbooks("รายชื่อประถม.xlsx")
    If Err <> 0 Then Exit Sub
แล้วแก้บบรรทัด

Code: Select all

Set wb = Workbooks("รายชื่อประถม.xlsx")
อย่างเดียว แล้วเพิ่มบรรทัดใช่ไหมครับ

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 8:20 pm
by snasui
:D ลองทำได้เลย ติดตรงไหนแล้วค่อยถามกันได้เรื่อย ๆ อย่าพยายามถามต่อโดยไม่ได้ลอง เพราะอาจจะรอคำตอบนานครับ :mrgreen:

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 8:32 pm
by yangkodza
snasui wrote::D ลองทำได้เลย ติดตรงไหนแล้วค่อยถามกันได้เรื่อย ๆ อย่าพยายามถามต่อโดยไม่ได้ลอง เพราะอาจจะรอคำตอบนานครับ :mrgreen:
ลองแล้วไม่รอดครับ ที่แรกก็ได้นะ แต่พอทำครบหมดกลายเป็นไม่ได้เฉย งงเลย

Code: Select all

Sub ดึงคะแนนเทอม1()

    Range("J2").Select      ' คะแนนสังคม เทอม1
    On Error Resume Next
    Set wb1 = Workbooks("01_สังคมศึกษา_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo สุขศึกษา
    ActiveCell.FormulaR1C1 = "=[01_สังคมศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[32]"
    Selection.AutoFill Destination:=Range("j2:j51")
    
สุขศึกษา:
        Range("L2").Select      ' คะแนนสุขศึกษา เทอม1
    On Error Resume Next
    Set wb2 = Workbooks("02_สุขศึกษา_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo ศิลปะ
    ActiveCell.FormulaR1C1 = "=[02_สุขศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[30]"
    Selection.AutoFill Destination:=Range("L2:L51")
    
ศิลปะ:
            Range("M2").Select      ' คะแนนศิลปะ เทอม1
    On Error Resume Next
    Set wb = Workbooks("03_ศิลปะ_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo กอท
    ActiveCell.FormulaR1C1 = "=[03_ศิลปะ_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[29]"
    Selection.AutoFill Destination:=Range("M2:M51")
    
กอท:
            Range("N2").Select      ' คะแนนกอท เทอม1
    On Error Resume Next
    Set wb = Workbooks("04_กอท_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo ภาษาอังกฤษ
    ActiveCell.FormulaR1C1 = "=[04_กอท_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[28]"
    Selection.AutoFill Destination:=Range("N2:N51")
    
ภาษาอังกฤษ:
            Range("O2").Select      ' คะแนนภาษาอังกฤษ เทอม1
    On Error Resume Next
    Set wb = Workbooks("05_ภาษาอังกฤษ_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo คอมพิวเตอร์
    ActiveCell.FormulaR1C1 = "=[05_ภาษาอังกฤษ_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[27]"
    Selection.AutoFill Destination:=Range("O2:O51")
    
คอมพิวเตอร์:
            Range("P2").Select      ' คะแนนคอมพิวเตอร์ เทอม1
    On Error Resume Next
    Set wb = Workbooks("06_คอมพิวเตอร์_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo ภาษาอังกฤษเพื่อการสื่อสาร
    ActiveCell.FormulaR1C1 = "=[06_คอมพิวเตอร์_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[26]"
    Selection.AutoFill Destination:=Range("P2:P51")
    
ภาษาอังกฤษเพื่อการสื่อสาร:
            Range("Q2").Select      ' คะแนนภาษาอังกฤษเพื่อการสื่อสาร เทอม1
    On Error Resume Next
    Set wb = Workbooks("07_ภาษาอังกฤษเพื่อการสื่อสาร_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo หน้าที่พลเมือง
    ActiveCell.FormulaR1C1 = "=[07_ภาษาอังกฤษเพื่อการสื่อสาร_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[25]"
    Selection.AutoFill Destination:=Range("Q2:Q51")
    
หน้าที่พลเมือง:
            Range("R2").Select      ' คะแนนหน้าที่พลเมือง เทอม1
    On Error Resume Next
    Set wb = Workbooks("08_หน้าที่พลเมือง_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo จบ
    ActiveCell.FormulaR1C1 = "=[08_หน้าที่พลเมือง_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[24]"
    Selection.AutoFill Destination:=Range("R2:R51")
จบ:
    End Sub
รบกวนอาจารย์ชี้แนะด้วยครับ

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 8:41 pm
by snasui
:D ลอง Run ทีละ Step โดยกดแป้น F8 ซ้ำ ๆ แล้วแจ้งมาว่าติดขัดที่บรรทัดใดครับ

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 8:49 pm
by yangkodza
snasui wrote::D ลอง Run ทีละ Step โดยกดแป้น F8 ซ้ำ ๆ แล้วแจ้งมาว่าติดขัดที่บรรทัดใดครับ
ผ่านหมดครับแต่กลายเป็นไม่ดึงคะแนน
ผมตั้งให้ว่า ถ้า ไม่เจอไฟล์ก็ให้กระโดดไป หาไฟล์ต่อไป
ผมเขียน code ถูกไหมครับ

ตอนนี้ code พอวิ่งไปถึง go to กระโดดไปเลย ยังไม่ทันจะดึงคะแนนเลยครับ
ทั้งๆที่ชื่อไฟล์ก็ถูกต้องครับผม

Code: Select all

Range("J2").Select      ' คะแนนสังคม เทอม1
    On Error Resume Next
    Set wb = Workbooks("01_สังคมศึกษา_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo สุขศึกษา
    ActiveCell.FormulaR1C1 = "=[01_สังคมศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[32]"
    Selection.AutoFill Destination:=Range("j2:j51")
    
สุขศึกษา:
        Range("L2").Select      ' คะแนนสุขศึกษา เทอม1
    On Error Resume Next
    Set wb = Workbooks("02_สุขศึกษา_ป.1_เทอม1.xls")
    If Err <> 0 Then GoTo ศิลปะ
    ActiveCell.FormulaR1C1 = "=[02_สุขศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[30]"
    Selection.AutoFill Destination:=Range("L2:L51")
เริ่มไปไม่รอดแล้วครับ :D

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Tue Nov 29, 2016 8:58 pm
by snasui
:D ตัวอย่างการปรับ Code ครับ

Code: Select all

'---Other code---
     Range("J2").Select      ' คะแนนสังคม เทอม1
    On Error Resume Next
    Set wb1 = Workbooks("01_สังคมศึกษา_ป.1_เทอม1.xls")
    If Err <> 0 Then
        Err.Clear
        GoTo สุขศึกษา
    End If
    ActiveCell.FormulaR1C1 = "=[01_สังคมศึกษา_ป.1_เทอม1.xls]ห้อง" & Right(Sheets("รายชื่อนักเรียน").Range("e3"), 1) & "!R[6]C[32]"
    Selection.AutoFill Destination:=Range("j2:j51")
    '---Other code---

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Wed Nov 30, 2016 7:57 am
by yangkodza
อาจารย์ครับ เท่าที่ผมทดสอบลองผิดลองถูก
ปัญหาที่เจอคือ ไฟล์ต้นทางที่เป็นไฟล์คะแนนครับ
ประมาณว่า ถ้าเราไม่เปิดไฟล์ต้นทาง สูตรจะไม่ทำงานครับ :sg:

ยังหาทางออกไม่ได้ครับ รบกวนชี้แนะด้วยครับ

Re: อยากยกเลิกหน้าต่างเวลาดึงไฟล์แล้วไม่พบไฟล์ข้อมูล

Posted: Wed Nov 30, 2016 7:47 pm
by snasui
:D ก็ต้องเปิดไฟล์ต้นทางเสียก่อนครับ หรือหากจะทำงานกับไฟล์ไหนก็ให้เปิดไฟล์นั้นไว้ก่อน หรือจะเปิดด้วย Code ก็ย่อมได้ครับ