Как да отворите и попълните шаблон с Excel VBA

Споделете сега:

Шаблоните на Excel обикновено са работни книги с рамка за отчитане, често поддържана от функции. Шаблоните (xltx) могат да се използват отново и отново, без да го замърсяват с данни. След популация с данни, работна книга на шаблон се записва като xlsx, запазвайки девственото състояние на самия xltx.

В това упражнение ще използваме VBA код за отваряне и попълване на шаблон. Шаблонът могат да бъдат намерени тук и използвания макрос на Excel може да бъде намерен тук.

Тази статия предполага, че на читателя е показана лентата за програмисти и е запознат с редактора на VBA. Ако не, моля Google „Раздел за програмисти на Excel“ или „Прозорец на кода на Excel“.

Шаблонът

Първо ще изградим фиктивен шаблон, попълнен с данни, обобщена таблица и диаграма, както следва:

Отворете нов файл на Excel. Преименувайте „Sheet1“ като „Chart“ и „Sheet2“ като „Data“

Копирайте следния текст, включително заглавията, в D1 на раздела „Данни“:

дирекция JobRef Пол
Деца и семейство CH SW2588 Женски
Деца и семейство CH RS2775 Женски
Деца и семейство CH SW2630 Женски
Деца и семейство CH RS2775 Мъжки
Деца и семейство CH CC2628 Женски
Деца и семейство CH HT2579 Женски
Здраве на общността CW T (2559 Женски
Здраве на общността CW QS2774 Женски
Здраве на общността CW O2745 Мъжки
Заобикаляща среда EE SM2814 Женски
Заобикаляща среда EE IT2772 Мъжки
Заобикаляща среда EE SO2784 Мъжки
Ресурси RS CO2557 Женски
Ресурси RS HO2539 Мъжки

Изберете всички данни, включително заглавията на колони, и вмъкнете обобщена таблица в А1 на листа с данни, както е показано по-долу.Поставете обобщена таблица при A1 от листа с данни

Създайте диаграма в раздела „Chart“, като използвате обобщената таблица като източник на данни.Създайте диаграма в раздела „Chart“

Премахнете данните в D2: F15. Не е необходимо да нулирате обхвата на данните на обобщената таблица; оставете го попълнено, дори ако няма данни.  Премахнете данните в D2: F15

Запазете работната книга като „VacancyTemplate.xltx. " в поддиректория на тази, в която трябва да се намира работната книга на макросите. Отговорете с „Не“ на предупреждения от Excel по време на записването.

Ще ни е необходима и поддиректория Reports. Например:

Отчети на Excel (xlsm се съхранява тук)

| _Шаблони (xlxt се съхранява тук)

       | _Доклади (всеки xlsx запазен тук)

След като бъде запазен като xltx, затворете шаблона

Макросът

Отворете нова работна книга, за да съхраните нашия код. Преименувайте „Sheet1“ като „Main“ и „Sheet2“ като „Database“.

Поставете бутон върху „Основно“, за да управлявате приложението.

Обикновено данните се извличат от бази данни. Тъй като не всеки има база данни под ръка, листът „База данни“ ще емулира таблица на базата данни.

Копирайте данните, намерени в началото на тази статия, в раздела „База данни“ на A1…Копирайте данните, намерени в началото на тази статия, в раздела „База данни“ на A1

Кодексът

Структурата на кода по-долу ясно дефинира процесите:

  • Вземете данните от „базата данни“;
  • Отворете шаблона;
  • Попълнете шаблона с данните и нулирайте диапазона от данни на обобщената таблица;
  • Запазете шаблона като отчет
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 обекти с данни

За да симулираме четене от база данни, трябва да се обърнем към библиотеката Active X. Направете това чрез Tools>References от прозореца с кода.Справка Библиотеката Active X

Тествайте кода

Задайте бутона на „Основно“ на Под Ажурна книга. Запазете работната книга като „Попълване на шаблони.xlsm“.

ЗАКРЕТЕТЕ работната книга и я отворете отново.

Натиснете бутона, за да видите резултата. Увеличете броя на редовете с данни в „База данни“ и стартирайте отново, като видите дали диаграмата е актуализирана с допълнителната информация.

В горния код показахме шаблона рано, с XL.Visible = Вярно. В средата на живо това може да се направи в самия край, така че актуализациите на екрана да не се виждат.

Справете се с бедствие с данни!

Малко неща са по-разочароващи от това, когато силно разработен Excel файл се срине, повреди изходния файл и няма налично резервно копие. В случаите, когато Excel не успее да възстанови повредения файл, цялата работа, извършена върху него, се губи, освен ако нямате под ръка инструмент. поправете Excel файлове.

Също така е разумно често да архивирате ценна работа.

Въведение на автора:

Феликс Хукър е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително ремонт на RAR файлове и sql софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com

Споделете сега:

Коментарите са забранени.