როგორ დავაკოპიროთ ფურცელი 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

    დააკოპირეთ ფურცელი სხვა სამუშაო წიგნის ბოლოს

    კოდის ეს ნაწილი ამრავლებს აქტიურ სამუშაო ფურცელს და ათავსებს ასლს წიგნი1 -ის ბოლოს. კიდევ ერთხელ, გთხოვთ, გახსოვდეთ, რომ შეცვალოთ "Book1.xlsx" თქვენი დანიშნულების სამუშაო წიგნის სახელით.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks("Book1.xlsx" ).Sheets(Workbooks("Book1.xlsx " ).სამუშაო ფურცლები.Count) End Sub

    შენიშვნა. იმისთვის, რომ მაკრო იმუშაოს, სამიზნე სამუშაო წიგნი უნდა იყოს შენახული თქვენს მყარ დისკზე ან ქსელში.

    დააკოპირეთ ფურცელი არჩეულ სამუშაო წიგნში

    იმისათვის, რომ შეძლოთ მიმდინარე ფურცლის კოპირება ნებისმიერ ღია სამუშაო წიგნში, შეგიძლიათ შექმნათ UserForm (სახელად UserForm1 ) ListBox კონტროლით ( სახელად ListBox1 ) და ორი ღილაკით:

    შემდეგ, ორჯერ დააწკაპუნეთ ფორმაზე და ჩასვით ქვემოთ მოცემული კოდი კოდის ფანჯარაში:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Every wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) შემდეგი ბოლო Sub Private Sub CommandButton1_Click() If 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() ჩატვირთეთ UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) შემდეგ activeSheet. დააკოპირეთ ადრე:=Workbooks(UserForm1.SelectedWorkbook). Sheets(1) End If Unload UserForm1 End Sub

    დააკოპირეთ ფურცელი შერჩეული სამუშაო წიგნის ბოლოს :

    საჯარო ქვე CopySheetToEndAnotherWorkbook() ჩატვირთეთ UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserFormCountsheetWork). End Sub

    Excel-ში გაშვებისას, მაკრო გაჩვენებთ ყველა ამჟამად გახსნილი სამუშაო წიგნის სიას. ირჩევთ საჭიროს და დააჭირეთ OK:

    Excel მაკრო ფურცლის დასაკოპირებლად და სახელის გადარქმევისას

    როდესაც ფურცელს აკოპირებთ Excel-ში, რეპლიკას ეძლევა სახელი ნაგულისხმევ ფორმატში, როგორიცაა Sheet1 (2) . შემდეგი მაკროები არ მოგიხსნით ნაგულისხმევი სახელის ხელით შეცვლას.

    ეს კოდი ახდენს აქტიურ სამუშაო ფურცლის დუბლირებას, ასლს ასახელებს როგორც „ტესტი ფურცელს“ (შეგიძლიათ შეცვალოთ იგი ნებისმიერი სხვა სახელით, რომელიც მოგწონთ) , და ათავსებს კოპირებულ ფურცელს მიმდინარე სამუშაო წიგნის ბოლოს.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) შეცდომის შესახებ განაახლეთ შემდეგი activeSheet.Name ="სატესტო ფურცელი" ბოლო Sub

    იმისთვის, რომ მომხმარებელს მისცეს დააკონკრეტოს დაკოპირებული ფურცლის სახელი , გამოიყენეთ ეს კოდი:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "შეიყვანეთ დაკოპირებული სამუშაო ფურცლის სახელი" ) თუ newName "" მაშინ activeSheet. დააკოპირეთ შემდეგ:=სამუშაო ფურცლები(Sheets.Count) შეცდომის შემთხვევაში განაახლეთ შემდეგი activeSheet.Name = newName დასრულდება თუ დასრულება Sub

    გაშვებისას, მაკრო აჩვენებს შემდეგ შეყვანის ველს, რომელშიც აკრიფებთ სასურველ სახელს და დააჭირეთ OK:

    Excel მაკრო ფურცლის კოპირებისთვის და უჯრედის მნიშვნელობის მიხედვით გადარქმევის მიზნით

    In ზოგიერთ სიტუაციაში, შეიძლება უფრო მოსახერხებელი იყოს ასლის დასახელება უჯრედის კონკრეტული მნიშვნელობით, მაგალითად, სვეტის სათაური. ამისათვის თქვენ უბრალოდ აიღებთ ზემოთ მოცემულ კოდს და ავტომატურად მიაწოდებთ ამჟამად არჩეული უჯრედის მნიშვნელობას შეყვანის ველში. როგორც წინა მაგალითში, ასლი განთავსდება აქტიური სამუშაო წიგნის ბოლოს.

    ყველაზე რთული ისაა, რომ თქვენს მომხმარებლებს ყოველთვის აირჩიონ სწორი უჯრედი გაშვებამდე. მაკრო :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On შეცდომა Resume Next newName = InputBox( "Enter name for the copyed worksheet" , "Copy worksheet" , ActiveCell.Value) If newName "" then activeSheet. დააკოპირეთ After:=Worksheets(Sheets.Count) შეცდომის შემთხვევაში განაახლეთ შემდეგი activeSheet.Name = newName ბოლოს თუ End Sub

    ალტერნატიულად, შეგიძლიათ მყარი კოდის მისამართიუჯრედი , რომლითაც ასლი უნდა იყოს დასახელებული, უჯრედი A1 ქვემოთ მოცემულ კოდში. კოპირებული სამუშაო ფურცლის სხვა უჯრედზე დაფუძნებული დასახელებისთვის, შეცვალეთ A1 შესაბამისი უჯრედის მითითებით.

    საჯარო ქვე CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) თუ wks.Range ( "A1" ).მნიშვნელობა "" შემდეგ შეცდომით განაახლეთ შემდეგი activeSheet.Name = wks.Range( "A1" ).მნიშვნელობა დამთავრდა თუ wks.გააქტიურეთ End Sub

    მაკრო სამუშაო ფურცლის დახურულ სამუშაო წიგნში დასაკოპირებლად

    ეს მაკრო აკოპირებს აქტიურ ფურცელს დახურული სამუშაო წიგნის ბოლოს. სხვა სამუშაო წიგნის სახელი არ არის მითითებული კოდში - მაკრო გახსნის სტანდარტულ Windows Explorer-ის ფანჯარას და საშუალებას მოგცემთ აირჩიოთ ნებისმიერი დანიშნულების ფაილი:

    ფაილის არჩევის შემდეგ და დააწკაპუნეთ გახსნა , მაკრო დააკოპირებს აქტიურ ფურცელს და ავტომატურად დახურავს სამიზნე წიგნს.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closeBook As Workbook Dim currentSheet როგორც Worksheet fileName = Application.GetOpenFilename( "Excel ფაილები (*.xlsx), *.xlsx" ) თუ ფაილის სახელი მცდარია, მაშინ Application.ScreenUpdating = False Set currentSheet = Application.activeSheet ნაკრები დახურული წიგნი = სამუშაო წიგნები. გახსენით (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) დახურული წიგნი. დახურვა ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA ფურცლის სხვა სამუშაო წიგნიდან კოპირებისთვის გარეშეგახსნა

    ეს მაკრო საშუალებას გაძლევთ დააკოპიროთ სამუშაო ფურცელი სხვა Excel ფაილიდან გახსნის გარეშე. კოპირებული ფურცელი ჩასმული იქნება მიმდინარე სამუშაო წიგნის ბოლოს.

    უბრალოდ დაიმახსოვრეთ, რომ რამდენიმე ჩანაცვლება შეიტანოთ კოდში:

    • C:\Users\XXX\Documents\ Target_Book.xlsx უნდა შეიცვალოს სამუშაო წიგნის რეალურ გზაზე და სახელზე, საიდანაც გსურთ ფურცლის კოპირება.
    • Sheet1 უნდა შეიცვალოს იმ ფურცლის სახელით, რომლის კოპირებაც გსურთ.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook როგორც Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. გახსენით ("C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets("Sheet1"). დააკოპირეთ შემდეგ:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. დახურეთ Application.ScreenUpdating = True End Sub

    Excel VBA ფურცლის რამდენჯერმე დუბლიკატისთვის

    ზოგჯერ შეიძლება დაგჭირდეთ ერთი და იგივე ფურცლის დუბლირება არაერთხელ, მაგალითად, სხვადასხვა ფორმულების ტესტირება მონაცემთა ერთსა და იმავე ნაკრებზე. ეს მარტივად შეიძლება გაკეთდეს შემდეგი მაკროთი.

    Public Sub DuplicateSheetMultipleTimes() Dim n როგორც მთელი რიცხვი შეცდომის შესახებ განაახლეთ შემდეგი n = InputBox("აქტიური ფურცლის რამდენი ასლის გაკეთება გსურთ?" ) თუ n > = 1 შემდეგ numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    გახსენით ორიგინალური ფურცელი, გაუშვით მაკრო, მიუთითეთ აქტიური ფურცლის რამდენი ასლიგსურთ შექმნათ და დააწკაპუნეთ OK :

    როგორ დავაკოპიროთ ფურცლები Excel-ში VBA-ით

    დაკოპიროთ ფურცელი Excel-ში ერთ-ერთი ზემოაღნიშნული მაკროდან შეგიძლიათ ჩადოთ VBA კოდი საკუთარ წიგნში, ან გაუშვათ მაკრო ჩვენი ნიმუშის სამუშაო წიგნიდან.

    როგორ დავამატოთ მაკრო თქვენს სამუშაო წიგნში

    ჩასვათ კოდი თქვენს სამუშაო წიგნში, შეასრულეთ შემდეგი ნაბიჯები:

    1. გახსენით სამუშაო ფურცელი, რომლის კოპირებაც გსურთ.
    2. დააჭირეთ Alt + F11 Visual Basic რედაქტორის გასახსნელად.
    3. ჩართეთ მარცხენა პანელზე, დააწკაპუნეთ მარჯვენა ღილაკით This Workbook და შემდეგ დააწკაპუნეთ Insert > Module .
    4. ჩასვით კოდი კოდის ფანჯარაში.
    5. დააჭირეთ F5 მაკროს გასაშვებად.

    დაწვრილებითი ნაბიჯ-ნაბიჯ ინსტრუქციებისთვის იხილეთ როგორ ჩასვათ VBA კოდი Excel-ში.

    როგორ გაუშვათ მაკრო ჩვენი ნიმუშის სამუშაო წიგნიდან

    ალტერნატიულად, შეგიძლიათ ჩამოტვირთოთ ჩვენი სამუშაო წიგნის ნიმუში Excel Sheets-ში და გაუშვათ კოდი იქიდან.

    სამუშაო წიგნის ნიმუში შეიცავს შემდეგ მაკროებს:

    CopySheetToNewWorkbook - აკოპირებს cu გადაიტანეთ სამუშაო ფურცელი ახალ სამუშაო წიგნში.

    CopySelectedSheets - აკოპირებს თქვენს მიერ არჩეულ მრავალ ფურცელს ახალ სამუშაო წიგნში.

    CopySheetToBeginningAnotherWorkbook - აკოპირებს აქტიურ ფურცელს სხვა სამუშაო წიგნის დასაწყისში.

    CopySheetToEndAnotherWorkbook - აკოპირებს აქტიურ ფურცელს სხვა Excel ფაილის ბოლოს.

    CopySheetAndRename - აკოპირებს მიმდინარე ფურცელი,ცვლის მას მომხმარებლის მიერ მითითებულ სახელს და ათავსებს ასლს ყველა სხვა ფურცლის შემდეგ მიმდინარე სამუშაო წიგნში.

    CopySheetAndRenamePredefined - ახდენს აქტიურ ფურცლის დუბლირებას, ასლს აძლევს მყარი კოდირებულ სახელს და ათავსებს მას. მიმდინარე სამუშაო წიგნის ბოლოს.

    CopySheetAndRenameByCell - აკეთებს აქტიური ფურცლის ასლს და გადარქმევს მას არჩეული უჯრედის მნიშვნელობის მიხედვით.

    CopySheetAndRenameByCell2 - აკოპირებს აქტიურ ფურცელს და გადარქმევს მას მყარი კოდირებული უჯრედის მისამართის საფუძველზე.

    CopySheetToClosedWorkbook - გაძლევთ საშუალებას დააკოპიროთ ფურცელი დახურულ სამუშაო წიგნში.

    CopySheetFromClosedWorkbook - გაძლევთ საშუალებას დააკოპიროთ ფურცელი სხვა Excel-ის ფაილიდან გახსნის გარეშე.

    DuplicateSheetMultipleTimes - გაძლევთ ფურცლის მრავალჯერ დუბლირებას Excel-ში.

    გაუშვით მაკრო თქვენს Excel-ში, უბრალოდ გააკეთეთ შემდეგი:

    1. გახსენით გადმოწერილი სამუშაო წიგნი და მოთხოვნის შემთხვევაში ჩართეთ კონტენტი.
    2. გახსენით თქვენი საკუთარი სამუშაო წიგნი და გადადით იმ ფურცელზე, რომელიც გსურთ. ასლი.
    3. <1 7>თქვენს სამუშაო ფურცელში დააჭირეთ Alt + F8 , აირჩიეთ თქვენთვის საინტერესო მაკრო და დააწკაპუნეთ Run .

    ასე შეგიძლიათ დუბლიკატი. ფურცელი Excel-ში VBA-ით. მადლობას გიხდით რომ კითხულობთ და იმედი მაქვს მომავალ კვირას გნახავთ ჩვენს ბლოგზე!

    მაიკლ ბრაუნი არის ტექნოლოგიის ერთგული ენთუზიასტი, რომელსაც აქვს გატაცება პროგრამული ინსტრუმენტების გამოყენებით რთული პროცესების გამარტივებისთვის. ტექნოლოგიურ ინდუსტრიაში ათწლეულზე მეტი გამოცდილებით, მან დახვეწა თავისი უნარები Microsoft Excel-სა და Outlook-ში, ასევე Google Sheets-სა და Docs-ში. მაიკლის ბლოგი ეძღვნება თავისი ცოდნისა და გამოცდილების სხვებს გაზიარებას, ადვილად მისაწვდომ რჩევებსა და გაკვეთილებს პროდუქტიულობისა და ეფექტურობის გასაუმჯობესებლად. მიუხედავად იმისა, გამოცდილი პროფესიონალი ხართ თუ დამწყები, მაიკლის ბლოგი გთავაზობთ ღირებულ შეხედულებებსა და პრაქტიკულ რჩევებს ამ აუცილებელი პროგრამული ხელსაწყოებიდან მაქსიმალური სარგებლობის მისაღებად.