Использование vba для решения задач автоматизации приложений microsoft office

Версия данной статьи для Microsoft Visual Basic 6.0: 313193.

Аннотация

В этой статье подробно рассматривается создание документов Word с помощью возможностей автоматизации Visual Basic.

Пример кода

Следующий пример кода показывает, как это сделать:

Вставка абзацев с определенными параметрами форматирования.

Модификация диапазонов в рамках документа.

Вставка, форматирование и заполнение таблиц.

Для создания документа Word с помощью Visual Basic необходимо выполнить следующие действия.

Добавьте ссылку на объектную библиотеку Microsoft Word Object Library. Для этого выполните следующие действия:

В меню Проект выберите команду Добавить ссылку.

На вкладке COM выделите библиотеку Microsoft Word Object Library и нажмите кнопку Выбрать.

Примечание. В состав Microsoft Office 2003 и более поздних версий набора Office входят основные сборки взаимодействия (PIA). Набор Microsoft Office XP не включает эти сборки, но их можно загрузить.
Чтобы узнать больше об основных сборках взаимодействия PIA для Office XP, щелкните номер следующей статьи базы знаний Майкрософт:

328912 Загрузка основных сборок взаимодействия (PIA) для набора Microsoft Office XP

Для подтверждения сделанного выбора нажмите кнопку OK в диалоговом окне Add References. Если появится запрос на создание оберток для выбранных библиотек, нажмите кнопку Yes.

Для отображения панели элементов выберите в меню View элемент Toolbox и добавьте кнопку в форму Form1.

Дважды щелкните кнопку Button1. Появится окно программного кода формы.

В окне кода замените следующий код:

Добавьте следующий код в верхнюю часть файла Form1.vb:

Чтобы построить и запустить программу, нажмите клавишу F5.

После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблицы и диаграмму.

Использование шаблона

Если вы используете автоматизацию для построения документов в одинаковом формате, вы можете запустить процесс с новым документом на основе предварительно отформатированного шаблона. Использование шаблона имеет два существенных преимущества по сравнению с созданием документа с нуля.

Разработчик более полно контролирует формат и расположение объектов в документах.

Уменьшается размер программного кода, который нужен для создания документа.

Вы можете точно указать место расположения и формат объектов (например таблиц и абзацев) в рамках документа, а также включить форматирование этих объектов. Ниже приведен пример программного кода для автоматизации создания документа на основе шаблона.

Следующий программный код позволяет определить в шаблоне метки, по которым клиент автоматизации вставит произвольный текст в документ.

Еще одно преимущество использования шаблонов состоит в том, что вы можете создавать и сохранять стили форматирования, которые используются на этапе выполнения программы.

Ссылки

Дополнительные сведения см. на следующих веб-сайтах Microsoft Developer Network (MSDN):

Источник

VBA и Python для автоматизации Excel и MS Office

Поводом для заметки послужила статья на Хабре, в которой автор описывал, как он решал на Python задачу сбора и анализа метаданных из файлов Excel.

Эта заметка более подробно раскрывает всем известный тезис: Под конкретную задачу надо выбирать наиболее подходящий инструмент применимо к офисной автоматизации.

VBA и Python

VBA (Visual Basic for Applications), де-факто, самый популярный язык для автоматизации Microsoft Office. Доступен из коробки, помимо Excel, работает в PowerPoint, Outlook, Access, Project и других приложениях.

Если задать вопрос: «Какой язык программирования выбрать первым», то где-то в 90% всех случаев будет предложен Python. На практике здесь может быть и любой другой язык, но, исходя из популярности языка и своего опыта, буду сравнивать с ним.

В общем виде можно описать ситуацию через подобный график:

image loader

Детального сравнения не будет, рассмотрим основные killer-фичи, в ситуации, когда junior-программист/офисный сотрудник хочет автоматизировать что-либо, связанное с MS Office, и у него есть возможность выбора между языками.

Если в силу разных причин возможности выбора нет, то и сравнивать нечего.

В пользу VBA

image loader

В пользу Python (и других внешних языков программирования)

image loader

Кейсы

Далее приведены конкретные задачи, которые я сам решал или автоматизировал, и когда мне надо было выбрать стек: VBA или Python. Для каждой задачи указан выбранный стек и даны пояснения почему:

Заключение

Надеюсь, для кого-то заметка будет полезна и позволит сэкономить время на выборе стека для решения своих задач.

Источник

Справочник по VBA для Office

