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
แนบไฟล์ตัวอย่างมาด้วยจะได้สะดวกในการทดสอบครับ
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
ไฟล์ที่จะแนบ 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
ไม่พบ 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
ตัวอย่าง 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