Excel VBA'da Çalışma Kitabı Nesnesini Kullanma (Aç, Kapat, Kaydet, Ayarla)

Bu eğitimde, VBA kullanarak Excel'de çalışma kitaplarıyla nasıl çalışılacağını ele alacağım.

Excel'de 'Çalışma Kitabı', 'Çalışma Kitapları' koleksiyonunun bir parçası olan bir nesnedir. Bir çalışma kitabında, çalışma sayfaları, grafik sayfaları, hücreler ve aralıklar, grafik nesneleri, şekiller vb. gibi farklı nesneleriniz vardır.

VBA ile, belirli bir çalışma kitabını açma, çalışma kitaplarını kaydetme ve kapatma, yeni çalışma kitapları oluşturma, çalışma kitabı özelliklerini değiştirme vb. gibi bir çalışma kitabı nesnesiyle pek çok şey yapabilirsiniz.

Öyleyse başlayalım.

Bu eğitimde bahsettiğim tüm kodların Visual Basic Düzenleyicisine yerleştirilmesi gerekiyor. Nasıl çalıştığını öğrenmek için 'VBA Kodunu Nereye Koymalı' bölümüne gidin.

VBA'yı kolay yoldan öğrenmekle ilgileniyorsanız, Çevrimiçi Excel VBA Eğitimi.

VBA kullanarak bir Çalışma Kitabına başvurma

VBA'da bir Çalışma Kitabı nesnesine başvurmanın farklı yolları vardır. Seçtiğiniz yöntem, ne yapmak istediğinize bağlı olacaktır. Bu bölümde, bazı örnek kodlarla birlikte bir çalışma kitabına başvurmanın farklı yollarını ele alacağım.

Çalışma Kitabı Adlarını Kullanma

Başvurmak istediğiniz çalışma kitabının tam adına sahipseniz, koddaki adı kullanabilirsiniz.

Basit bir örnekle başlayalım.

Açık iki çalışma kitabınız varsa ve çalışma kitabını - Example.xlsx adıyla etkinleştirmek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Sub ActivateWorkbook() Workbooks("Examples.xlsx").Activate End Sub

Dosya kaydedilmişse, uzantıyla birlikte dosya adını kullanmanız gerektiğini unutmayın. Kaydedilmemişse, adı dosya uzantısı olmadan kullanabilirsiniz.

Hangi adı kullanacağınızdan emin değilseniz, Proje Gezgini'nden yardım alın.

Bir çalışma kitabını etkinleştirmek ve o çalışma kitabındaki bir çalışma sayfasındaki belirli bir hücreyi seçmek istiyorsanız, hücrenin tam adresini (Çalışma Kitabı ve Çalışma Sayfası adı dahil) vermeniz gerekir.

Sub ActivateWorkbook() Workbooks("Examples.xlsx").Worksheets("Sheet1").Activate Range("A1").Select End Sub

Yukarıdaki kod önce Örnekler.xlsx çalışma kitabında Sayfa1'i etkinleştirir ve ardından sayfada A1 hücresini seçer.

Çalışma kitabına başvurmadan bir çalışma sayfasına veya bir hücreye/aralığa başvurunun yapıldığı bir kod sık sık görürsünüz. Bu, içinde kodun bulunduğu ve aynı zamanda etkin çalışma kitabı olan aynı çalışma kitabındaki çalışma sayfasına/aralıklarına atıfta bulunduğunuzda olur. Ancak bazı durumlarda, kodun çalıştığından emin olmak için çalışma kitabını belirtmeniz gerekir (bununla ilgili daha fazla bilgi Bu Çalışma Kitabı bölümünde).

Dizin Numaralarını Kullanma

Dizin numaralarına göre çalışma kitaplarına da başvurabilirsiniz.

Örneğin, açık üç çalışma kitabınız varsa, aşağıdaki kod size bir mesaj kutusundaki üç çalışma kitabının adlarını gösterir (birer birer).

Sub WorkbookName() MsgBox Workbooks(1).Name MsgBox Workbooks(2).Name MsgBox Workbooks(3).Name End Sub

