Kapalı Excel Kitabını Açmadan Makro ile İçinden Veri Çekmek

DEGARADO isimli Youtube kanalımız üzerinden bir arkadaşımız aşağıdaki gibi bir soru sormuş. Bende sorusuna binaen bu yazıyı hazırlayarak hem kendisine hemde aynı dertten muzdarip olabilecek herkese yardımcı olabilmek istedim. Arkadaşımızın sorusunu aynen buraya kopyalıyorum.

“Abi ağzına sağlık çok teşekkür ederiz. Abi bir sürü aynı tipte excel raporlarım var. Ben bu excel raporlarımın belli hücrelerinden bilgi alıp ayrı bir rapor oluşturmak istiyorum. Normalde her bilgi almak istediğin çalışma kitabını açıp kapatman gerekiyor. Çalışma kitabını hiç açmadan hücreden veriyi okumanın daha hızlı bir yolu varmıdır acaba? Şimdiden teşekkür ederim.”

Bu soruya cevabım elbette mümkün şeklinde olacaktır. Ancak bunu yapmak için Excel VBA (Visual Basic Application) yani kısaca makro yöntemini kullanmamız gerekmekte. Şimdi bunu nasıl yapabileceğimizi kısaca anlatmak istiyorum.

Soruyu daha kolay anlaşılabilmesi için kısaca özetlemek gerekirse;

Excel üzerinde kapalı olan çalışma kitabımızdaki verileri geçerli yani açık olan çalışma kitabımıza nasıl kopyalama ve aktarma işlemini yapabiliriz?

VBA Penceresine Açmanın Yolları

Bunun için öncelikle Aktif olarak çalışılacak Ms Excel dosyamızı açıyoruz ve ardından kod yazabilmek için VBA Penceresine (Visual Basic Application) geçiş yapıyoruz. Bunun için Sayfa adının üzerine sağ tık ve açılan pencereden Kod görüntüle diyebiliriz. Yada ALT + F11 tuşlarına basabiliriz. Yada Geliştirici sekmesi açıksa direk bu sekmeden Visual Basic bölümüne tıklayarak geçiş yapabiliriz.

Geliştirici sekmesi açık olmayan kişiler bu konuda detaylı bir anlatım yapmış olduğum yazıyı buraya tıklayarak inceleyebilirler.

Ardından açılan pencerede Sekmeler bölümünden Insert sekmesine ardından Module bölümüne tıklayarak yeni bir modül oluşturuyoruz. 

Böylelikle açılan yeni pencerede kodlarımızı yazmaya başlayabiliriz. Aşağıdaki kodları kopyalayıp bu açılan pencereye yapıştırmanız yeterlidir.

Kopyalamanız Gereken VBA Kodları

Private Sub KapaliExceldenVeriCekme()
Dim ilk, ikinci As Workbook
Dim Baslik As String
Dim Hucre1, Hucre2 As Range
Set ilk = Application.ActiveWorkbook
Baslik = "https://dilaverajder.com"
With Application.FileDialog(msoFileDialogOpen)
    .Filters.Clear
    .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa"
    .AllowMultiSelect = False
    .Show
    If .SelectedItems.Count > 0 Then
        Application.Workbooks.Open .SelectedItems(1)
        Set ikinci = Application.ActiveWorkbook
        Set Hucre1 = Application.InputBox(prompt:="Kopyalamak İstediğiniz Hücreleri Seçin", Title:=Baslik, Default:="A1", Type:=8)
        ilk.Activate
        Set Hucre2 = Application.InputBox(prompt:="Yapıştıracağınız Yeri Seçin", Title:=Baslik, Default:="A1", Type:=8)
        Hucre1.Copy Hucre2
        Hucre2.CurrentRegion.EntireColumn.AutoFit
        ikinci.Close False
    End If
End With
End Sub

Makroyu Çalıştırma Yöntemleri

İşlemimizi tamamladık. Şimdi yapmamız gereken makroyu çalıştırıp işimize bakmaktır. Ancak bu makroyu çalıştırmak için bir kaç yöntem var ve sırası gelmişken kısaca bunlardan da bahsedeyim.

  1. Makromuzu VBA penceresinde F5 tuşuna basarak çalıştırabiliriz. 
  2. Excel üzerinden çalıştırmak için Excel de bize uygun bir bölüme bir şekil ekleyerek hazırladığımız makroyu bu şekle sağ tık yöntemi ile atayabiliriz.
  3. Daha kolay yöntemi ise yine Excel üzerinden Youtube kanalımda anlatımını yapmış olduğum Menülere makromuzu atayarak çalıştırabiliriz. Video muza buraya tıklayarak ulaşabilirsiniz.
  4. En kolay kullanım için ve tüm MS Excel Kitaplarımızda Makromuzu çalıştırabilmek için ise oluşturmuş olduğumuz makroyu bir eklenti haline haline getirerek her Excel kitabımızda kullanmayı sağlayabiliriz. Bunun içinde hazırlamış olduğum videoyu buraya tıklayarak izleyebilirsiniz.

Evet hangi yöntemi seçerseniz seçin yapmanız gereken Makroyu çalıştırdığınızda açılan pencereden veri çekmek istediğiniz Excel dosyasını seçmek ardından kopyalamak istediğiniz hücreleri mouse ile seçerek Tamam tuşuna basmaktır. Hemen ardından ise Aktif olan pencerede kopyalamış olduğunuz verileri yapıştıracağınız hücreyi seçerek tekrar Tamam tuşuna basmanız yeterli olacaktır.

Artık sadece veri almak için her Excel dosyasını açıp kopyalama işlemini yaptıktan sonra tekrar kapatmanıza gerek kalmayacaktır. Soruyu soran arkadaşımıza özel bir yazı gibi görünse de aslında bir çok kişinin işine yarayacak ve işlemlerini hızlandıracak pratik bir özellik olduğunu düşündüğüm için bu yazıyı hazırladım. Umarım faydasını görürsünüz.. Yazıyı uzun görüp işlemden sakın korkmayın ben sadece anlaşılmayan hiçbir nokta kalmasın diye detaylı bir şekilde anlatım yaptım. Bu yüzden yazımız biraz uzun oldu. İşlemimiz gerçekten çok kolay ve işlemimizi çok hızlandıracaktır.

Bu arada sizlere tekrar etmek istediğim bir konuyu da burada belirtmek istiyorum. Şayet konudan fayda gördüyseniz konunun altına yazacağınız bir ufak teşekkür yorumu ve herkesin yararlanabilmesi için sitemi referans göstererek paylaşım yapabilmeniz benim için gerçekten yazma şevkimin yok olmayarak yazma isteğimin devamını sağlamaktadır.  


7 yorum

Bir yanıt yazın

Avatar placeholder

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.