Cara Membuka dan Mengisi Template dengan Excel VBA

Bagikan sekarang:

Templat Excel biasanya adalah buku kerja, dengan kerangka pelaporan, sering kali didukung oleh berbagai fungsi. Template (xltx) dapat digunakan berulang kali tanpa mencemari data. Setelah populasi dengan data, templat buku kerja disimpan sebagai xlsx, mempertahankan status perawan dari xltx itu sendiri.

Dalam latihan ini kita akan menggunakan kode VBA untuk membuka dan mengisi template. Templatenya dapat ditemukan di sini dan Excel Macro yang digunakan dapat ditemukan di sini.

Artikel ini mengasumsikan bahwa pembaca memiliki pita Pengembang yang ditampilkan dan terbiasa dengan Editor VBA. Jika tidak, harap Google "Tab Pengembang Excel" atau "Jendela Kode Excel".

Template

Pertama, kita akan membuat template tiruan, diisi dengan data, tabel pivot, dan bagan, sebagai berikut:

Buka file Excel baru. Ubah nama "Sheet1" menjadi "Bagan" dan "Sheet2" sebagai "Data"

Salin teks berikut, termasuk tajuk, ke D1 dari tab "Data":

Direktorat PekerjaanRef Gender
Anak-anak dan Keluarga CH SW2588 Perempuan
Anak-anak dan Keluarga CH RS2775 Perempuan
Anak-anak dan Keluarga CH SW2630 Perempuan
Anak-anak dan Keluarga CH RS2775 Pria
Anak-anak dan Keluarga CH CC2628 Perempuan
Anak-anak dan Keluarga CH HT2579 Perempuan
Komunitas kesehatan CW T (2559 Perempuan
Komunitas kesehatan CW QS2774 Perempuan
Komunitas kesehatan CW O2745 Pria
Lingkungan Hidup EE SM2814 Perempuan
Lingkungan Hidup EE IT2772 Pria
Lingkungan Hidup EE SO2784 Pria
Publikasi RSCO2557 Perempuan
Publikasi RS HO2539 Pria

Pilih semua data, termasuk tajuk kolom, dan sisipkan tabel pivot di A1 dari lembar "Data", seperti yang ditunjukkan di bawah ini.Sisipkan Tabel Pivot Di A1 Lembar "Data"

Buat diagram di tab "Bagan", menggunakan tabel pivot sebagai sumber data.Buat Bagan Pada Tab "Bagan"

Hapus data di D2: F15. Rentang data tabel pivot tidak perlu disetel ulang; biarkan itu terisi meskipun tidak ada data.  Hapus Data Di D2: F15

Simpan buku kerja sebagai “VacancyTemplate.xltx. ” di sub-direktori tempat buku kerja makro berada. Tanggapi "Tidak" untuk setiap peringatan dari Excel selama penyimpanan.

Kami juga membutuhkan sub-direktori Laporan. Sebagai contoh:

Laporan Excel (xlsm disimpan di sini)

| _template (xlxt disimpan di sini)

       | _Laporan (setiap xlsx disimpan di sini)

Setelah disimpan sebagai file xltx, tutup template

Makro

Buka buku kerja baru untuk menyimpan kode kita. Ubah nama "Sheet1" menjadi "Utama" dan "Sheet2" menjadi "Database".

Tempatkan tombol di "Utama" untuk menjalankan aplikasi.

Biasanya, data diambil dari database. Karena tidak semua orang memiliki database, sheet "Database" akan meniru tabel database.

Salin data yang terdapat di awal artikel ini ke tab “Basis Data” di A1…Salin data yang terdapat di awal artikel ini ke tab Database di A1.

Kode

Struktur kode di bawah ini dengan jelas mendefinisikan proses:

  • Dapatkan data dari "database";
  • Buka template;
  • Isi template dengan data dan setel ulang rentang data tabel pivot;
  • Simpan template sebagai laporan
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

Objek Data ActiveX

Untuk mensimulasikan pembacaan basis data, kita harus merujuk ke pustaka ActiveX. Lakukan ini melalui Tools > References dari jendela kode.Referensi Pustaka ActiveX

Uji Kode

Tetapkan tombol pada "Utama" untuk Sub Buku Kerawang. Simpan buku kerja sebagai "Mengisi Template.xlsm".

TUTUP buku kerja, dan buka kembali.

Tekan tombol untuk melihat hasilnya. Tingkatkan jumlah baris data di "Database", dan jalankan lagi, lihat apakah Bagan telah diperbarui dengan informasi tambahan.

Pada kode di atas kami telah menunjukkan template awal, dengan XL.Visible = Benar. Di lingkungan langsung, ini dapat dilakukan di bagian paling akhir, sehingga pembaruan layar tidak terlihat.

Atasi Bencana Data!

Tidak banyak hal yang lebih membuat frustrasi daripada file Excel yang sudah dikembangkan dengan matang tiba-tiba mengalami crash, merusak file sumber, dan tidak ada salinan cadangan yang tersedia. Dalam kasus seperti itu, di mana Excel gagal memulihkan file yang rusak, semua pekerjaan yang telah dilakukan akan hilang kecuali Anda memiliki alat yang siap digunakan. perbaiki Excel file.

Juga bijaksana untuk sering mencadangkan pekerjaan yang berharga.

Pengantar Penulis:

Felix Hooker adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk perbaikan langka dan produk perangkat lunak pemulihan sql. Untuk informasi lebih lanjut kunjungi www.datanumen.com

Bagikan sekarang:

Komentar ditutup.