Yukarıdaki kod, belirtilen metin/değerle (bu durumda çalışma kitabı adı olan) bir mesaj kutusu gösteren bir işlev olan MsgBox'ı kullanır.

Çalışma Kitaplarında dizin numaralarını kullanmakla ilgili sık sık karşılaştığım sorunlardan biri, hangisinin ilk çalışma kitabı, hangisinin ikinci vb. olduğunu asla bilememenizdir. Emin olmak için, kodu yukarıda gösterildiği gibi çalıştırmanız veya açık çalışma kitaplarında dolaşmaya benzer bir şey çalıştırmanız ve dizin numaralarını bilmeniz gerekir.

Excel, ilk açılan çalışma kitabına dizin numarası 1, sonrakini 2 vb. olacak şekilde davranır.

Bu dezavantaja rağmen, indeks numaralarını kullanmak işe yarayabilir. Örneğin, tüm açık çalışma kitaplarında dolaşmak ve hepsini kaydetmek istiyorsanız, dizin numaralarını kullanabilirsiniz. Bu durumda, bunun tüm çalışma kitaplarına olmasını istediğiniz için, bireysel dizin numaralarıyla ilgilenmezsiniz.

Aşağıdaki kod, tüm açık çalışma kitaplarında dolaşır ve bu VBA koduna sahip çalışma kitabı dışındakileri kapatır.

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Adım -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Close End If Next i End Sub

Yukarıdaki kod, açık çalışma kitaplarının sayısını sayar ve ardından For Her döngüsünü kullanarak tüm çalışma kitaplarını gözden geçirir.

Çalışma kitabının adının, kodun çalıştırıldığı çalışma kitabınınkiyle aynı olup olmadığını kontrol etmek için EĞER koşulunu kullanır.

Bir eşleşme değilse, çalışma kitabını kapatır ve bir sonrakine geçer.

Döngüyü WbCount'tan 1'e Adım -1 ile çalıştırdığımızı unutmayın. Bu, her döngüde olduğu gibi yapılır, açık çalışma kitaplarının sayısı azalır.

Bu Çalışma Kitabı sonraki bölümde ayrıntılı olarak ele alınmıştır.

ActiveWorkbook'u Kullanma

ActiveWorkbook, adından da anlaşılacağı gibi, aktif olan çalışma kitabını ifade eder.

Aşağıdaki kod size aktif çalışma kitabının adını gösterecektir.

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name End Sub

Başka bir çalışma kitabını etkinleştirmek için VBA'yı kullandığınızda, bundan sonra VBA'daki ActiveWorkbook bölümü, etkinleştirilmiş çalışma kitabına başvurmaya başlar.

İşte buna bir örnek.

Etkin bir çalışma kitabınız varsa ve içine aşağıdaki kodu ekleyip çalıştırırsanız, önce kodu içeren çalışma kitabının adını ve ardından (kod tarafından etkinleştirilen) Example.xlsx'in adını gösterir.

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name Workbooks("Examples.xlsx").Activate MsgBox ActiveWorkbook.Name End Sub

VBA kullanarak yeni bir çalışma kitabı oluşturduğunuzda, bu yeni oluşturulan çalışma kitabının otomatik olarak etkin çalışma kitabı olacağını unutmayın.

Bu Çalışma Kitabını Kullanma

ThisWorkbook, kodun yürütüldüğü çalışma kitabını ifade eder.

