Page 1 of 1

มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Thu Jan 13, 2011 7:10 pm
by widtara
คือว่าอ้อยมีงานที่ต้องออก report ค่ะ ในไฟล์ 1 จะมี 50 sheet ขึ้น และต้องคลิกขวา ที่ sheet และเลือก move or copy และเลือก new book เพื่อแยก ไปเป็น ไฟล์ใหม่ จะต้องทำตลอดและทำทุก sheet รบกวนถามอาจารย์ว่า มีวิธีที่ แยก sheet เป็น ไฟล์ใหม่ได้ครั้งเยอะๆไหมค่ะ คือว่าปวดมือนะค่ะ ต้องนะแยก sheet ใหม่ และเป็นงานประจำด้วยค่ะ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Thu Jan 13, 2011 7:59 pm
by snasui
:D สามารถทำได้ด้วย VBA ครับ

ผมเขียน Code มาเป็นตัวอย่างให้ตามด้านล่าง

Code: Select all

Sub Macro1()
Dim i As Integer
For i = 1 To Workbooks("Separate.xlsm").Worksheets.Count
    Workbooks("Separate.xlsm").Worksheets(i).Copy
Next i
End Sub
โดยมีวิธีการดังนี้ครับ
1. Save File เป็น .xlsm
2. กดแป้น Alt+F11 เพื่อเปิดหน้าต่าง VBE
3. คลิกเมนู Insert > Module > Copy Code ด้านบนไปวาง
4. เปลี่ยน Separate.xlsm ให้เป็นชื่อไฟล์จริงที่กำลังทำงานในปัจจุบัน > Save
5. กดแป้น Alt+Q เพื่อกับไปยัง Excel

การใช้งานให้กดแป้น Alt+F8 แ้ล้วเลือก Macro1 > Run โปรแกรมจะสร้างไฟลมาใหม่ตามชีทที่มีอยู่ให้ครับ

ดูไฟล์ตัวอย่างในไฟล์แนบครับ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 2:25 pm
by widtara
:sg: ทำไม่ได้ค่ะ

Sub Macro1()
Dim i As Integer
For i = 1 To Workbooks("Separate.xlsm").Worksheets.Count
Workbooks("Separate.xlsm").Worksheets(i).Copy
Next i
End Sub

...............
อ้อยเปลี่ยน "Separate.xlsm" เป็น "RJL.xlsm" แล้วก็กด Alt+f8 แ้ล้วเลือก Macro1 > Run โปรแกรมไม่เห็นจะสร้างไฟลมาใหม่ตามชีทที่มีอยู่ให้เลยค่ะ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 2:41 pm
by widtara
การบันทึกเป็น 2003 ทำได้แล้วค่ะ เลือกแต่การแยกไฟล์คือทำไม่ได้ ยัง งง อยู่ค่ะ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 4:50 pm
by snasui
:D ได้กำหนดให้ใช้ Macro ได้แล้วยังครับ

2007 ทำตามนี้ครับ

1. คลิก Office Logo
2. คลิก Excel Options
3. เลือก Trust Center > Trust Center Setting
4. Macro Settings > เืลือกเป็น Enable all macro...

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 6:20 pm
by kmb
ถ้าเป็นกรณีตรงข้ามล่ะครับ คือมีหลาย worksheet ซึ่งอยู่คนละไฟล์ ต้องการนำมารวมไว้ในไฟล์เดียว VBA จะยุ่งยากกว่านี้มากไหมครับ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 6:27 pm
by snasui
:D ยุ่งยากกว่าแน่นอนครับ เพราะต้อง Loop ทีละไฟล์ว่ามีกี่ชีท นำแต่ละชีทในแต่ละไฟล์มาวางในไฟล์เป้าหมาย :mrgreen:

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 8:28 pm
by kmb
พอมี VBA สำหรับกรณีนี้ไว้แล้วไหมครับ จะได้ลองศึกษาดู

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 9:44 pm
by snasui

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Fri Jan 14, 2011 10:20 pm
by kmb
ขอบคุณมากครับ จะลองศึกษาดูครับ

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Sat Jan 15, 2011 10:40 am
by widtara
ตอนนี้ตั้งค่าเป็น Disable all macros with notification ค่ะ

จากตัวเลือกทั้งหมด
Disable all macros without notification
Disable all macros with notification
Disable all macros except diqitally signed macros
Enable all macros (not recommended; potentially dangerous code can run)

:sg:

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Sat Jan 15, 2011 10:58 am
by widtara
เย้ๆๆๆๆๆๆๆๆ ทำได้แล้วค่ะ ถูกใจมากเลย หุหุ ตอนแรกที่ทำไม่ได้คืออ้อยเอาไฟล์ที่พี่ทำให้มาไม่รู้ยังงัยมันไม่ได้สักกะที ก็เอา save ใหม่ทำใหม่คราวนี้ได้เลยค่ะ ขอบคุณมานะค่ะ ไม่นั่งจำ code vba ก่อนว่าเขียนยังงัย เมื่อกี้ copy อย่างนี้ค่ะ ขอบคุณมากๆนะค่ะ :lol:

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Sat Jan 15, 2011 10:58 am
by snasui
:lol:
widtara wrote:ตอนนี้ตั้งค่าเป็น Disable all macros with notification ค่ะ

จากตัวเลือกทั้งหมด
Disable all macros without notification
Disable all macros with notification
Disable all macros except diqitally signed macros
Enable all macros (not recommended; potentially dangerous code can run)

:sg:
นั่นแสดงว่าไม่ได้ตั้งค่าให้ยอมรับการใช้งาน Macro ครับ จึงทำให้ Code ไม่สามารถทำงานได้ เมื่อ Code ทำงานไม่ได้ คุณคลิก Run แล้วก็จะไม่ได้คำตอบตามทีต้องการ ผมจึงได้บอกให้กำหนดตามด้านล่าง ถึงจะมีโอกาสได้คำตอบตามที่ต้องการครับ :D
snasui wrote::D ได้กำหนดให้ใช้ Macro ได้แล้วยังครับ

2007 ทำตามนี้ครับ

1. คลิก Office Logo
2. คลิก Excel Options
3. เลือก Trust Center > Trust Center Setting
4. Macro Settings > เืลือกเป็น Enable all macro...

Re: มีวิธีแยก sheet ได้ครั้งเดียวทีละมากไหมค่ะ

Posted: Sat Jan 15, 2011 11:00 am
by snasui
widtara wrote:เย้ๆๆๆๆๆๆๆๆ ทำได้แล้วค่ะ ถูกใจมากเลย หุหุ ตอนแรกที่ทำไม่ได้คืออ้อยเอาไฟล์ที่พี่ทำให้มาไม่รู้ยังงัยมันไม่ได้สักกะที ก็เอา save ใหม่ทำใหม่คราวนี้ได้เลยค่ะ ขอบคุณมานะค่ะ ไม่นั่งจำ code vba ก่อนว่าเขียนยังงัย เมื่อกี้ copy อย่างนี้ค่ะ ขอบคุณมากๆนะค่ะ :lol:
:lol: :D ดีใจด้วยครับ :P