Як відкрити та заповнити шаблон за допомогою Excel VBA

Поділитися зараз:

Шаблони Excel – це зазвичай робочі книги зі структурою звітності, яка часто підтримується функціями. Шаблони (xltx) можна використовувати знову і знову, не забруднюючи їх даними. Після заповнення даними робоча книга шаблону зберігається як xlsx, зберігаючи початковий стан самого xltx.

У цій вправі ми будемо використовувати код VBA, щоб відкрити та заповнити шаблон. Шаблон можна знайти тут і використовувані макроси Excel можна знайти тут.

У цій статті передбачається, що на пристрої для читання відображається стрічка розробника та він знайомий з редактором VBA. Якщо ні, будь ласка, перегляньте Google “Вкладка розробника Excel” або “Вікно коду Excel”.

Шаблон

Спочатку ми створимо фіктивний шаблон, заповнений даними, зведеною таблицею та діаграмою, як показано нижче:

Відкрийте новий файл Excel. Перейменуйте «Аркуш1» на «Діаграма», а «Аркуш2» — на «Дані»

Скопіюйте наступний текст, включаючи заголовки, у 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 чоловік

Виберіть усі дані, включаючи заголовки стовпців, і вставте зведену таблицю в A1 аркуша «Дані», як показано нижче.Вставте зведену таблицю в A1 аркуша «Дані».

Створіть діаграму на вкладці «Діаграма», використовуючи зведену таблицю як джерело даних.Створіть діаграму на вкладці «Діаграма».

Видаліть дані в D2:F15. Немає необхідності скидати діапазон даних зведеної таблиці; залиште його заповненим, навіть якщо немає даних.  Видаліть дані в D2:F15

Збережіть книгу як «VacancyTemplate.xltx.” у підкаталозі того, у якому має розташовуватися книга макросів. Відповідайте «Ні» на будь-які сповіщення від Excel під час збереження.

Нам також знадобиться підкаталог Reports. Наприклад:

Звіти Excel (xlsm зберігається тут)

|_шаблони (xlxt зберігається тут)

       |_Звіти (кожен xlsx, збережений тут)

Після збереження як xltx, закрийте шаблон

Макрос

Відкрийте нову книгу, щоб зберегти наш код. Перейменуйте «Аркуш1» на «Основний», а «Аркуш2» на «Базу даних».

Розмістіть кнопку на «Головному», щоб керувати програмою.

Зазвичай дані витягуються з баз даних. Оскільки не всі мають під рукою базу даних, аркуш «База даних» буде емулювати таблицю бази даних.

Скопіюйте дані, знайдені на початку цієї статті, на вкладку «База даних» у розділі 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. Зробіть це через Інструменти>Посилання у вікні коду.Довідка Бібліотека Active X

Перевірте код

Призначте кнопку «Головна» до Суб ажурний зошит. Збережіть книгу як «Заповнення шаблонів.xlsm».

ЗАКРИЙТЕ робочу книгу та відкрийте її знову.

Натисніть кнопку переглянути результат. Збільште кількість рядків даних у «Базі даних» і запустіть знову, щоб перевірити, чи оновлено діаграму додатковою інформацією.

У коді вище ми показали шаблон раннього, з XL.Visible = True. У прямому ефірі це можна зробити в самому кінці, щоб оновлення екрана не було видно.

Впорайтеся з катастрофою даних!

Мало що може дратувати більше, ніж збій файлу Excel, під час якого активно розробляється файл, пошкодження вихідного файлу та відсутність резервної копії. У таких випадках, коли Excel не вдається відновити пошкоджений файл, вся виконана над ним робота втрачається, якщо у вас немає під рукою інструменту для цього. виправити Excel файли.

Також доцільно часто створювати резервні копії важливої ​​роботи.

Вступ автора:

Фелікс Хукер - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі ремонт rar-файлів та програмні продукти для відновлення sql. Для отримання додаткової інформації відвідайте WWW.datanumen.com

Поділитися зараз:

Коментарі закриті.