Ako otvoriť a naplniť šablónu pomocou programu Excel VBA

Zdieľať teraz:

Šablóny programu Excel sú zvyčajne zošity s rámcom prehľadov, ktoré často podporujú funkcie. Šablóny (xltx) je možné používať opakovane bez toho, aby ste ich znečisťovali údajmi. Po naplnení údajmi sa zošit šablóny uloží ako súbor xlsx, čím sa zachová panenský stav samotného súboru xltx.

V tomto cvičení použijeme kód VBA na otvorenie a vyplnenie šablóny. Šablóna možno nájsť tu a použité Excel Makro nájdete tu.

Tento článok predpokladá, že čitateľ má zobrazenú pásku pre vývojárov a je oboznámený s editorom VBA. Ak nie, navštívte Google kartu „Vývojár Excel“ alebo „Okno kódu Excel“.

Šablóna

Najskôr vytvoríme fiktívnu šablónu vyplnenú údajmi, kontingenčnou tabuľkou a grafom, a to nasledovne:

Otvorte nový súbor programu Excel. Premenujte „List1“ na „Graf“ a „List2“ na „Údaje“

Skopírujte nasledujúci text vrátane nadpisov do časti D1 na karte „Údaje“:

riaditeľstvo JobRef Rod
Deti a rodina CH SW2588 Žena
Deti a rodina CH RS2775 Žena
Deti a rodina CH SW2630 Žena
Deti a rodina CH RS2775 Muž
Deti a rodina CH CC2628 Žena
Deti a rodina CH HT2579 Žena
Zdravie Spoločenstva CW T (2559 Žena
Zdravie Spoločenstva CW QS2774 Žena
Zdravie Spoločenstva CW O2745 Muž
prostredie EE SM2814 Žena
prostredie EE IT2772 Muž
prostredie EE SO2784 Muž
Zdroje RS CO2557 Žena
Zdroje RS HO2539 Muž

Vyberte všetky údaje vrátane nadpisov stĺpcov a vložte kontingenčnú tabuľku do bodu A1 listu „Údaje“, ako je uvedené nižšie.Vložte kontingenčnú tabuľku do A1 tabuľky s údajmi

Vytvorte graf na karte „Graf“ pomocou kontingenčnej tabuľky ako zdroja údajov.Vytvorte graf na karte „Graf“

Odstráňte údaje z D2: F15. Nie je potrebné resetovať rozsah údajov kontingenčnej tabuľky; nechajte ho vyplnený, aj keď nie sú k dispozícii žiadne údaje.  Odstráňte údaje z D2: F15

Uložte zošit ako „VacancyTemplate.xltx. “ v podadresári toho, v ktorom sa má nachádzať zošit makra. Počas ukladania odpovedzte „nie“ na akékoľvek upozornenia z Excelu.

Budeme tiež potrebovať podadresár Reports. Napríklad:

Správy programu Excel (xlsm uložený tu)

| _šablóny (tu je uložený xlxt)

       | _Správy (každý xlsx tu bol uložený)

Po uložení ako xltx, zavrite šablónu

Makro

Otvorte nový zošit, v ktorom bude uložený náš kód. Premenujte „List1“ na „Hlavný“ a „List2“ na „Databáza“.

Ak chcete spustiť aplikáciu, umiestnite tlačidlo na „Hlavná“.

Za normálnych okolností sa údaje získavajú z databáz. Pretože nie každý má databázu po ruke, list „Databáza“ bude emulovať databázovú tabuľku.

Skopírujte údaje z úvodu tohto článku do záložky „Databáza“ na A1…Skopírujte údaje z začiatku tohto článku do záložky Databáza na A1

Kódex

Štruktúra kódu nižšie jasne definuje procesy:

  • Získajte údaje z „databázy“;
  • Otvorte šablónu;
  • Vyplňte šablónu údajmi a vynulujte rozsah údajov kontingenčnej tabuľky;
  • Šablónu uložte ako správu
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

Dátové objekty ActiveX

Aby sme mohli simulovať čítanie z databázy, musíme odkazovať na knižnicu Active X. Urobíme to cez Nástroje>Odkazy v okne kódu.Referencia Knižnica Active X

Vyskúšajte kód

Priraďte tlačidlo na „hlavnej“ k Vedľajší openworkbook. Uložte zošit ako „Populating Templates.xlsm“.

ZATVORTE zošit a znova ho otvorte.

Stlačením tlačidla zobrazíte výsledok. Zvýšte počet riadkov údajov v databáze a znova spustite databázu, aby ste zistili, či bol graf aktualizovaný o ďalšie informácie.

V kóde vyššie sme šablónu zobrazili skôr, s XL.Visible = Pravda. V živom prostredí je to možné urobiť úplne na konci, takže aktualizácie obrazovky nie sú viditeľné.

Zaoberajte sa katastrofou dát!

Len málo vecí je frustrujúcejších ako zlyhanie rozsiahlo vyvíjaného súboru programu Excel, poškodenie zdrojového súboru a absencia záložnej kópie. V takýchto prípadoch, keď sa programu Excel nepodarí obnoviť poškodený súbor, všetka práca na ňom sa stratí, pokiaľ nemáte po ruke nástroj na jeho obnovenie. opraviť Excel súbory.

Je tiež rozumné často zálohovať hodnotnú prácu.

Úvod autora:

Felix Hooker je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava súboru RAR a softvérové ​​produkty na obnovenie sql. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.