Her çalışma kitabının bir parçası olarak bir ThisWorkbook nesnesi olacaktır (Proje Gezgini'nde görünür).

'ThisWorkbook' normal makroları (modülleri eklediklerimize benzer) ve olay prosedürlerini depolayabilir. Bir olay prosedürü, bir olaya dayalı olarak tetiklenen bir şeydir - bir hücreye çift tıklamak veya bir çalışma kitabını kaydetmek veya bir çalışma sayfasını etkinleştirmek gibi.

Bu 'BuÇalışma Kitabına' kaydettiğiniz herhangi bir olay prosedürü, yalnızca belirli sayfalarla sınırlı olan sayfa düzeyindeki olaylara kıyasla tüm çalışma kitabında kullanılabilir olacaktır.

Örneğin, Proje Gezgini'nde ThisWorkbook nesnesine çift tıklarsanız ve aşağıdaki kodu kopyalayıp yapıştırırsanız, çalışma kitabının tamamındaki hücrelerden herhangi birine çift tıkladığınızda hücre adresini gösterecektir.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox Target.Address End Sub

ThisWorkbook'un ana rolü olay prosedürünü saklamak olsa da, onu kodun yürütüldüğü çalışma kitabına başvurmak için de kullanabilirsiniz.

Aşağıdaki kod, kodun yürütüldüğü çalışma kitabının adını döndürür.

Sub ThisWorkbookName() MsgBox ThisWorkbook.Name End Sub

ThisWorkbook'u (ActiveWorkbook üzerinden) kullanmanın yararı, her durumda aynı çalışma kitabına (içinde kod bulunan kitap) atıfta bulunmasıdır. Bu nedenle, yeni bir çalışma kitabı eklemek için bir VBA kodu kullanırsanız, ActiveWorkbook değişecektir, ancak ThisWorkbook yine de koda sahip olana atıfta bulunacaktır.

Yeni Bir Çalışma Kitabı Nesnesi Oluşturma

Aşağıdaki kod yeni bir çalışma kitabı oluşturacaktır.

Sub CreateNewWorkbook() Workbooks.Add End Sub

Yeni bir çalışma kitabı eklediğinizde, aktif çalışma kitabı olur.

Aşağıdaki kod, yeni bir çalışma kitabı ekleyecek ve ardından size bu çalışma kitabının adını gösterecektir (bu, varsayılan Kitap1 türü adı olacaktır).

Sub CreateNewWorkbook() Workbooks.Add MsgBox ActiveWorkbook.Name End Sub

VBA kullanarak bir Çalışma Kitabı açın

Çalışma kitabının dosya yolunu bildiğinizde belirli bir çalışma kitabını açmak için VBA'yı kullanabilirsiniz.

Aşağıdaki kod, sistemimdeki Belgeler klasöründe bulunan Örnekler.xlsx çalışma kitabını açacaktır.

Sub OpenWorkbook() Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") End Sub

Dosyanın, VBA'nın varsayılan olarak yeni dosyaları kaydettiği klasör olan varsayılan klasörde bulunması durumunda, tüm yol olmadan sadece çalışma kitabı adını belirtebilirsiniz.

Sub OpenWorkbook() Workbooks.Open ("Examples.xlsx") End Sub

Açmaya çalıştığınız çalışma kitabı yoksa bir hata görürsünüz.

Bu hatayı önlemek için, önce dosyanın var olup olmadığını kontrol etmek için kodunuza birkaç satır ekleyebilir ve varsa, açmayı deneyebilirsiniz.

Aşağıdaki kod dosya konumunu kontrol eder ve mevcut değilse, özel bir mesaj gösterir (hata mesajını değil):

Sub OpenWorkbook() If Dir("C:\Users\sumit\Documents\Examples.xlsx") "" Sonra Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") Else MsgBox "Dosya 'var değil" End If End Sub

Açmak istediğiniz dosyayı seçmek için Aç iletişim kutusunu da kullanabilirsiniz.

Sub OpenWorkbook() On Hata Devam Et Sonraki Dim FilePath As String FilePath = Application.GetOpenFilename Workbooks.Open (FilePath) End Sub

Yukarıdaki kod, Aç iletişim kutusunu açar. Açmak istediğiniz bir dosyayı seçtiğinizde, dosya yolunu FilePath değişkenine atar. Workbooks.Open daha sonra dosyayı açmak için dosya yolunu kullanır.

Kullanıcının bir dosyayı açmaması ve İptal düğmesine tıklaması durumunda FilePath False olur. Bu durumda hata almamak için 'On Error Resume Next' ifadesini kullandık.

İlişkili: Excel VBA'da Hata İşleme Hakkında Her Şeyi Öğrenin

Çalışma Kitabını Kaydetme

Etkin çalışma kitabını kaydetmek için aşağıdaki kodu kullanın:

Sub SaveWorkbook() ActiveWorkbook.Save End Sub

Bu kod, daha önce kaydedilmiş olan çalışma kitapları için çalışır. Ayrıca, çalışma kitabı yukarıdaki makroyu içerdiğinden, bir .xlsm (veya .xls) dosyası olarak kaydedilmemişse, bir sonraki açtığınızda makroyu kaybedersiniz.

Çalışma kitabını ilk kez kaydediyorsanız, aşağıda gösterildiği gibi size bir istem gösterecektir:

İlk kez kaydederken, 'Kaydet' seçeneğini kullanmak daha iyidir.

Aşağıdaki kod, etkin çalışma kitabını varsayılan konuma (sistemimdeki belge klasörü olan) bir .xlsm dosyası olarak kaydeder.

Sub SaveWorkbook() ActiveWorkbook.SaveAs Dosya Adı:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Dosyanın belirli bir konuma kaydedilmesini istiyorsanız, bunu Dosya Adı değerinde belirtmeniz gerekir. Aşağıdaki kod dosyayı masaüstüme kaydeder.

Sub SaveWorkbook() ActiveWorkbook.SaveAs Dosya Adı:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Kullanıcının dosyayı kaydedeceği konumu seçme seçeneğine sahip olmasını istiyorsanız, Saveas iletişim kutusunu çağırabilirsiniz. Aşağıdaki kod Saveas iletişim kutusunu gösterir ve kullanıcının dosyanın kaydedileceği konumu seçmesine izin verir.

Sub SaveWorkbook() Dim FilePath As String FilePath = Application.GetSaveAsFilename ActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

FileFormat:=xlOpenXMLWorkbookMacroEnabled kullanmak yerine, FileFormat:=52'yi de kullanabileceğinizi unutmayın; burada 52, xlOpenXMLWorkbookMacroEnabled kodudur.

Tüm Açık Çalışma Kitaplarını Kaydetme

Birden fazla açık çalışma kitabınız varsa ve tüm çalışma kitaplarını kaydetmek istiyorsanız aşağıdaki kodu kullanabilirsiniz:

Sub SaveAllWorkbooks() Dim wb Çalışma Kitaplarındaki Her wb için wb.Save Next wb End Sub

Yukarıdakiler, hiç kaydedilmemiş olanlar da dahil olmak üzere tüm çalışma kitaplarını kaydeder. Daha önce kaydedilmemiş olan çalışma kitapları varsayılan konuma kaydedilir.

Yalnızca daha önce kaydedilmiş olan çalışma kitaplarını kaydetmek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Sub SaveAllWorkbooks() Çalışma Kitaplarındaki Her wb İçin Çalışma Kitabı Olarak Dim wb.Path "" Sonra wb.Save End If Next wb End Sub

Tüm Çalışma Kitaplarını Kaydetme ve Kapatma

İçinde geçerli kodun bulunduğu çalışma kitabı dışındaki tüm çalışma kitaplarını kapatmak istiyorsanız aşağıdaki kodu kullanabilirsiniz:

Sub CloseandSaveWorkbooks() Çalışma Kitaplarındaki Her wb için wb'yi Dim wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Yukarıdaki kod tüm çalışma kitaplarını kapatır (kodu içeren çalışma kitabı - ThisWorkbook hariç). Bu çalışma kitaplarında değişiklik olması durumunda değişiklikler kaydedilecektir. Hiç kaydedilmemiş bir çalışma kitabı olması durumunda, farklı kaydet iletişim kutusunu gösterecektir.

Çalışma Kitabının Bir Kopyasını Kaydetme (Zaman Damgalı)

Excel çalışma kitaplarında karmaşık veriler ve pano ile çalışırken, genellikle çalışma kitaplarımın farklı sürümlerini oluştururum. Bu, mevcut çalışma kitabımda bir şeyler ters gittiğinde yardımcı olur. En azından farklı bir adla kaydedilmiş bir kopyasına sahip olurdum (ve yalnızca bir kopya oluşturduktan sonra yaptığım işi kaybederdim).

İşte çalışma kitabınızın bir kopyasını oluşturacak ve belirtilen konuma kaydedecek VBA kodu.

Sub CreateaCopyofWorkbook() ThisWorkbook.SaveCopyAs Dosya Adı:="C:\Users\sumit\Desktop\BackupCopy.xlsm" End Sub

Yukarıdaki kod, bu makroyu her çalıştırdığınızda çalışma kitabınızın bir kopyasını kaydeder.

Bu harika çalışıyor olsa da, bu kodu her çalıştırdığımda farklı kopyalar kaydetmiş olsaydım daha rahat hissederdim. Bunun önemli olmasının nedeni, eğer yanlışlıkla bir hata yaparsam ve bu makroyu çalıştırırsam, yapılan işi hatalarla kurtaracak. Ve hatayı yapmadan önce çalışmaya erişimim olmazdı.

Bu tür durumlarla başa çıkmak için, her kaydettiğinizde çalışmanın yeni bir kopyasını kaydeden aşağıdaki kodu kullanabilirsiniz. Ayrıca, çalışma kitabı adının bir parçası olarak bir tarih ve zaman damgası da ekler. Bu, önceden oluşturulmuş yedeklemelerin hiçbirini kaybetmediğiniz için yaptığınız herhangi bir hatayı izlemenize yardımcı olabilir.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy" & Format(Now(), "gg-aa-yy-hh-aa-ss) -AMPM") & ".xlsm" End Sub