Visual Basic для приложений (VBA) в Office — это событийно-ориентированный язык программирования, позволяющий расширять приложения Office.

Программирование на VBA в Office

Данная справочная статья предназначена для опытных пользователей Office, которые желают познакомиться с VBA и получить некоторое представление о том, как программирование может помочь им настроить Office.

Набор приложений Office содержит полный комплект компонентов. Существует множество разных способов создания, форматирования и управления документами, электронной почтой, базами данных, формами, электронными таблицами и презентациями.

Значительное преимущество программирования на VBA в Office заключается в том, что почти каждое действие, осуществляемое с мышью, клавиатурой или диалоговым окном, можно автоматизировать с помощью VBA. Если действие можно выполнить с помощью VBA, значит в дальнейшем его можно легко осуществлять сотни раз. На самом деле автоматизация повторяющихся задач — одно из наиболее частых применений VBA в Office.

Помимо возможности написания скрипта VBA для ускорения повседневных задач, VBA можно использовать для добавления новых функций в приложения Office или создания запросов и взаимодействия с пользователем ваших документов в соответствии с потребностями вашей организации. Например, можно написать код VBA, выводящий всплывающее сообщение, которое напоминает пользователям о необходимости сохранения документа на определенном сетевом диске при первой попытке его сохранения.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Использование vba для решения задач автоматизации приложений microsoft office

Библиографическая ссылка на статью:
Панькин А.В. Visual Basic for Applications как быстрый способ автоматизации рутинных операций // Современные научные исследования и инновации. 2014. № 4. Ч. 1 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2014/04/33716 (дата обращения: 15.09.2021).

Microsoft Excel имеет встроенный язык программирования — Visual Basic for Applications (VBA). Этот язык позволяет создавать приложения, которые доступны и выполняются средствами Microsoft Office. Это могут быть разнообразные аналитические программы, финансовые системы, программы учета кадров и т. д. Также VBA позволяет решать конкретные локальные и глобальные задачи.

VBA – это сочетание больших возможностей с простотой изучения и использования. Одним из главных достоинств VBA является использование этого языка программирования во всех офисных приложениях Microsoft и связь между ними.

1. Описание языка программирования Visual Basic for Application

Как уже было сказано ранее – все приложения Microsoft Office поддерживают язык программирования Visual Basic for Applications (VBA). В распоряжении разработчика VBA-приложения большое количество объектов, коллекций, инструментов, возможностей настроек, позволяющие в различной степени программно настроить приложение. Важнейшим достоинством VBA является возможность объединять любые приложения Microsoft Office для решения практически любых задач по обработке информации. В этом смысле Microsoft Office можно считать системой программирования, подобной C++, Delphi и т.д..

К положительным особенностям VBA можно отнести то, что он очень удобен для новичка, который только знакомится с программированием в среде Windows. Этому способствует большое распространение продуктов Microsoft Office, простота понимания и использования языка программирования VBA, интуитивно понятная интегрированная среда редактора Visual Basic, наличие огромного количества объектов. Более глубокие знания VBA-программирования позволят решать практически любые задачи: от автоматизации создания простых документов и рутинных операций до обработки баз данных с использованием как настольных, так и сетевых СУБД [1, с. 3].

Недостатком VBA являются проблемы с совместимостью разных версий. Также к недостаткам часто относят и слишком высокую открытость кода, но многие продукты позволяют использовать шифрование кода и установку пароля на просмотр.

2. Постановка реальной задачи

Имеется крупное промышленное предприятие, на котором в недавнем времени была установлена корпоративная информационная система (КИС). В ее основе лежит автоматизация всех бизнес-процессов на данном промышленном предприятии. В состав этой КИС входят многочисленные программные модули, которые взаимодействуют между собой, а также с другими системами, применяемыми на предприятии. Конечно же, как и во всех случаях внедрения и использования всегда выявляются как глобальные, так и локальные проблемы. Так и произошло в этом случае.

Возьмем для примера один из модулей – модуль «Планово-предупредительные ремонты» (ППР). Данный модуль позволяет вести учет оборудования, составлять графики планирования и анализа ремонтных работ, вести фактические цифры по трудоемкости работ, учитывать простои оборудования и т.д. Основой этого модуля являются – годовые и месячные графики ППР. Данные графики содержат в себе следующую информацию:

1) список оборудования с указанием его характеристик и следующих параметров:

— ремонтная сложность выполнения работ;

— группа ремонтной сложности;

— виды ремонтов в месячной разбивке;

