Çeşitli veri kaynaklarıyla çalışırken, son bir veri parçasına ulaşmadan önce çoğu zaman birden oldukça emek verme kitabı ve emek verme sayfası derlemekte zorlanabilirsiniz. Güne başlamadan ilkin birleştirmeniz ihtiyaç duyulan birkaç yüz emek verme kitabınız olduğu bir durum düşünün.
Asla kimse, son olarak birleştirilmiş emek verme kitabı yapmadan ilkin değişik kaynaklar üstünde çalışmak, her emek verme kitabını açmak, çeşitli sayfalardaki verileri kopyalamak ve yapıştırmak için sonsuz saatler harcamak istemez. Vba makrosu bunu sizin için yapabilirse ne olur?
Bu kılavuzla, birden oldukça emek verme kitabını birkaç dakika içinde (veri dosyaları oldukça fazlaysa) birleştirmek için kendi Excel VBA makro kodunuzu oluşturabilirsiniz.
Kendi VBA Makro Kodunuzu Oluşturmak için ÖnKoşullar
Kaynak veri emek verme kitaplarının geri kalanı ayrıyken VBA kodunu barındırmak için bir emek verme kitabına ihtiyacınız vardır. Ek olarak, bir emek verme kitabı oluşturma Konsoli -de tüm emek verme kitaplarınızdaki birleştirilmiş verileri depolamak için.
Klasör oluşturma Konsolidasyon tüm kaynak emek verme kitaplarınızı depolamak için tercih edilen konumda. Makro çalıştığında, bu klasörde depolanan her emek verme kitabı içinde geçiş yapar, içinde ne olduğu çeşitli sayfalardan kopyalar ve Birleştirilmiş emek verme kitabına yerleştirir.
Kendi Excel VBA Kodunuzu Oluşturma
Önkoşullar yoldan çıktıktan sonrasında, kodu incelemeye ve gereksinimlerinize uyarlamak için temelleri hacklemeye başlamanın zamanı geldi.
Basın Alt+F11 vba makro kodu düzenleyicisini açmak için Excel’de tuşu tuşlarına girin. Aşağıda yazılan kodu yapıştırın ve dosyayı Makro etkin bir emek verme kitabı olarak kaydedin (.xlsm uzantısı).
Sub openfiles()'declare the variables used within the VBA code
Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long
'disable these functions to enhance code processing
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
'change the path of the folder where your files are going to be saved
MyFolder = InputBox("Enter path of the Consolidation folder") & ""
'gömü the reference of the folder in a macro variable
MyFile = Dir(MyFolder)
'open a loop to cycle through each individual workbook stored in the folder
Do While Len(MyFile) > 0
'activate the Consolidation workbook
Windows("Consolidation").Activate
'calculate the last populated row
Range("a1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
'open the first workbook within the Consolidation folder
Workbooks.Open Filename:=MyFolder & MyFile
Windows(MyFile).Activate
'toggle through each sheet within the workbooks to copy the data
Dim ws As Worksheet
For Each ws In Sheets
ws.Activate
ws.AutoFilterMode = False
'ignore the header and copy the data from row 2
If Cells(2, 1) = "" Then GoTo 1
GoTo 10
1: Next
10: Range("a2:azca20000").Copy
Windows("Consolidation").Activate
'paste the copied contents
ActiveSheet.Paste
Windows(MyFile).Activate
'close the open workbook once the data is pasted
ActiveWorkbook.Close
'empty the cache to store the value of the next workbook
MyFile = Dir()
'open the next file in the folder
Loop
'enable the disabled functions for future use
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
VBA Kodu Açıklandı
Kodun ilk kısmı, tüm VBA kodunuzu içeren bir altyordam tanımlamaktır. Altroutine’i Alt, arkasından kodun adı. Alt ad herhangi bir şey olabilir; ideal olarak, yazmak suretiyle olduğunuz kodla ilgili bir ad tutmalısınız.
Excel VBA, kullanıcı tarafınca oluşturulan değişkenleri ve bunların ilgili veri türlerini Dim (boyut).
Kodunuzun işlem hızını çoğaltmak için, kod yürütmeyi yavaşlatan ekran güncelleştirmesini kapatabilir ve tüm ikazları bastırabilirsiniz.
Kullanıcıdan veri dosyalarının depolandığı klasörün yolu istenir. Klasör içinde depolanan her emek verme kitabını açmak, verileri her sayfadan kopyalamak ve Konsolidasyon Emek harcama kitabını.
Excel VBA’nın son doldurulan satırı hesaplayabilmesi için Birleştirme emek verme kitabı etkinleştirilir. Emek harcama sayfasındaki son hücre seçilir ve son satır emek verme kitabında uzaklık işlevi kullanılarak hesaplanır. Makro kaynak dosyalardan veri eklendiğinde bu son aşama yararlıdır.
Döngü ilk kaynak dosyayı açtığında, filtreler her sayfadan kaldırılır (var ise) ve A2 ile AZ20000 içinde değişen veriler kopyalanır ve Konsolidasyon emek verme kitabına yapıştırılır.
İşlem, tüm emek verme kitabı sayfaları ana emek verme kitabına eklenene kadar yinelenir.
Son olarak, tüm veriler yapıştırıldıktan sonrasında kaynak dosya kapatılmıştır. VBA makrosunun bir sonraki dosya kümesi için aynı adımları yineleyebilebilmesi için sonraki emek verme kitabı açılır.
Döngü, ana emek verme kitabındaki tüm dosyalar otomatikman güncelleştirilene kadar çalışacak şekilde kodlanır.
Kullanıcı Tabanlı Özelleştirmeler
Kimi zaman, bilhassa son kullanıcıysanız, dahili istemler hakkında endişelenmek istemezsiniz. Koddaki Konsolidasyon klasörünün yolunu durağan(durgun) kodlamayı tercih ederseniz, kodun bu bölümünü değiştirebilirsiniz:
MyFolder = InputBox("Enter path of the Consolidation folder") & ""
Hedef:
MyFolder = “Folder path” & ""
Ek olarak, adım bu koda dahil olmadığı için sütun başvurularını da değiştirebilirsiniz. Son sütun başvurusunu son doldurulmuş sütun değerinizle değiştirmeniz yeterlidir (BU durumda AZ). Son doldurulan satırın makro kodu vesilesiyle hesaplendiğini hatırlamanız gerekir, bundan dolayı yalnızca sütun başvurusunu değiştirmeniz gerekir.
Bu makrodan en iyi şekilde yararlanmak için, yalnızca emek verme kitaplarını aynı halde birleştirmek için kullanabilirsiniz. Yapılar farklıysa, bu VBA makrosunu kullanamazsınız.
Excel VBA Makrosunu Kullanarak Birden Oldukça Emek harcama Kitabını Birleştirme
Excel VBA kodu oluşturmak ve değişiklik yapmak, bilhassa kod içindeki bazı nüansları anlıyorsanız nispeten kolaydır. VBA her kod satırında dizgesel olarak çalışır ve satır satır yürütür.
Kodda herhangi bir değişim yapmış olursanız, kodun yürütülmesini kesintiye uğratacağından, kodların sırasını değiştirmediğinizden güvenli olmalısınız.