Kako otvoriti i popuniti predložak pomoću Excel VBA

Podijeli sada:

Excel predlošci su obično radne knjige, sa okvirom za izveštavanje, često podržanim funkcijama. Predlošci (xltx) se mogu koristiti iznova i iznova bez zagađivanja podacima. Nakon popunjavanja podacima, radna knjiga šablona se sprema kao xlsx, čuvajući prvobitno stanje samog xltx-a.

U ovoj vježbi ćemo koristiti VBA kod za otvaranje i popunjavanje šablona. Šablon može se naći OVDJE i Excel Macro koji se koristi može se pronaći OVDJE.

Ovaj članak pretpostavlja da čitač ima prikazanu traku programera i da je upoznat sa VBA Editorom. Ako ne, molimo Google "Excel Developer Tab" ili "Excel Code Window".

The Template

Prvo ćemo napraviti lažni predložak, popunjen podacima, zaokretnom tablicom i grafikonom, kako slijedi:

Otvorite novu Excel datoteku. Preimenujte “Sheet1” u “Chart” i “Sheet2” u “Data”

Kopirajte sljedeći tekst, uključujući naslove, u D1 kartice "Podaci":

Direkcija JobRef pol
Djeca i porodica CH SW2588 ženski
Djeca i porodica CH RS2775 ženski
Djeca i porodica CH SW2630 ženski
Djeca i porodica CH RS2775 muški
Djeca i porodica CH CC2628 ženski
Djeca i porodica CH HT2579 ženski
Zdravlje zajednice CW T(2559 ženski
Zdravlje zajednice CW QS2774 ženski
Zdravlje zajednice CW O2745 muški
ambijent EE SM2814 ženski
ambijent EE IT2772 muški
ambijent EE SO2784 muški
sredstva RS CO2557 ženski
sredstva RS HO2539 muški

Odaberite sve podatke, uključujući naslove kolona, ​​i umetnite stožernu tabelu na A1 lista „Podaci“, kao što je prikazano ispod.Umetnite zaokretnu tabelu na A1 lista „Podaci“.

Napravite grafikon na kartici „Grafikon“, koristeći zaokretnu tabelu kao izvor podataka.Kreirajte grafikon na kartici “Grafikon”.

Uklonite podatke u D2:F15. Nije potrebno resetovati opseg podataka zaokretne tabele; ostavite ga popunjenim čak i ako nema podataka.  Uklonite podatke u D2:F15

Sačuvajte radnu svesku kao „VacancyTemplate.xltx.” u poddirektoriju onog u kojem se nalazi makro radna knjiga. Odgovorite “Ne” na sva upozorenja iz programa Excel tokom spremanja.

Trebat će nam i poddirektorij Reports. Na primjer:

Excel Izvještaji (xlsm pohranjen ovdje)

|_Obrasci (xlxt pohranjen ovdje)

       |_Izvještaji (svaki xlsx sačuvan ovdje)

Jednom sačuvan kao xltx, zatvorite šablon

Makro

Otvorite novu radnu svesku da držite naš kod. Preimenujte “Sheet1” u “Main” i “Sheet2” u “Database”.

Postavite dugme na “Glavno” da pokrenete aplikaciju.

Obično se podaci preuzimaju iz baza podataka. Pošto nemaju svi pri ruci bazu podataka, list „Baza podataka“ će emulirati tabelu baze podataka.

Kopirajte podatke s početka ovog članka u karticu "Baza podataka" na A1...Kopirajte podatke pronađene na početku ovog članka u karticu baze podataka na A1

Kodeks

Struktura koda u nastavku jasno definira procese:

  • Uzmite podatke iz “baze podataka”;
  • Otvorite šablon;
  • Popunite predložak podacima i resetirajte raspon podataka zaokretne tablice;
  • Sačuvajte šablon kao izveštaj
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 objekti podataka

Da bismo simulirali čitanje baze podataka, moramo referencirati Active X biblioteku. To možemo učiniti putem Tools>References iz prozora koda.Referenca Active X biblioteka

Testirajte kod

Dodijelite dugme na “Main” za Sub Openworkbook. Sačuvajte radnu svesku kao “Populating Templates.xlsm”.

ZATVORI radnu svesku i ponovo je otvori.

Pritisnite dugme da vidite rezultat. Povećajte broj redova podataka u „Bazi podataka“ i pokrenite ponovo, da vidite da li je grafikon ažuriran dodatnim informacijama.

U kodu iznad prikazali smo predložak ranije, sa XL.Visible = Tačno. U živom okruženju to se može uraditi na samom kraju, tako da ažuriranja ekrana nisu vidljiva.

Suočite se s katastrofom podataka!

Malo je stvari koje su frustrirajuće od pada dugo razvijane Excel datoteke, oštećenja izvorne datoteke, a pritom nema dostupne sigurnosne kopije. U takvim slučajevima, kada Excel ne uspije oporaviti oštećenu datoteku, sav rad obavljen na njoj se gubi, osim ako nemate alat pri ruci za to. popraviti Excel datoteke.

Takođe je mudro da često pravite rezervnu kopiju vrednog rada.

Uvod za autora:

Felix Hooker je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popravak rar-a i sql softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.