สารบัญ
บทช่วยสอนมีชุดของมาโครเพื่อทำสำเนาแผ่นงานใน Excel: คัดลอกและเปลี่ยนชื่อตามค่าเซลล์ คัดลอกแผ่นงานหลายแผ่น คัดลอกแผ่นงานที่ใช้งานไปยังไฟล์อื่นโดยไม่ต้องเปิด และอื่นๆ อีกมากมาย
การคัดลอกแผ่นงานด้วยตนเองใน Excel ค่อนข้างรวดเร็วและตรงไปตรงมา... หากทำเพียงครั้งเดียวหรือสองครั้ง การทำสำเนาหลายแผ่นหลายครั้งเป็นเรื่องน่าเบื่อและเสียเวลา ในหน้านี้ คุณจะพบมาโครที่มีประโยชน์จำนวนหนึ่งเพื่อทำให้งานนี้เป็นไปโดยอัตโนมัติ
Excel VBA เพื่อคัดลอกแผ่นงานไปยังสมุดงานใหม่
มาโครบรรทัดเดียวที่ง่ายที่สุดนี้ทำ ตรงตามชื่อของมันทุกประการ - คัดลอกแผ่นงานที่ใช้งานไปยังสมุดงานใหม่
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Subคัดลอกแผ่นงานหลายแผ่นใน Excel ด้วย VBA
หากคุณต้องการ คัดลอกแผ่นงานหลายแผ่นจากสมุดงานที่ใช้งานไปยังแผ่นงานใหม่ เลือกแผ่นงานทั้งหมดที่สนใจและเรียกใช้มาโครนี้:
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel 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 SubExcel VBA เพื่อคัดลอกแผ่นงานจากสมุดงานอื่นโดยไม่ต้องกำลังเปิด
มาโครนี้ทำให้คุณสามารถคัดลอกแผ่นงานจากไฟล์ Excel อื่นโดยไม่ต้องเปิด แผ่นงานที่คัดลอกจะถูกแทรกที่ส่วนท้ายของสมุดงานปัจจุบัน
อย่าลืมเปลี่ยนโค้ดสองสามครั้ง:
- C:\Users\XXX\Documents\ Target_Book.xlsx ควรเปลี่ยนเป็นเส้นทางจริงและชื่อของสมุดงานที่คุณต้องการคัดลอกแผ่นงาน
- ควรแทนที่แผ่นงาน 1 ด้วยชื่อของแผ่นงานที่คุณต้องการคัดลอก
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 ลงในหนังสือของคุณเองหรือเรียกใช้มาโครจากสมุดงานตัวอย่างของเรา
วิธีเพิ่มมาโครในสมุดงานของคุณ
วิธีแทรก รหัสในสมุดงานของคุณ ทำตามขั้นตอนเหล่านี้:
- เปิดแผ่นงานที่คุณต้องการคัดลอก
- กด Alt + F11 เพื่อเปิด Visual Basic Editor
- เปิด บานหน้าต่างด้านซ้าย คลิกขวา ThisWorkbook แล้วคลิก แทรก > โมดูล .
- วางโค้ดในหน้าต่างโค้ด
- กด F5 เพื่อเรียกใช้แมโคร
สำหรับคำแนะนำทีละขั้นตอนโดยละเอียด โปรดดูวิธีแทรกโค้ด VBA ใน Excel
วิธีเรียกใช้ มาโครจากสมุดงานตัวอย่างของเรา
อีกทางหนึ่ง คุณสามารถดาวน์โหลดสมุดงานตัวอย่างของเราเพื่อทำสำเนาแผ่นงาน Excel และเรียกใช้โค้ดจากที่นั่น
สมุดงานตัวอย่างประกอบด้วยมาโครต่อไปนี้:
<0 CopySheetToNewWorkbook - คัดลอก cu rrent แผ่นงานไปยังสมุดงานใหม่CopySelectedSheets - คัดลอกแผ่นงานหลายแผ่นที่คุณเลือกไปยังสมุดงานใหม่
CopySheetToBeginningAnotherWorkbook - คัดลอกแผ่นงานที่ใช้งานอยู่ ไปที่จุดเริ่มต้นของสมุดงานอื่น
CopySheetToEndAnotherWorkbook - คัดลอกแผ่นงานที่ใช้งานไปยังส่วนท้ายของไฟล์ Excel อื่น
CopySheetAndRename - ทำซ้ำปัจจุบัน แผ่น,เปลี่ยนชื่อตามที่ผู้ใช้ระบุ และวางสำเนาไว้หลังแผ่นงานอื่นๆ ทั้งหมดในสมุดงานปัจจุบัน
CopySheetAndRenamePredefined - ทำซ้ำแผ่นงานที่ใช้งานอยู่ ให้ชื่อฮาร์ดโค้ดแก่สำเนาและวางแผ่นงานนั้น ที่ส่วนท้ายของสมุดงานปัจจุบัน
CopySheetAndRenameByCell - ทำสำเนาของแผ่นงานที่ใช้งานอยู่และเปลี่ยนชื่อตามค่าเซลล์ที่เลือก
CopySheetAndRenameByCell2 - คัดลอกแผ่นงานที่ใช้งานอยู่และเปลี่ยนชื่อตามที่อยู่เซลล์แบบฮาร์ดโค้ด
CopySheetToClosedWorkbook - ให้คุณคัดลอกแผ่นงานไปยังสมุดงานปิด
CopySheetFromClosedWorkbook - ให้คุณคัดลอกแผ่นงานจากไฟล์ Excel อื่นโดยไม่ต้องเปิด
DuplicateSheetMultipleTimes - ให้คุณทำสำเนาแผ่นงานใน Excel ได้หลายครั้ง
ถึง เรียกใช้แมโครใน Excel ของคุณ เพียงทำดังต่อไปนี้:
- เปิดสมุดงานที่ดาวน์โหลดและเปิดใช้งานเนื้อหาหากได้รับแจ้ง
- เปิดสมุดงานของคุณเองและไปที่แผ่นงานที่คุณต้องการ คัดลอก <1 7>ในเวิร์กชีตของคุณ กด Alt + F8 เลือกมาโครที่สนใจ แล้วคลิก เรียกใช้
นั่นคือวิธีที่คุณสามารถทำซ้ำ แผ่นงานใน Excel ด้วย VBA ฉันขอขอบคุณสำหรับการอ่านและหวังว่าจะได้พบคุณในบล็อกของเราในสัปดาห์หน้า!