Excel VBA ilə şablonu necə açmaq və doldurmaq olar

İndi paylaş:

Excel Şablonları adətən funksiyalar tərəfindən dəstəklənən hesabat çərçivəsi olan iş kitablarıdır. Şablonlar (xltx) onu məlumatlarla çirkləndirmədən dəfələrlə istifadə edilə bilər. Məlumatlarla yığımdan sonra şablon iş kitabı xltx-in özünün bakirə vəziyyətini saxlayaraq xlsx kimi saxlanılır.

Bu məşqdə şablonu açmaq və doldurmaq üçün VBA kodundan istifadə edəcəyik. Şablon bilər burada və istifadə Excel makro tapa bilərsiniz burada.

Bu məqalə oxucunun Tərtibatçı lentinin göstərildiyini və VBA Redaktoru ilə tanış olduğunu güman edir. Əgər belə deyilsə, lütfən Google “Excel Developer Tab” və ya “Excel Code Window”.

Şablon

Birincisi, biz aşağıdakı kimi məlumatlar, pivot cədvəli və diaqramla doldurulmuş dummy şablon quracağıq:

Yeni Excel faylı açın. “Cədvəl1”in adını “Chart” və “Sheet2”nin adını “Data” olaraq dəyişdirin

Aşağıdakı mətni, o cümlədən başlıqları “Məlumat” nişanının D1-ə köçürün:

Müdiriyyət İş Ref Cins
Uşaqlar və ailə CH SW2588 Qadın
Uşaqlar və ailə CH RS2775 Qadın
Uşaqlar və ailə CH SW2630 Qadın
Uşaqlar və ailə CH RS2775 Kişi
Uşaqlar və ailə CH CC2628 Qadın
Uşaqlar və ailə CH HT2579 Qadın
İcma Sağlamlığı CW T(2559 Qadın
İcma Sağlamlığı CW QS2774 Qadın
İcma Sağlamlığı CW O2745 Kişi
ətraf mühit EE SM2814 Qadın
ətraf mühit EE IT2772 Kişi
ətraf mühit EE SO2784 Kişi
Resources RS CO2557 Qadın
Resources RS HO2539 Kişi

Sütun başlıqları daxil olmaqla bütün məlumatları seçin və aşağıda göstərildiyi kimi “Məlumat” vərəqinin A1-də pivot cədvəli daxil edin.“Məlumat” Vərəqinin A1-də Pivot Cədvəli daxil edin

Məlumat mənbəyi kimi pivot cədvəlindən istifadə edərək, “Chart” tabında diaqram yaradın."Qrafik" sekmesinde bir diaqram yaradın

D2:F15-dəki məlumatları silin. Pivot cədvəlinin məlumat diapazonunu sıfırlamaq lazım deyil; heç bir məlumat olmasa belə onu məskunlaşdırın.  D2:F15-dəki məlumatları silin

İş kitabını “Vacancy Template.xltx.” makro iş kitabının yerləşəcəyi alt kataloqda. Saxlama zamanı Excel-dən gələn hər hansı xəbərdarlıqlara "Xeyr" cavabını verin.

Bizə həmçinin Hesabatlar alt kataloquna ehtiyacımız olacaq. Misal üçün:

Excel Hesabatları (xlsm burada saxlanılır)

|_Şablonlar (xlxt burada saxlanılır)

       |_Hesabatlar (hər xlsx burada saxlanılır)

Bir dəfə olaraq qeyd edildi xltx, şablonu bağlayın

Makro

Kodumuzu saxlamaq üçün yeni iş kitabı açın. “Cədvəl1”in adını “Əsas” və “Vədvəl2”nin adını “Verilənlər bazası” olaraq dəyişdirin.

Proqramı idarə etmək üçün "Əsas" üzərinə bir düymə qoyun.

Normalda məlumatlar verilənlər bazalarından alınır. Hər kəsin məlumat bazası olmadığı üçün “Verilənlər bazası” cədvəli verilənlər bazası cədvəlini təqlid edəcəkdir.

Bu məqalənin əvvəlində tapılan məlumatları A1-dəki “Verilənlər Bazası” sekmesine kopyalayın...Bu məqalənin əvvəlində tapılan məlumatları A1-dəki Verilənlər Bazası sekmesine kopyalayın

Kod

Aşağıdakı kod strukturu prosesləri aydın şəkildə müəyyənləşdirir:

  • "Məlumat bazasından" məlumatları əldə edin;
  • Şablonu açın;
  • Şablonu verilənlərlə doldurun və pivot cədvəl məlumat diapazonunu sıfırlayın;
  • Şablonu hesabat kimi yadda saxlayın
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 məlumat obyektləri

Verilənlər bazasının oxunmasını simulyasiya etmək üçün Active X kitabxanasına istinad etməliyik. Bunu kod pəncərəsindən Alətlər>Referanslar vasitəsilə edin.Active X Kitabxanasına istinad edin

Kodu sınayın

"Əsas" düyməsini təyin edin Alt açıq iş dəftəri. İş kitabını “Populating Templates.xlsm” kimi saxlayın.

İş dəftərini bağlayın və yenidən açın.

Nəticəyə baxmaq düyməsini sıxın. “Verilənlər bazası”nda verilənlər sətirlərinin sayını artırın və Diaqramın əlavə məlumatla yenilənib-yenilənilmədiyini yoxlayın.

Yuxarıdakı kodda biz şablonu erkən göstərdik XL.Visible = Doğrudur. Canlı mühitdə bu, ekran yeniləmələrinin görünməməsi üçün ən sonunda edilə bilər.

Data fəlakəti ilə mübarizə aparın!

Çox inkişaf etmiş bir Excel faylının sıradan çıxması, mənbə faylının zədələnməsi və ehtiyat nüsxəsinin olmamasından daha məyusedici bir şey yoxdur. Belə hallarda, Excel zədələnmiş faylı bərpa edə bilmədikdə, əlinizdə bir alət olmadığı təqdirdə, üzərində görülən bütün işlər itirilir. Excel-i düzəldin files.

Dəyərli işlərin tez-tez ehtiyat nüsxəsini çıxarmaq da ehtiyatlıdır.

Müəllif Giriş:

Feliks Hooker məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc rar təmiri və sql bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com

İndi paylaş:

Şərhlər bağlıdır.