— виды обслуживания и ремонтов;

— трудоемкость по видам работ, рассчитанная по каждой единице оборудования.

2) итоговые суммы по каждой единице и общая сумма по ремонтной бригаде.

Графики ППР составляются для ремонтных цехов. Каждый ремонтный цех имеет несколько ремонтных бригад, которые специализируются на определенном виде оборудования и на определенном цехе. Поэтому таких бригад бывает очень много, и если возникают какие либо проблемы или меняется стандарт представления данных, то изменения касаются всех этих бригад.

Стандартный функционал внедренной КИС не обеспечивал полный набор функций и процедур для обеспечения целостности работы планово-предупредительных ремонтов на предприятии. Доработка модуля силами производителя КИС требовала большого количества времени. А для того, чтобы исправить эту недоработку силами отдела корпоративной информатизации предприятия пришлось бы полностью перерабатывать функционал, что тоже требует большого количества времени и человеческих ресурсов. Поэтому было предложено временное решение – использовать язык программирования VBA для решения поставленных задач.

Теперь рассмотрим сами задачи, которые необходимо было решить:

1) применение понижающих коэффициентов, а также округление до сотых долей трудоемкости работ, как в годовых, так и в месячных графиках ППР; Данная трудоемкость напрямую связана с заработной платой работников ремонтных цехов и поэтому она должна быть приведена в соответствие;

2) графики ППР должны быть представлены в том виде, которое прописано в стандарте по ремонту и обслуживанию оборудования;

3) формирование обязательных номенклатур на основании месячных графиков ППР. По новому стандарту предприятия «Планово-предупредительный ремонт оборудования. Формирование и выполнение плана-графика ППР» было введено в действие формирование ежемесячно обязательных номенклатур на ремонт оборудования по ремонтным цехам. Это те виды ремонтов, которые в первую очередь должны быть выполнены, чтобы не допустить простоев оборудования. Эти виды ремонтов, а также их трудоемкость формируются из ремонтных бригад по ремонтным цехам. А как уже было сказано выше, их довольно много.

Все эти операции, выполняемые специалистами в данной области, занимают довольно большое количество времени. Поэтому доработка поставленных задач с помощью макросов VBA должны была снизить время их исполнения, а также снизить трудоемкость выполнения рутинных операций.

3. Результат использования языка программирования VBA для реализации поставленной задачи

Макрос — это последовательность команд и функций, хранящаяся в модуле Visual Basic. Ее можно запускать каждый раз, когда необходимо выполнить данную задачу.

При записи макроса Microsoft Excel сохраняет информацию о каждом шаге выполнения последовательности команд. Следующий запуск макроса повторяет выполнение команд и функций. Все изменения, даже ошибочные, будут записаны в макросе. Каждый записанный макрос хранится в отдельном модуле, присоединенном к книге. Также есть возможность хранить макросы в отдельной библиотеке макросов для простоты работы с ними [2].

Для редактирования макросов используется редактор Visual Basic. Для создания и редактирования макросов для электронных таблиц необходимо знание языка программирования Visual Basic. Редактор Visual Basic показан на рисунке 1.

ris12

Рисунок 1– Редактор Visual Basic

После написания всех необходимых функций и процедур, было реализовано изменение интерфейса печатной форм также с помощью редактора Visual Basic в этом же макросе. И в конце были добавлены выводимые диалоговые окна для определения количества листов в книге, определения цеха и месяца расчета.

Описание последовательности операций при выполнения макроса «Понижающие коэффициенты»:

1. Указание количество листов в книге, цеха, месяца расчета в диалоговых окнах.

2. Нахождение столбца трудоемкости, вида ремонта и общего числа столбцов.

3. Получение обозначения бригады.

4. Получение понижающих коэффициентов по видам ремонта из соответствующего файла.

5. Пробег по столбцу трудоемкости и применение коэффициентов.

6. Суммирование по видам работ и округление до сотых долей.

7. Удаление лишней информации с листов.

7. Приведение печатной формы к форме, обозначенной в стандартах предприятия.

Описание последовательности операций при выполнения макроса «Обязательная номенклатура»:

1. Указание количество листов в книге, цеха, месяца расчета в диалоговых окнах.

2. Нахождение столбца с видами ремонтов.

3. Поиск капитальных, средних и текущих ремонтов, а также нового оборудования.

4. Копирование на отдельный лист необходимых полей в соответствии с формами, приведенными в стандартах предприятия.

