Excel VBA ile Şablon Nasıl Açılır ve Doldurulur

Şimdi paylaş:

Excel Şablonları genellikle, genellikle işlevler tarafından desteklenen bir raporlama çerçevesine sahip çalışma kitaplarıdır. A şablonları (xltx), verilerle kirletilmeden tekrar tekrar kullanılabilir. Verilerle doldurma işleminden sonra, bir şablon çalışma kitabı bir xlsx olarak kaydedilir ve xltx'in bakir durumu korunur.

Bu alıştırmada, bir şablonu açmak ve doldurmak için VBA kodunu kullanacağız. Şablon bulunabilir okuyun ve kullanılan Excel Makrosu bulunabilir. okuyun.

Bu makalede, okuyucunun Geliştirici şeridinin görüntülendiği ve VBA Düzenleyicisine aşina olduğu varsayılmaktadır. Değilse, lütfen Google "Excel Geliştirici Sekmesi" veya "Excel Kod Penceresi".

Şablon

İlk olarak, aşağıdaki gibi veriler, bir pivot tablo ve bir grafikle doldurulmuş sahte bir şablon oluşturacağız:

Yeni bir Excel dosyası açın. "Sayfa1"i "Grafik" ve "Sayfa2"yi "Veri" olarak yeniden adlandırın

Başlıklar dahil olmak üzere aşağıdaki metni "Veri" sekmesinin D1'ine kopyalayın:

müdürlük İşRef Cinsiyet
Çocuklar ve Aile CH SW2588 Kadın
Çocuklar ve Aile CH RS2775 Kadın
Çocuklar ve Aile CH SW2630 Kadın
Çocuklar ve Aile CH RS2775 Erkek
Çocuklar ve Aile CH CC2628 Kadın
Çocuklar ve Aile CH HT2579 Kadın
Toplum Sağlığı Sağ T(2559 Kadın
Toplum Sağlığı CW QS2774 Kadın
Toplum Sağlığı CW O2745 Erkek
çevre EE SM2814 Kadın
çevre EE IT2772 Erkek
çevre SO2784 Erkek
Kaynaklar RS CO2557 Kadın
Kaynaklar RS HO2539 Erkek

Sütun başlıkları dahil tüm verileri seçin ve aşağıda gösterildiği gibi "Veri" sayfasının A1 noktasına bir pivot tablo ekleyin.“Veri” Sayfasının A1 Noktasına Bir Pivot Tablo Ekleme

Pivot tabloyu veri kaynağı olarak kullanarak "Grafik" sekmesinde bir grafik oluşturun.“Grafik” Sekmesinde Bir Grafik Oluşturun

D2:F15'teki verileri kaldırın. Pivot tablo veri aralığını sıfırlamak gerekli değildir; veri olmasa bile dolu bırakın.  D2:F15'teki Verileri Kaldır

Çalışma kitabını “VacancyTemplate.txt” olarak kaydedin.xltx” makro çalışma kitabının bulunacağı alt dizinde. Kaydetme sırasında Excel'den gelen uyarılara "Hayır" yanıtı verin.

Ayrıca bir Raporlar alt dizinine de ihtiyacımız olacak. Örneğin:

Excel Raporları (xlsm burada saklanır)

|_Şablonlar (xlxt burada saklanır)

       |_Raporlar (buraya kaydedilen her xlsx)

olarak kaydedildikten sonra xltx, şablonu kapatın

Makro

Kodumuzu tutmak için yeni bir çalışma kitabı açın. "Sayfa1"i "Ana" ve "Sayfa2"yi "Veritabanı" olarak yeniden adlandırın.

Uygulamayı çalıştırmak için "Ana" üzerine bir düğme yerleştirin.

Normalde, veriler veritabanlarından alınır. Herkesin kullanışlı bir veritabanı olmadığından, "Veritabanı" sayfası bir veritabanı tablosunu taklit edecektir.

Bu makalenin başında bulunan verileri A1 hücresindeki “Veritabanı” sekmesine kopyalayın…Bu makalenin başında bulunan verileri A1 hücresindeki Veritabanı sekmesine kopyalayın.

Kod

Aşağıdaki kod yapısı süreçleri açıkça tanımlar:

  • Verileri “veritabanından” alın;
  • Şablonu açın;
  • Şablonu verilerle doldurun ve pivot tablo veri aralığını sıfırlayın;
  • Şablonu rapor olarak kaydedin
Option Explicit
    'Create objects to represent the template workbook and worksheets
    Public wb As Object
    Public XL As Object
    Public connDB As New ADODB.Connection
    Public rs As ADODB.Recordset
    Public eRow As Integer
    Public eRec As Integer
    Public dDate As String

Sub openWorksheet()
    Call GetData
    Call OpenTemplate
    Call PopulateTemplate
    
    'Save template as datestamped xlsx
    On Error Resume Next
    dDate = Format(Now(), "yyyy.mm.dd")
    wb.SaveAs Filename:=ActiveWorkbook.Path & "\Reports\Vacancies" & dDate & ".xlsx", _
         FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

     Sheets("Main").Activate        'Move off the database tab
     wb.Activate            'Bring the chart to the fore
     Set wb = Nothing
     Set XL = Nothing
     Set rs = Nothing
     Set connDB = Nothing
End Sub

Sub GetData()
    'Emulate database retrieval
    If connDB.State = 1 Then connDB.Close
    Sheets("Database").Activate
    Sheets("Database").Range("A1").Select
    Selection.End(xlDown).Select
    
    eRec = ActiveCell.Row - 1 'establish how many records will be in the recordset
                     'This step won't be needed in a database environment
    eRow = ActiveCell.Row   'the end row, used later in the template
    
    connDB.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
      "Data Source=" & ActiveWorkbook.FullName & ";" & _
      "Extended Properties=Excel 12.0;"
        
    Set rs = New ADODB.Recordset
    rs.Open "Select top " & eRec & " * from [Database$]", connDB, , , adCmdText
End Sub

 Sub OpenTemplate()
    Set XL = CreateObject("Excel.Application")
    XL.Visible = True       'enables us to see what's happening on debug.
    XL.Workbooks.Add ActiveWorkbook.Path & "\Templates\VacancyTemplate.xltx"
    Set wb = XL.ActiveWorkbook             'the new workbook is referenced by "wb"
 End Sub
 
 Sub PopulateTemplate()
    wb.Sheets("Data").Activate
    wb.Sheets("Data").Range("D2").CopyFromRecordset rs
    wb.Sheets("Data").Range("A1").Select
    
    'resize the range driving the pivot table, using the eRow variable.
    wb.Sheets("Data").PivotTables("PivotTable1").ChangePivotCache wb. _
        PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Data!R1C4:R" & eRow & "C6", _
        Version:=xlPivotTableVersion14)
    wb.Sheets("Chart").Select

 End Sub