Yukarıdaki kod, bu makroyu her çalıştırdığınızda bir kopya oluşturur ve çalışma kitabı adına bir tarih/saat damgası ekler.

Her Çalışma Sayfası için Yeni Bir Çalışma Kitabı Oluşturun

Bazı durumlarda, birden çok çalışma sayfası içeren bir çalışma kitabınız olabilir ve her çalışma sayfası için bir çalışma kitabı oluşturmak isteyebilirsiniz.

Bu, tek bir çalışma kitabında aylık/üç aylık raporlarınız olduğunda ve bunları her çalışma sayfası için tek bir çalışma kitabına bölmek istediğinizde söz konusu olabilir.

Veya departman bilge raporlarınız varsa ve bunları ayrı ayrı çalışma kitaplarına bölmek istiyorsanız, bu ayrı çalışma kitaplarını departman başkanlarına gönderebilirsiniz.

İşte her çalışma sayfası için bir çalışma kitabı oluşturacak, ona çalışma sayfasıyla aynı adı verecek ve belirtilen klasöre kaydedecek kod.

Sub CreateWorkbookforWorksheets() Dim ws Çalışma Sayfası Olarak Karart wb As Workbook As Workbook In ThisWorkbook.Worksheets Set wb = Workbooks.Add ws.Copy Before:=wb.Sheets(1) Application.DisplayAlerts = False wb.Sheets(2).Delete Application.DisplayAlerts = True wb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx" wb.Close Next ws End Sub