5. Приведение печатной формы к форме, обозначенной в стандартах предприятия.

Заключение

Использование языка программирования Visual Basic for Applications не всегда себя оправдывает, особенно в рамках решения больших проектов. Также безопасность данного языка не позволяет углубляться в более глубокое его изучение. Но когда перед вами стоит задача автоматизации рутинных операций, то язык программирования VBA очень полезен. Особенно стоит выделить простоту использования и понимания. Эти два критерия позволяют в короткие сроки выполнить необходимые действия по реализации алгоритма автоматизации.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

&copy 2021. Электронный научно-практический журнал «Современные научные исследования и инновации».

Источник

Внедрение и автоматизация документов Office с помощью Visual Basic

Сводка

При разработке приложения, использующего данные в документе Office, может быть полезно иметь эти данные непосредственно в приложении Visual Basic, чтобы пользователь мог просматривать и редактировать данные без необходимости переключаться на приложение Office. Это можно сделать в Visual Basic с помощью элемента управления OLE Container.

В этой статье описывается динамическое создание и автоматизация документа Office с помощью элемента управления OLE Container.

Дополнительные сведения

Возможность вставки документа Office в Visual Basic осуществляется с помощью технологии технологии OLE и связывания и внедрения объектов Майкрософт. Технология OLE предназначена для того, чтобы позволить другому приложению размещать объект, принадлежащий другому приложению, так, чтобы он был удобным для конечного пользователя, но не требует от приложений знать внутренние сведения о другом. Visual Basic предоставляет элемент управления OLE Container, позволяющий программистам Visual Basic добавлять в форму объекты OLE.

После внедрения объекта большинство OLE-серверов поддерживают автоматизацию, чтобы ведущее приложение программно изменяет или манипулирует объектом из кода. Чтобы получить ссылку на объект Automation, используйте свойство Object контейнера OLE. Это свойство возвращает объект автоматизации, который точно соответствует внедренному элементу.

Создание приложения Visual Basic, в котором размещается книга Excel

Запустите Visual Basic и создайте новый стандартный проект. По умолчанию создается форма Form1.

На панели элементов управления добавьте три командные кнопки в форму Form1. Затем добавьте экземпляр элемента управления OLE Container. Когда элемент управления OLE Container размещается в форме, он запрашивает тип объекта, который вы хотите вставить. Для этого примера необходимо динамически добавить объект, поэтому нажмите кнопку Отмена, чтобы закрыть диалоговое окно без добавления объекта.

В окне кода для формы Form1 добавьте следующий код:

Нажмите клавишу F5, чтобы запустить программу. Нажмите кнопку Создать. Это внедряет новый лист и автоматизирует Excel для добавления данных непосредственно на лист. Обратите внимание, что если дважды щелкнуть объект, он активируется на месте, и пользователь может редактировать данные напрямую. Теперь нажмите кнопку Сохранить, чтобы сохранить данные в файл и закрыть объект OLE. Кнопка Открыть позволяет открыть копию ранее сохраненного файла.

Создание приложения Visual Basic, в котором размещается документ Word

Запустите Visual Basic и создайте новый стандартный проект. По умолчанию создается форма Form1.

На панели элементов управления добавьте три командные кнопки в форму Form1. Затем добавьте экземпляр элемента управления OLE Container. Когда элемент управления OLE Container размещается в форме, он запрашивает тип объекта, который вы хотите вставить. Для этого примера необходимо динамически добавить объект, поэтому нажмите кнопку Отмена, чтобы закрыть диалоговое окно без добавления объекта.

В окне кода для формы Form1 добавьте следующий код:

Нажмите клавишу F5, чтобы запустить программу. Нажмите кнопку Создать. При этом новый документ внедряется и автоматизируется Word для добавления данных непосредственно в документ. Обратите внимание, что если дважды щелкнуть объект, он активируется на месте, и пользователь может редактировать данные напрямую. Теперь нажмите кнопку Сохранить, чтобы сохранить данные в файл и закрыть объект OLE. Кнопка Открыть позволяет открыть копию ранее сохраненного файла.

Рекомендации по использованию OLE Container

При внедрении из существующего файла данные, содержащиеся в контейнере OLE, являются копией данных в файле. Все внесенные изменения не сохраняются автоматически в один и тот же файл. Несмотря на то, что вы можете использовать метод, аналогичный приведенному выше, чтобы сохранить результаты обратно в определенный файл, не все OLE серверы поддерживают эту возможность. Он не считается обычным поведением объекта OLE.