ActiveX Veri Nesneleri

Veritabanı okuma işlemini simüle etmek için ActiveX kütüphanesine referans vermemiz gerekiyor. Bunu kod penceresinden Araçlar > Referanslar yoluyla yapabilirsiniz.ActiveX Kütüphanesine bakın.

Kodu Test Et

“Ana” üzerindeki düğmeyi şuna atayın: Alt Openworkbook. Çalışma kitabını “Populating Templates.xlsm” olarak kaydedin.

Çalışma kitabını KAPATIN ve yeniden açın.

Sonucu görüntülemek için düğmeye basın. "Veritabanı"ndaki veri satırlarının sayısını artırın ve Grafiğin ek bilgilerle güncellenip güncellenmediğini kontrol ederek tekrar çalıştırın.

Yukarıdaki kodda, şablonu erkenden gösterdik. XL.Görünür = Doğru. Canlı ortamda bu en sonda yapılabilir, böylece ekran güncellemeleri görünmez.

Veri Felaketi ile Başa Çıkın!

Gelişmiş bir Excel dosyasının çökmesi, kaynak dosyayı bozması ve yedek kopyasının bulunmaması kadar sinir bozucu az şey vardır. Excel'in hasarlı dosyayı kurtaramadığı bu gibi durumlarda, elinizde bir kurtarma aracı yoksa, üzerinde yapılan tüm çalışmalar kaybolur. Excel'i düzelt dosyaları.

Değerli işleri sık sık yedeklemek de ihtiyatlı bir davranıştır.

Yazar Tanıtımı:

Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. rar onarımı ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.