Page 1 of 1

ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Tue Jan 10, 2017 4:06 pm
by shikamaru
เนื่องจากผมต้องรันไฟล์ Excel มาทุกวัน ชื่อ Sheet ในไฟล์จะรันชื่อ ตามวัน เช่น Ex_0801, Ex_0901, Ex1001 ซึ่งผมจะต้องทำการรวมไฟล์
และลบ sheet ที่ไม่เกี่ยวข้องออก เลยใช้ Macro ในการลบ แต่ Macro จะจำชื่อ sheet ที่บันทึกในครั้งแรกไว้ ผมต้องการให้ลบได้ทุก sheet ต้องแก้ไขตรงไหนบ้างครับ

Code: Select all

Sub Delete_Sheet()

Application.DisplayAlerts = False

' Delete_Sheet Macro

    Dim strThisbook As Variant
    
strThisbook = Application.GetOpenFilename(Filefilter:= _
            "All File (*.*), *.*", Title:="Please select source file(s).", MultiSelect:=True)

    Sheets(Array("Ex_0801", "Ex_0901")). _
        Select
        
    Sheets("Ex_0901").Activate
    
    ActiveWindow.SelectedSheets.Delete
    ActiveWorkbook.Save
    ActiveWindow.Close
    
End Sub


Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Tue Jan 10, 2017 5:46 pm
by snasui
:D แนบไฟล์ตัวอย่างมาด้วยจะได้สะดวกในการทดสอบครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Tue Jan 10, 2017 6:56 pm
by shikamaru
อาจารย์ครับ ผมแนบไฟล์มาให้แล้วครับ แต่เกิดปัญหา หลังจาก สร้าง Macro เสร็จแล้ว ปิดไฟล์ Macro Delete ไป
แล้วเปิดไฟล์ Macro Delete ใหม่ กดปุ่ม Delete sheet แล้วเกิด Error run-time '9' : Subscript Out of rang ครับ
ผมต้องแก้ไขอย่างไรครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Tue Jan 10, 2017 8:59 pm
by snasui
:D ไฟล์ที่จะแนบ Macro ได้จะต้อง Save As เป็นนามสกุล .xlsm เป็นอย่างน้อย ลองแนบไฟล์มาใหม่ครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Wed Jan 11, 2017 10:03 am
by shikamaru
อาจารย์ครับ ผมแก้ไขตามที่อาจารย์ได้ให้แก้แล้วนะครับ แต่พอรัน Macro ก็ขึ้น Error Run time 9 ครับ
ผมแนบไฟล์มาให้ใหม่แล้วครับ อันนี้เกิดจากการที่ผมเปลี่ยนชื่อ sheet ด้วยหรือเปล่าครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Wed Jan 11, 2017 10:03 am
by shikamaru
แนบไฟล์เพิ่มเติมครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Wed Jan 11, 2017 4:54 pm
by snasui
:D ไม่พบ Code ในไฟล์ MacroDelete.xlsm ครับ

การแนบ Macro มาในไฟล์ให้กดแป้น Alt+F11 เพื่อเปิดหน้าต่าง VBE > เข้าเมนู Insert > Module แล้ววาง Code ใน Module ครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Wed Jan 11, 2017 5:08 pm
by shikamaru
ผมนำ Code ไปวางใน Module ตามที่อาจารย์บอกแล้วครับ ก็ยังใช้งานไม่ได้ครับ Error เหมือนเดิมครับ

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Wed Jan 11, 2017 5:35 pm
by snasui
:D ตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Sub Delete_Sheet()

Application.DisplayAlerts = False

' Delete_Sheet Macro

    Dim strThisbook As Variant
    
    strThisbook = Application.GetOpenFilename(Filefilter:= _
            "All File (*.*), *.*", Title:="Please select source file(s).", MultiSelect:=True)

    If TypeName(strThisbook) = "Boolean" Then
        Exit Sub
    End If
    
    For i = 1 To UBound(strThisbook)
        Workbooks.Open (strThisbook(i))
        Sheets(Array("Ex_0801", "Ex_0901")). _
            Select
            
        Sheets("Ex_0901").Activate
        
        ActiveWindow.SelectedSheets.Delete
        ActiveWorkbook.Save
        ActiveWindow.Close
    
    Next i
End Sub

Re: ใช้ macro ทำการลบ sheet ในไฟล์อื่น ขอแนวทางหน่อยครับ

Posted: Thu Jan 12, 2017 8:52 am
by shikamaru
:thup: :cp: :D
ขอบคุณมาครับอาจารย์ ใช้งานได้แล้วครับ