Если вы привязку к файлу, объект невозможно активировать на месте. Вместо этого, когда пользователь дважды щелкает объект, объект открывается в окне серверного приложения. На месте можно активировать только внедренные объекты.

Элемент управления OLE Container связан с данными. Если у вас есть база данных Access 97 или Access 2000, вы можете привязывать элемент управления к полю объекта OLE в базе данных. При отображении формы данные извлекаются из базы данных и отображаются для редактирования пользователем. Любые изменения, внесенные пользователем, автоматически сохраняются в базе данных при закрытии объекта OLE.

Чтобы сделать привязанные данные элемента управления OLE Container, добавьте элемент управления данными Visual Basic и присвойте свойству DatabaseName путь к базе данных. Затем присвойте источнику записи существующую таблицу в базе данных. Используйте свойство DataSource элемента управления OLE, чтобы присоединить элемент управления к элементу управления данными Visual Basic, а затем задайте свойство DataObject, чтобы оно ссылалось на определенное поле в наборе записей, содержащее объект OLE. Visual Basic выполняет остальные функции.

Размер и положение заштрихованной границы, которая отображается, когда контейнер становится активным на месте, определяется размером объекта и параметрами, выбранными для элемента управления OLE. Эта граница отображается, чтобы пометить границы окна редактирования. Границы окна редактирования часто не совпадают с границами самого контейнера OLE; Такое поведение является нормальным для объекта OLE. Окно редактирования невозможно изменить программным способом с помощью Visual Basic.

Некоторые методы автоматизации могут работать неправильно, если объект не был активирован на месте. Чтобы программно активировать объект OLE, используйте метод Доверб и укажите Вболешов (-1) в качестве команды.

Чтобы определить, отображается ли меню связанного или внедренного объекта в форме контейнера, можно задать свойство формы Неготиатеменус. Если для свойства Неготиатеменус дочерней формы задано значение true, а в контейнере определена строка меню, меню объекта помещаются в строку меню контейнера при активации объекта. Если в контейнере нет строки меню или для свойства Неготиатеменус задано значение false, меню объекта не отображаются при его активации. Обратите внимание, что свойство Неготиатеменус не применяется к формам MDI, поэтому меню формы MDI невозможно объединить с активизированными объектами. Чтобы проиллюстрировать согласование меню, попробуйте выполнить указанные ниже действия с примером приложения, созданного в предыдущем разделе.

Visual Basic не позволяет управлять процессом слияния меню или вносить изменения в элементы меню сервера при добавлении. Однако вы можете изменить или изменить меню приложения Office с помощью автоматизации, используя код, аналогичный приведенному ниже:

Обратите внимание, что некоторые изменения могут быть внесены до того, как объект станет активным на месте, в противном случае изменения могут не отображаться в меню слияние.

Note (Примечание ) Эта точка маркера не относится к Microsoft Office Excel 2007 или Microsoft Office Word 2007.

Visual Basic в настоящее время не поддерживает назначение пространства панели инструментов. Таким образом, закрепленные панели инструментов обычно не отображаются при активации объекта. Тем не менее, можно отобразить плавающее окно инструментов с автоматизацией:

Note (Примечание ) Эта точка маркера не относится к Microsoft Office Excel 2007 или Microsoft Office Word 2007.

Для программ, требующих, чтобы объект оставался активным на месте постоянно, корпорация Майкрософт предоставила технологию ActiveX Documents. Не все серверы OLE являются серверами документов ActiveX; Microsoft Word, Microsoft Excel и Microsoft PowerPoint — это серверы документов ActiveX.

Visual Basic не поддерживает собственный элемент управления для размещения документов ActiveX. Однако элемент управления WebBrowser, поставляемый с Internet Explorer (версия 3,0 и более поздние версии), поддерживает такую форму включения на месте. Этот элемент управления можно использовать для открытия документа Office в виде документа ActiveX. Для получения дополнительных сведений об использовании элемента управления WebBrowser обратитесь к следующей статье:

243058 как использовать элемент управления WebBrowser для открытия документа Office

Метод SaveToFile контейнера OLE создает файл, который можно открыть в контейнере OLE. Однако файлы, сохраненные с помощью метода SaveToFile контейнера OLE, невозможно открыть непосредственно в соответствующем приложении Office. Если вы хотите сохранить внедренный документ на диске, чтобы документ можно было открыть в целевом приложении, используйте метод SaveAs документа приложения:

Источник

Adblock
detector