Cum să deschideți și să completați șablonul cu Excel VBA

Distribuie acum:

Șabloanele Excel sunt de obicei registre de lucru, cu un cadru de raportare, adesea susținut de funcții. Un șabloane (xltx) poate fi folosit din nou și din nou fără a-l polua cu date. După popularea cu date, un registru de lucru șablon este salvat ca xlsx, păstrând starea virgină a xltx-ului însuși.

În acest exercițiu vom folosi codul VBA pentru a deschide și a popula un șablon. Șablonul pot fi găsite aici și Macro Excel utilizate pot fi găsite aici.

Acest articol presupune că cititorul are afișată panglica pentru dezvoltatori și este familiarizat cu Editorul VBA. Dacă nu, vă rugăm să Google „Fila Dezvoltator Excel” sau „Fereastra Cod Excel”.

Şablonul

Mai întâi, vom construi un șablon inactiv, populat cu date, un tabel pivot și o diagramă, după cum urmează:

Deschideți un nou fișier Excel. Redenumiți „Sheet1” ca „Chart” și „Sheet2” ca „Date”

Copiați următorul text, inclusiv titlurile, în D1 din fila „Date”:

Direcţie JobRef Gen
Copii și familie CH SW2588 Femeie
Copii și familie CH RS2775 Femeie
Copii și familie CH SW2630 Femeie
Copii și familie CH RS2775 Masculin
Copii și familie CH CC2628 Femeie
Copii și familie CH HT2579 Femeie
Sănătate comunitară CW T(2559 Femeie
Sănătate comunitară CW QS2774 Femeie
Sănătate comunitară CW O2745 Masculin
Mediu inconjurator EE SM2814 Femeie
Mediu inconjurator EE IT2772 Masculin
Mediu inconjurator EE SO2784 Masculin
Resurse RS CO2557 Femeie
Resurse RS HO2539 Masculin

Selectați toate datele, inclusiv titlurile coloanelor și introduceți un tabel pivot la A1 din foaia „Date”, așa cum se arată mai jos.Introduceți un tabel pivot la A1 al fișei „Date”.

Creați o diagramă în fila „Grafic”, folosind tabelul pivot ca sursă de date.Creați o diagramă în fila „Grafic”.

Eliminați datele din D2:F15. Nu este necesar să resetați intervalul de date din tabelul pivot; lăsați-l populat chiar dacă nu există date.  Eliminați datele din D2:F15

Salvați registrul de lucru ca „VacancyTemplate.xltx.” într-un subdirector al celui în care urmează să se găsească registrul de lucru macro. Răspundeți „Nu” la orice alerte din Excel în timpul salvării.

De asemenea, vom avea nevoie de un subdirector Rapoarte. De exemplu:

Rapoarte Excel (xlsm stocat aici)

|_Șabloane (xlxt stocat aici)

       |_Rapoarte (fiecare xlsx salvat aici)

Odată salvat ca un xltx, închideți șablonul

Macro

Deschideți un nou registru de lucru pentru a păstra codul nostru. Redenumiți „Sheet1” ca „Main” și „Sheet2” ca „Database”.

Plasați un buton pe „Principal” pentru a conduce aplicația.

În mod normal, datele sunt preluate din baze de date. Deoarece nu toată lumea are o bază de date la îndemână, foaia „Bază de date” va emula un tabel al bazei de date.

Copiați datele găsite la începutul acestui articol în fila „Bază de date” la A1…Copiați datele găsite la începutul acestui articol în fila Bază de date la A1

Codul

Structura de cod de mai jos definește clar procesele:

  • Obțineți datele din „baza de date”;
  • Deschide șablonul;
  • Completați șablonul cu datele și resetați intervalul de date din tabelul pivot;
  • Salvați șablonul ca raport
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

Obiecte de date ActiveX

Pentru a simula o citire a bazei de date, trebuie să facem referire la biblioteca Active X. Faceți acest lucru prin intermediul Instrumente>Referințe din fereastra de cod.Referință Biblioteca Active X

Testați Codul

Atribuiți butonul de pe „Principal”. Sub Caiet de lucru deschis. Salvați registrul de lucru ca „Populating Templates.xlsm”.

ÎNCHIDE registrul de lucru și redeschide-l.

Apăsați butonul pentru a vedea rezultatul. Măriți numărul de rânduri de date din „Bază de date” și rulați din nou, văzând dacă diagrama a fost actualizată cu informații suplimentare.

În codul de mai sus am arătat șablonul devreme, cu XL.Vizibil = Adevărat. În mediul live, acest lucru se poate face chiar la sfârșit, astfel încât actualizările ecranului să nu fie vizibile.

Faceți față dezastrului de date!

Puține lucruri sunt mai frustrante decât un fișier Excel prea elaborat care se blochează, corupe fișierul sursă și nu are nicio copie de rezervă disponibilă. În astfel de cazuri, în care Excel nu reușește să recupereze fișierul deteriorat, toată munca depusă asupra acestuia se pierde, cu excepția cazului în care aveți la îndemână un instrument pentru a... repara Excel fișiere.

De asemenea, este prudent să faceți backup frecvent pentru lucrările valoroase.

Introducerea autorului:

Felix Hooker este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv reparare rar și produse software de recuperare sql. Pentru mai multe informații vizitați www.datanumen.com

Distribuie acum:

Comentariile sunt închise.