Paano Buksan at Populate ang Template gamit ang Excel VBA

Ipamahagi ngayon:

Ang Mga Template ng Excel ay karaniwang mga workbook, na may balangkas sa pag-uulat, na madalas na sinusuportahan ng mga pagpapaandar. Ang isang template (xltx) ay maaaring magamit nang paulit-ulit nang hindi nadumhan ito ng data. Matapos ang populasyon na may data, ang isang workbook ng template ay nai-save bilang isang xlsx, pinapanatili ang estado ng birhen ng xltx mismo.

Sa pagsasanay na ito gagamitin namin ang VBA code upang mabuksan at mapuno ang isang template. Ang template Maaaring matagpuan dito at Excel Macro na ginamit ay matatagpuan dito.

Ipinapalagay ng artikulong ito na ang mambabasa ay ipinapakita ang Developer ribbon at pamilyar sa VBA Editor. Kung hindi, mangyaring Google "Excel Developer Tab" o "Excel Code Window".

Ang Template

Una, gagawa kami ng isang template ng dummy, na pinuno ng data, isang pivot table at isang tsart, tulad ng sumusunod:

Magbukas ng isang bagong file na Excel. Palitan ang pangalan ng "Sheet1" bilang "Chart" at "Sheet2" bilang "Data"

Kopyahin ang sumusunod na teksto, kasama ang mga heading, sa D1 ng tab na "Data":

Direktor JobRef Kasarian
Mga Bata at Pamilya CH SW2588 Babae
Mga Bata at Pamilya CH RS2775 Babae
Mga Bata at Pamilya CH SW2630 Babae
Mga Bata at Pamilya CH RS2775 Lalaki
Mga Bata at Pamilya CH CC2628 Babae
Mga Bata at Pamilya CH HT2579 Babae
Kalusugang pang-komunidad CW T (2559 Babae
Kalusugang pang-komunidad CW QS2774 Babae
Kalusugang pang-komunidad CW O2745 Lalaki
kapaligiran EE SM2814 Babae
kapaligiran EE IT2772 Lalaki
kapaligiran EE SO2784 Lalaki
Mga mapagkukunan RS CO2557 Babae
Mga mapagkukunan RS HO2539 Lalaki

Piliin ang lahat ng data, kabilang ang mga heading ng haligi, at maglagay ng talahanayan ng pivot sa A1 ng sheet na "Data", tulad ng ipinakita sa ibaba.Magsingit ng Isang Pivot Table Sa A1 Ng "Data" Sheet

Lumikha ng isang tsart sa tab na "Tsart", gamit ang talahanayan ng pivot bilang isang mapagkukunan ng data.Lumikha ng Isang Tsart Sa Tab na "Tsart"

Alisin ang data sa D2: F15. Hindi kinakailangan upang i-reset ang hanay ng data ng talahanayan ng pivot; iwanan itong populasyon kahit na walang data.  Alisin Ang Data Sa D2: F15

I-save ang workbook bilang "VacancyTemplate.xltx. " sa isang sub-direktoryo ng isa kung saan ang makro workbook ay naninirahan. Tumugon sa "Hindi" sa anumang mga alerto mula sa Excel habang nai-save.

Kakailanganin din namin ang isang sub-direktoryo ng Mga Ulat. Halimbawa:

Mga Ulat sa Excel (xlsm na nakaimbak dito)

| _Template (xlxt nakaimbak dito)

       | _Report (bawat xlsx ay nai-save dito)

Sa sandaling nai-save bilang isang xltx, isara ang template

Ang Macro

Magbukas ng isang bagong workbook upang hawakan ang aming code. Palitan ang pangalan ng "Sheet1" bilang "Pangunahin" at "Sheet2" bilang "Database".

Maglagay ng isang pindutan sa "Pangunahin" upang himukin ang application.

Karaniwan, ang data ay nakuha mula sa mga database. Dahil hindi lahat ay may isang madaling gamiting database, ang sheet na "Database" ay tutulad sa isang talahanayan ng database.

Kopyahin ang datos na matatagpuan sa simula ng artikulong ito papunta sa tab na "Database" sa A1...Kopyahin ang Datos na Matatagpuan sa Simula ng Artikulo na Ito Papunta sa Tab ng Database sa A1

Ang Kodigo

Ang istraktura ng code sa ibaba ay malinaw na tumutukoy sa mga proseso:

  • Kunin ang data mula sa "database";
  • Buksan ang template;
  • Populate ang template gamit ang data at i-reset ang hanay ng data ng pivot table;
  • I-save ang template bilang isang ulat
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

Mga Object ng Data ng ActiveX

Para gayahin ang pagbasa ng database, kailangan nating i-reference ang Active X library. Gawin ito sa pamamagitan ng Tools>References mula sa code window.Sanggunian Ang Aklatan ng Active X

Subukan ang Code

Italaga ang pindutan sa "Pangunahin" sa Sub Openbookbook. I-save ang workbook bilang "Populate Templates.xlsm".

ISADAD ang workbook, at muling buksan ito.

Pindutin ang pindutan na tingnan ang resulta. Taasan ang bilang ng mga hilera ng data sa "Database", at patakbuhin muli, nakikita kung na-update ang Tsart na may karagdagang impormasyon.

Sa code sa itaas ipinakita namin ang template nang maaga, kasama ang XL.Visible = Tama. Sa live na kapaligiran, magagawa ito sa pinakadulo, upang ang mga pag-update sa screen ay hindi nakikita.

Makitungo sa Data Disaster!

Iilang bagay ang mas nakakadismaya kaysa sa isang Excel file na lubos na na-develop, na sumisira sa source file, at walang magagamit na backup copy. Sa ganitong mga pagkakataon, kung saan nabigo ang Excel na mabawi ang nasirang file, mawawala ang lahat ng trabahong ginawa dito maliban kung mayroon kang tool na madaling gamitin. ayusin ang Excel file.

Maingat din na madalas na mag-back up ng mahalagang trabaho.

Panimula ng May-akda:

Si Felix Hooker ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang pagkukumpuni ng rar at mga produkto ng software sa pag-recover ng sql. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.