Yukarıdaki kodda iki değişken 'ws' ve 'wb' kullandık.

Kod, her çalışma sayfasından geçer (ForEvery Next döngüsünü kullanarak) ve bunun için bir çalışma kitabı oluşturur. Ayrıca, yeni çalışma kitabında çalışma sayfasının bir kopyasını oluşturmak için çalışma sayfası nesnesinin kopyalama yöntemini kullanır.

Kod tarafından oluşturulan herhangi bir yeni çalışma kitabına 'wb' değişkenini atamak için SET deyimini kullandığımı unutmayın.

Bir değişkene bir çalışma kitabı nesnesi atamak için bu tekniği kullanabilirsiniz. Bu bir sonraki bölümde ele alınmıştır.

Bir Değişkene Çalışma Kitabı Nesnesi Atama

VBA'da, bir değişkene bir nesne atayabilir ve ardından bu nesneye başvurmak için değişkeni kullanabilirsiniz.

Örneğin, aşağıdaki kodda, yeni bir çalışma kitabı eklemek için VBA kullanıyorum ve ardından bu çalışma kitabını wb değişkenine atadım. Bunu yapmak için SET deyimini kullanmam gerekiyor.

Çalışma kitabını değişkene atadıktan sonra, çalışma kitabının tüm özellikleri de değişken için kullanılabilir hale getirilir.

