วิธีทำซ้ำแผ่นงานใน Excel ด้วย VBA

  • แบ่งปันสิ่งนี้
Michael Brown

สารบัญ

บทช่วยสอนมีชุดของมาโครเพื่อทำสำเนาแผ่นงานใน Excel: คัดลอกและเปลี่ยนชื่อตามค่าเซลล์ คัดลอกแผ่นงานหลายแผ่น คัดลอกแผ่นงานที่ใช้งานไปยังไฟล์อื่นโดยไม่ต้องเปิด และอื่นๆ อีกมากมาย

การคัดลอกแผ่นงานด้วยตนเองใน Excel ค่อนข้างรวดเร็วและตรงไปตรงมา... หากทำเพียงครั้งเดียวหรือสองครั้ง การทำสำเนาหลายแผ่นหลายครั้งเป็นเรื่องน่าเบื่อและเสียเวลา ในหน้านี้ คุณจะพบมาโครที่มีประโยชน์จำนวนหนึ่งเพื่อทำให้งานนี้เป็นไปโดยอัตโนมัติ

    Excel VBA เพื่อคัดลอกแผ่นงานไปยังสมุดงานใหม่

    มาโครบรรทัดเดียวที่ง่ายที่สุดนี้ทำ ตรงตามชื่อของมันทุกประการ - คัดลอกแผ่นงานที่ใช้งานไปยังสมุดงานใหม่

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    คัดลอกแผ่นงานหลายแผ่นใน Excel ด้วย VBA

    หากคุณต้องการ คัดลอกแผ่นงานหลายแผ่นจากสมุดงานที่ใช้งานไปยังแผ่นงานใหม่ เลือกแผ่นงานทั้งหมดที่สนใจและเรียกใช้มาโครนี้:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA เพื่อคัดลอกแผ่นงานไปยังสมุดงานอื่น

    ขึ้นอยู่กับตำแหน่งที่คุณต้องการแทรกแผ่นงานที่คัดลอก ใช้หนึ่งในมาโครต่อไปนี้

    คัดลอกแผ่นงานไปที่จุดเริ่มต้นของสมุดงานอื่น

    มาโครนี้จะคัดลอกแผ่นงานที่ใช้งานอยู่ก่อนหน้า เวิร์กชีตอื่นๆ ทั้งหมดในไฟล์ปลายทาง Book1 ในตัวอย่างนี้ หากต้องการคัดลอกไปยังไฟล์อื่น ให้แทนที่ "Book1.xlsx" ด้วยชื่อเต็มของสมุดงานเป้าหมายของคุณ

    Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    คัดลอกแผ่นงานไปที่ส่วนท้ายของสมุดงานอื่น

    รหัสชิ้นนี้ทำซ้ำแผ่นงานที่ใช้งานอยู่และ วางสำเนาไว้ท้าย Book1 อีกครั้ง โปรดอย่าลืมแทนที่ "Book1.xlsx" ด้วยชื่อสมุดงานปลายทางของคุณ

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx " ).Worksheets.Count) จบย่อย

    หมายเหตุ. เพื่อให้มาโครทำงานได้ ต้องบันทึกสมุดงานเป้าหมายไว้ในฮาร์ดไดรฟ์หรือเครือข่ายของคุณ

    คัดลอกแผ่นงานไปยังสมุดงานที่เลือก

    เพื่อให้สามารถคัดลอกแผ่นงานปัจจุบันไปยังสมุดงานที่เปิดอยู่ คุณสามารถสร้าง UserForm (ชื่อ UserForm1 ) ด้วยตัวควบคุม ListBox ( ชื่อ ListBox1 ) และปุ่มสองปุ่ม:

    <3

    ถัดไป คลิกสองครั้งที่ฟอร์มและวางโค้ดด้านล่างในหน้าต่างโค้ด:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub ส่วนตัวย่อย CommandButton1_Click() ถ้า ListBox1.ListIndex > -1 จากนั้น SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    ด้วย UserForm คุณสามารถใช้หนึ่งในรายการต่อไปนี้ มาโครเพื่อคัดลอกไฟล์แผ่นงานที่ใช้งานไปยังสมุดงานที่คุณเลือก

    คัดลอกแผ่นงานไปยัง จุดเริ่มต้นของสมุดงานที่เลือก :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) จากนั้น activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    คัดลอกแผ่นงานไปที่ สิ้นสุดสมุดงานที่เลือก :

    Public Sub CopySheetToEndAnotherWorkbook() โหลด UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) จากนั้น activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook) _ Worksheets.Count) สิ้นสุดหากยกเลิกการโหลด UserForm1 End Sub

    เมื่อทำงานใน Excel มาโครจะแสดงรายการสมุดงานที่เปิดอยู่ทั้งหมด คุณเลือกที่ต้องการแล้วคลิกตกลง:

    มาโคร Excel เพื่อคัดลอกแผ่นงานและเปลี่ยนชื่อ

    เมื่อคุณคัดลอกแผ่นงานใน Excel แบบจำลองจะได้รับ ชื่อในรูปแบบเริ่มต้น เช่น Sheet1 (2) มาโครต่อไปนี้ช่วยให้คุณหมดปัญหาในการเปลี่ยนชื่อเริ่มต้นด้วยตนเอง

    รหัสนี้จำลองแผ่นงานที่ใช้งานอยู่ ตั้งชื่อสำเนาเป็น "แผ่นทดสอบ" (คุณสามารถแทนที่ด้วยชื่ออื่นที่คุณต้องการได้) และวางแผ่นงานที่คัดลอกไว้ท้ายสมุดงานปัจจุบัน

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name ="Test Sheet" End Sub

    เพื่อให้ผู้ใช้ ระบุชื่อสำหรับแผ่นงานที่คัดลอก ให้ใช้รหัสนี้:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "ป้อนชื่อสำหรับเวิร์กชีทที่คัดลอก" ) ถ้า newName "" จากนั้น activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    เมื่อทำงาน มาโคร แสดงช่องป้อนข้อมูลต่อไปนี้ ซึ่งคุณพิมพ์ชื่อที่ต้องการแล้วกดตกลง:

    มาโคร Excel เพื่อคัดลอกแผ่นงานและเปลี่ยนชื่อตามค่าเซลล์

    ใน ในบางสถานการณ์ การตั้งชื่อสำเนาด้วยค่าเซลล์เฉพาะอาจสะดวกกว่า เช่น ส่วนหัวของคอลัมน์ สำหรับสิ่งนี้ คุณเพียงใช้โค้ดด้านบนและระบุค่าของ เซลล์ที่เลือกในปัจจุบัน ไปยังกล่องอินพุตโดยอัตโนมัติ เช่นเดียวกับตัวอย่างก่อนหน้านี้ สำเนาจะถูกวางไว้ที่ส่วนท้ายของสมุดงานที่ใช้งานอยู่

    ส่วนที่ยุ่งยากที่สุดคือให้ผู้ใช้ของคุณเลือกเซลล์ที่ถูกต้องเสมอก่อนที่จะเรียกใช้ แมโคร :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet", "Copy worksheet", ActiveCell.Value) ถ้า newName "" แล้วก็ activeSheet Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    อีกทางหนึ่ง คุณสามารถ ฮาร์ดโค้ดที่อยู่ของเซลล์ ที่ควรจะตั้งชื่อสำเนา เซลล์ A1 ในรหัสด้านล่าง หากต้องการตั้งชื่อเวิร์กชีตที่คัดลอกตามเซลล์อื่น ให้แทนที่ A1 ด้วยการอ้างอิงเซลล์ที่เหมาะสม

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range ( "A1" ).Value "" จากนั้นเมื่อเกิดข้อผิดพลาด Resume Next activeSheet.Name = wks.Range( "A1" ).Value End ถ้า wks.Activate End Sub

    มาโครเพื่อคัดลอกแผ่นงานไปยังสมุดงานปิด

    แมโครนี้คัดลอกแผ่นงานที่ใช้งานอยู่ไปยังส่วนท้ายของสมุดงานที่ปิด รหัสไม่ได้ระบุชื่อสมุดงานอื่น - มาโครจะเปิดหน้าต่าง Windows Explorer มาตรฐานและให้คุณเลือกไฟล์ปลายทางใดก็ได้:

    หลังจากเลือกไฟล์แล้ว และคลิก เปิด มาโครจะคัดลอกแผ่นงานที่ใช้งานอยู่และปิดสมุดงานเป้าหมายโดยอัตโนมัติ

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel ไฟล์ (*.xlsx), *.xlsx" ) หากชื่อไฟล์เป็นเท็จ จากนั้น Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks เปิด (ชื่อไฟล์) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook ปิด ( True ) Application.ScreenUpdating = True End ถ้า End Sub

    Excel VBA เพื่อคัดลอกแผ่นงานจากสมุดงานอื่นโดยไม่ต้องกำลังเปิด

    มาโครนี้ทำให้คุณสามารถคัดลอกแผ่นงานจากไฟล์ Excel อื่นโดยไม่ต้องเปิด แผ่นงานที่คัดลอกจะถูกแทรกที่ส่วนท้ายของสมุดงานปัจจุบัน

    อย่าลืมเปลี่ยนโค้ดสองสามครั้ง:

    • C:\Users\XXX\Documents\ Target_Book.xlsx ควรเปลี่ยนเป็นเส้นทางจริงและชื่อของสมุดงานที่คุณต้องการคัดลอกแผ่นงาน
    • ควรแทนที่แผ่นงาน 1 ด้วยชื่อของแผ่นงานที่คุณต้องการคัดลอก
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. เปิด ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook ปิด Application.ScreenUpdating = True End Sub

    Excel VBA เพื่อทำซ้ำแผ่นงานหลายครั้ง

    บางครั้ง คุณอาจต้องทำซ้ำแผ่นงานเดียวกันมากกว่าหนึ่งครั้ง เช่น เพื่อทดสอบสูตรต่างๆ ในชุดข้อมูลเดียวกัน ซึ่งสามารถทำได้ง่ายๆ ด้วยมาโครต่อไปนี้

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "คุณต้องการทำสำเนาแผ่นงานที่ใช้งานอยู่กี่ชุด" ) ถ้า n > = 1 จากนั้น สำหรับจำนวนครั้ง = 1 ถึง n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End ถ้า End Sub

    เปิดแผ่นงานต้นฉบับ เรียกใช้แมโคร ระบุจำนวนสำเนาของแผ่นงานที่ใช้งานอยู่ที่คุณต้องการสร้าง และคลิก ตกลง :

    วิธีคัดลอกแผ่นงานใน Excel ด้วย VBA

    วิธีคัดลอกแผ่นงานใน Excel ด้วยหนึ่งในมาโครข้างต้น คุณสามารถแทรกรหัส VBA ลงในหนังสือของคุณเองหรือเรียกใช้มาโครจากสมุดงานตัวอย่างของเรา

    วิธีเพิ่มมาโครในสมุดงานของคุณ

    วิธีแทรก รหัสในสมุดงานของคุณ ทำตามขั้นตอนเหล่านี้:

    1. เปิดแผ่นงานที่คุณต้องการคัดลอก
    2. กด Alt + F11 เพื่อเปิด Visual Basic Editor
    3. เปิด บานหน้าต่างด้านซ้าย คลิกขวา ThisWorkbook แล้วคลิก แทรก > โมดูล .
    4. วางโค้ดในหน้าต่างโค้ด
    5. กด F5 เพื่อเรียกใช้แมโคร

    สำหรับคำแนะนำทีละขั้นตอนโดยละเอียด โปรดดูวิธีแทรกโค้ด VBA ใน Excel

    วิธีเรียกใช้ มาโครจากสมุดงานตัวอย่างของเรา

    อีกทางหนึ่ง คุณสามารถดาวน์โหลดสมุดงานตัวอย่างของเราเพื่อทำสำเนาแผ่นงาน Excel และเรียกใช้โค้ดจากที่นั่น

    สมุดงานตัวอย่างประกอบด้วยมาโครต่อไปนี้:

    <0 CopySheetToNewWorkbook - คัดลอก cu rrent แผ่นงานไปยังสมุดงานใหม่

    CopySelectedSheets - คัดลอกแผ่นงานหลายแผ่นที่คุณเลือกไปยังสมุดงานใหม่

    CopySheetToBeginningAnotherWorkbook - คัดลอกแผ่นงานที่ใช้งานอยู่ ไปที่จุดเริ่มต้นของสมุดงานอื่น

    CopySheetToEndAnotherWorkbook - คัดลอกแผ่นงานที่ใช้งานไปยังส่วนท้ายของไฟล์ Excel อื่น

    CopySheetAndRename - ทำซ้ำปัจจุบัน แผ่น,เปลี่ยนชื่อตามที่ผู้ใช้ระบุ และวางสำเนาไว้หลังแผ่นงานอื่นๆ ทั้งหมดในสมุดงานปัจจุบัน

    CopySheetAndRenamePredefined - ทำซ้ำแผ่นงานที่ใช้งานอยู่ ให้ชื่อฮาร์ดโค้ดแก่สำเนาและวางแผ่นงานนั้น ที่ส่วนท้ายของสมุดงานปัจจุบัน

    CopySheetAndRenameByCell - ทำสำเนาของแผ่นงานที่ใช้งานอยู่และเปลี่ยนชื่อตามค่าเซลล์ที่เลือก

    CopySheetAndRenameByCell2 - คัดลอกแผ่นงานที่ใช้งานอยู่และเปลี่ยนชื่อตามที่อยู่เซลล์แบบฮาร์ดโค้ด

    CopySheetToClosedWorkbook - ให้คุณคัดลอกแผ่นงานไปยังสมุดงานปิด

    CopySheetFromClosedWorkbook - ให้คุณคัดลอกแผ่นงานจากไฟล์ Excel อื่นโดยไม่ต้องเปิด

    DuplicateSheetMultipleTimes - ให้คุณทำสำเนาแผ่นงานใน Excel ได้หลายครั้ง

    ถึง เรียกใช้แมโครใน Excel ของคุณ เพียงทำดังต่อไปนี้:

    1. เปิดสมุดงานที่ดาวน์โหลดและเปิดใช้งานเนื้อหาหากได้รับแจ้ง
    2. เปิดสมุดงานของคุณเองและไปที่แผ่นงานที่คุณต้องการ คัดลอก
    3. <1 7>ในเวิร์กชีตของคุณ กด Alt + F8 เลือกมาโครที่สนใจ แล้วคลิก เรียกใช้

    นั่นคือวิธีที่คุณสามารถทำซ้ำ แผ่นงานใน Excel ด้วย VBA ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!

    Michael Brown เป็นผู้ที่ชื่นชอบเทคโนโลยีโดยเฉพาะและมีความหลงใหลในการทำให้กระบวนการที่ซับซ้อนง่ายขึ้นโดยใช้เครื่องมือซอฟต์แวร์ ด้วยประสบการณ์กว่าทศวรรษในอุตสาหกรรมเทคโนโลยี เขาได้ฝึกฝนทักษะของเขาใน Microsoft Excel และ Outlook รวมถึง Google ชีตและเอกสาร บล็อกของ Michael ทุ่มเทให้กับการแบ่งปันความรู้และความเชี่ยวชาญของเขากับผู้อื่น โดยให้คำแนะนำและแบบฝึกหัดที่ทำตามได้ง่ายเพื่อปรับปรุงผลิตภาพและประสิทธิภาพ ไม่ว่าคุณจะเป็นมืออาชีพที่ช่ำชองหรือมือใหม่ บล็อกของ Michael นำเสนอข้อมูลเชิงลึกอันมีค่าและคำแนะนำที่เป็นประโยชน์สำหรับการใช้ประโยชน์สูงสุดจากเครื่องมือซอฟต์แวร์ที่จำเป็นเหล่านี้