Sub AssigntoVariable() Dim wb As Workbook Set wb = Workbooks.Add wb.SaveAs Dosya Adı:="C:\Users\sumit\Desktop\Examples.xlsx" End Sub

Koddaki ilk adımın 'wb'yi çalışma kitabı tipi bir değişken olarak bildirmek olduğunu unutmayın. Bu, VBA'ya bu değişkenin çalışma kitabı nesnesini tutabileceğini söyler.

Sonraki ifade, eklediğimiz yeni çalışma kitabına değişkeni atamak için SET'i kullanır. Bu atama yapıldıktan sonra, çalışma kitabını kaydetmek (veya onunla başka bir şey yapmak) için wb değişkenini kullanabiliriz.

Açık Çalışma Kitaplarında Döngü Yapma

Yukarıda kodda döngü kullanan birkaç örnek kod gördük.

Bu bölümde, VBA kullanarak açık çalışma kitaplarında dolaşmanın farklı yollarını açıklayacağım.

İçinde kod bulunan kitap dışındaki tüm açık çalışma kitaplarını kaydetmek ve kapatmak istediğinizi varsayalım, ardından aşağıdaki kodu kullanabilirsiniz:

Sub CloseandSaveWorkbooks() Çalışma Kitaplarındaki Her wb için wb'yi Dim wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Yukarıdaki kod, Çalışma Kitapları koleksiyonundaki her çalışma kitabını gözden geçirmek için Her İçin Döngüsünü kullanır. Bunu yapmak için önce çalışma kitabı tipi değişkeni olarak 'wb' tanımlamamız gerekiyor.

Her döngü döngüsünde, her çalışma kitabı adı analiz edilir ve kodun bulunduğu çalışma kitabının adıyla eşleşmezse içeriği kaydedildikten sonra kapatılır.

Aynısı, aşağıda gösterildiği gibi farklı bir döngü ile de elde edilebilir:

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Step -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Close SaveChanges:=True End If Next i End Sub

Yukarıdaki kod, içinde kod bulunan kitap dışındaki tüm çalışma kitaplarını kapatmak için Sonraki için döngüsünü kullanır. Bu durumda, bir çalışma kitabı değişkeni bildirmemize gerek yoktur, bunun yerine toplam açık çalışma kitabı sayısını saymamız gerekir. Sayımız olduğunda, her çalışma kitabını gözden geçirmek için Sonraki Döngüsünü kullanırız. Ayrıca, bu durumda çalışma kitaplarına atıfta bulunmak için dizin numarasını kullanırız.

Yukarıdaki kodda, Adım -1 ile WbCount'tan 1'e döngü yaptığımızı unutmayın. Bu, her döngüde olduğu gibi gereklidir, çalışma kitabı kapanır ve çalışma kitabı sayısı 1 azalır.

Çalışma Kitabı Nesnesiyle Çalışırken Hata (Çalışma zamanı hatası '9')

Çalışma kitaplarıyla çalışırken karşılaşabileceğiniz en yaygın hatalardan biri - Çalışma Zamanı Hatası '9' - Alt simge aralık dışıdır.

Genel olarak, VBA hataları çok bilgilendirici değildir ve genellikle neyin yanlış gittiğini çözmeyi size bırakır.

Bu hataya yol açabilecek olası nedenlerden bazıları şunlardır:

  • Erişmeye çalıştığınız çalışma kitabı mevcut değil. Örneğin, Çalışma Kitaplarını(5) kullanarak beşinci çalışma kitabına erişmeye çalışıyorsam ve yalnızca 4 çalışma kitabı açıksa, bu hatayı alırım.
  • Çalışma kitabına başvurmak için yanlış bir ad kullanıyorsanız. Örneğin, çalışma kitabınızın adı Example.xlsx ise ve Example.xlsx kullanıyorsanız. sonra size bu hatayı gösterecektir.
  • Bir çalışma kitabını kaydetmediyseniz ve uzantıyı kullanıyorsanız, bu hatayı alırsınız. Örneğin, çalışma kitabınızın adı Kitap1 ise ve Kitap1.xlsx adını kaydetmeden kullanırsanız bu hatayı alırsınız.
  • Erişmeye çalıştığınız çalışma kitabı kapalı.

Tüm Açık Çalışma Kitaplarının Listesini Alın

Geçerli çalışma kitabındaki (kodu çalıştırdığınız çalışma kitabı) tüm açık çalışma kitaplarının bir listesini almak istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range("A1").Activate For i = 1 To wbcount Range("A1").Offset(i - 1, 0). Değer = Çalışma Kitapları(i).Ad Sonraki i End Sub

Yukarıdaki kod, yeni bir çalışma sayfası ekler ve ardından tüm açık çalışma kitaplarının adını listeler.

Dosya yolunu da almak istiyorsanız, aşağıdaki kodu kullanabilirsiniz:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range("A1").Activate For i = 1 To wbcount Range("A1").Offset(i - 1, 0). Değer = Çalışma Kitapları(i).Yol & "\" & Çalışma Kitapları(i).Ad Sonraki i End Sub

Hücreye Çift Tıklayarak Belirtilen Çalışma Kitabını Açın

Excel çalışma kitapları için bir dosya yolları listeniz varsa, dosya yolunun bulunduğu hücreye çift tıklamak için aşağıdaki kodu kullanabilirsiniz ve bu çalışma kitabını açacaktır.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Workbooks.Open Target.Value End Sub

Bu kod ThisWorkbook kod penceresine yerleştirilecektir.

Bunu yapmak için:

  • Proje gezgininde ThisWorkbook nesnesine çift tıklayın. ThisWorkbook nesnesinin, bu işlevi istediğiniz çalışma kitabında olması gerektiğini unutmayın.
  • Yukarıdaki kodu kopyalayıp yapıştırın.

Şimdi, açmak istediğiniz dosyaların tam yoluna sahipseniz, dosya yolunu çift tıklatarak bunu yapabilirsiniz ve VBA bu çalışma kitabını anında açacaktır.

VBA Kodunu Nereye Koymalı

Excel çalışma kitabınızda VBA kodunun nereye gittiğini merak mı ediyorsunuz?

Excel'in VBA düzenleyicisi adı verilen bir VBA arka ucu vardır. Kodu kopyalayıp VB Editor modülü kod penceresine yapıştırmanız gerekir.

İşte bunu yapmak için adımlar:

  1. Geliştirici sekmesine gidin.
  2. Visual Basic seçeneğine tıklayın. Bu, arka uçta VB düzenleyicisini açacaktır.
  3. VB Düzenleyicisi'ndeki Proje Gezgini bölmesinde, kodu eklemek istediğiniz çalışma kitabı için herhangi bir nesneye sağ tıklayın. Proje Gezgini'ni görmüyorsanız, Görünüm sekmesine gidin ve Proje Gezgini'ne tıklayın.
  4. Ekle'ye gidin ve Modül'e tıklayın. Bu, çalışma kitabınız için bir modül nesnesi ekleyecektir.
  5. Modül penceresindeki kodu kopyalayıp yapıştırın.

Aşağıdaki Excel VBA Eğitimlerini de Beğenebilirsiniz:

  • Excel'de Makro Nasıl Kaydedilir.
  • Excel'de Kullanıcı Tanımlı İşlev Oluşturma.
  • Excel'de Eklenti Oluşturma ve Kullanma.
  • Kişisel Makro Çalışma Kitabına yerleştirerek Makroları Yeniden Başlatma.
  • Excel'deki bir Klasörden Dosya Adlarının Listesini Alın (VBA ile ve VBA olmadan).
  • Excel VBA InStr İşlevi Nasıl Kullanılır (pratik ÖRNEKLER ile).
  • VBA kullanarak Excel'de Veriler Nasıl Sıralanır (Adım Adım Kılavuz).

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave