Как запустить программу написанную в vba

Содержание

Это краткое пошаговое руководство предназначено для начинающих пользователей и рассказывает о том, как вставлять код VBA (Visual Basic for Applications) в книгу Excel, и как запускать вставленный макрос для выполнения различных задач на этом листе.

Большинство пользователей не являются гуру Microsoft Office. Они могут не знать всех тонкостей работы той или иной функции, и не смогут ответить на вопрос, как отличается скорость выполнения макроса VBA в Excel 2010 и 2013. Многие просто используют Excel, как инструмент для обработки данных.

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

Вставляем код VBA в книгу Excel

В этом примере мы будем использовать VBA макрос, который удаляет переносы строк из ячеек текущего листа Excel.

Макросы VBA, запускающиеся при открытии, закрытии и прочих событиях (Серия VBA 14)

Вставляем и запускаем макрос в Excel

  1. Открываем рабочую книгу в Excel.
  2. Нажатием Alt+F11 вызываем окно редактора Visual Basic
  3. На панели Project-VBAProject кликаем правой кнопкой мыши по имени рабочей книги (в левой верхней части окна редактора) и в контекстном меню выбираем Insert > Module.
  4. Копируем код VBA (с веб-страницы или из другого источника) и вставляем его в правую область редактора VBA (окно Module1).Подсказка: Как увеличить скорость выполнения макроса?

В самом начале кода Вашего макроса VBA должны содержаться строки: Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual Если таких строк нет, то обязательно добавьте следующие строки в свой макрос, чтобы он работал быстрее (см. рисунок выше):

    В самое начало кода после всех строк, начинающихся с Dim (если строк, начинающихся с Dim нет, то вставляем сразу после строки Sub):

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

  1. Нажимаем Alt+Q, чтобы закрыть окно редактора VBA и вернуться к книге Excel.

Запускаем макрос VBA в Excel

Чтобы запустить только что добавленный макрос, нажмите Alt+F8. Откроется диалоговое окно Макрос (Macro). В списке Имя макроса (Macro name) выберите нужный макрос и нажмите кнопку Выполнить (Run).

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

Например, сделать программу, на форме только одна кнопка, при нажатии на которую запускается ярлык Visual Basic который стоит у меня на раб.столе.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Запуск стороннего приложения

VBA для начинающих — Первые шаги — Новый курс VBA (2)


Нужно чтоб из своей программы я бы запускал калькулятор (желательно стандартный виндовый), а потом.

Запуск стороннего EXE-приложения
Приветствую! ПОдскажите, каким образом запустить из работающего приложения на VB какой-нибудь.

Запуск стороннего приложения в WindowsXP
В Windows98 код Shell App.Path + ‘mir32ex.bat’ нормально запускал EXE-файл через пакетный файл.

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

Решение

Только для русскоязычной винды
Если не получилось — прописывай путь к рабочему столу руками или ищи по API SHGetSpecialFolderLocation

Решение

Дело в том, что окно командной строки нельзя полностью скрыть при использовании cmd.
Кроме того, в ряде случаев (например при открытии файлов jpeg) cmd в свою очередь запускает rundll32.
Поэтому предлагаю более изящный вариант (напрямую через rundll32), в котором никаких окон не возникает:
Примечание: ни один из вышеперечисленных вариантов, а также мой — не работают, если ярлык находится в папке «Новая папка (2)», которая находится на рабочем столе. Пока разбираюсь с этим.

Решение

Вот код, которым я пользуюсь:

В процедуру-событие пишем такой, например, код:

Щелкаем по кнопке — запускается MSDN. Можно на вход дать ярлык и из папки на рабочем столе. Тоже работает. Там пробел в пути. Двойные кавычки — и все будет работать.

У меня открывает.
окно командной строки нельзя полностью скрыть при использовании cmd.

Что Вы подразумеваете под «полностью скрыть».
Скрыть с глаз — это последний параметр Shell. Пишете через запятую 0, окно полностью скрыто.

Функция Shell служит для запуска другой программы из VB-программы.Функция Shell запускает другие программы в асинхронном режиме. Это означает, что для продолжения выполнения инструкций, следующих за Shell, не требуется завершения программы, запущенной с помощью функции Shell

При успешном запуске программы возвращает значение типа Variant (Double), представляющее идентификатор программы(ID).Идентификатор задачи ID является уникальным номером, указывающим на выполняемую программу. Если функция Shell не может запустить указанную программу, возникает ошибка

Функция содержит именованные аргументы

Обязательный аргумент типа Variant (String). Имя выполняемой программы и любые требуемые аргументы или ключи командной строки; допускает включение каталога или папки и диска

Необязательный аргумент типа Variant (Integer), соответствующее типу окна, в котором выполняется программа. Если аргумент опущен, программа запускается и получает фокус

*
Именованный аргумент WindowStyle имеет следующие значения:

vbHide
0
Окно скрыто, и фокус передается скрытому окну

vbNormalFocus
1
Окно имеет фокус и восстанавливает свои стандартные размер и положение

vbMinimizedFocus
2
Окно отображается в виде значка с фокусом

vbMaximizedFocus
3
Окно развертывается на полный экран с фокусом

vbNormalNoFocus
4
Восстанавливаются предыдущие размер и положение окна. Активным остается текущее окно

vbMinimizedNoFocus
6
Окно отображается в виде значка. Активным остается текущее окно.

Тоже самое можно сделать через объект WshShell — метод Run.

Убойная сила VBA-программы не значит ничего до тех пор, пока вы не нажмете ее спусковой крючок. А в нашем случае ЭТОТ спусковой крючок сначала нужно еще найти.

Говоря более прозаическим языком, пока вы не найдете способ, с помощью которого сможете запустить свою VBA-программу, программа остается бесполезной.

Во время создания программы в окне редактора Visual Basic вы всегда могли выполнить ее, нажав F5 или щелкнув на кнопке Run (Выполнить) в панели Standard (Стандартная) редактора Visual Basic. Это вполне удобно при тестировании программы, но совершенно никуда не годится для реальной работы. После того как программа готова, ее нужно запускать из соответствующего приложения.

В этой главе обсуждаются возможности, которые можно использовать для запуска

VBA-программ и макросов из VBA-приложений. (Еще раз напомню, что макрос- это та же VBA-программа, которой посчастливилось быть записанной средствами автоматической записи; подробности в главе 2. Не пишите программу, когда можно записать макрос.) Одна из самых простых возможностей для запуска большинства программ обеспечивается диалоговым окном Макрос, но уж очень это неудобно. VBA-программа становится действительно полезной, когда вы можете запустить ее командой меню, кнопкой в панели инструментов или нажатием определенной комбинации клавиш, а еще лучше, предусмотрев автоматическое выполнение.

Попрактикуйтесь в этом с макросами, которые вы запишете, следуя указаниям главы 2, или с процедурами, которые вы создадите с помощью редактора Visual Basic, используя либо краткие инструкции из главы 6, либо подробные объяснения из частей II и III.

Все определяется именем

Вызов VBA-программы осуществляется по имени.

Извините за то, что приходится начинать с технических подробностей, но другого выхода я не вижу. При вызове VBA-программы вы на самом деле запускаете одну специальную процедуру VBA. Ваша программа может содержать немало самых различных процедур, но только одна из них имеет первую строку кода, говорящую о том, что вы хотите выполнить программ). Эта первая процедура может запускать (вызывать) другие процедуры, которые в свою очередь могут вызывать следующие и т.д. Для того чтобы выполнить программу, вы должны вызвать только первую процедуру — остальные выполнятся автоматически по мере выполнения программой своей задачи.

Хотите узнать что-нибудь более существенное по поводу процедур? Обратитесь к главе 6, где вы получите полный ответ.

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

Читайте также:
Программа паскаль абс это

Глава 22 Написание защищенных программ

Глава 22 Написание защищенных программ Подавляющее большинство компьютеров, на которых работает система Linux, подключены к Internet, и многие из них используются большим количеством людей. Для того чтобы сохранить компьютер и его программное обеспечение в безопасности,

if — Выполнение или не выполнение предложений в зависимости от условий

if — Выполнение или не выполнение предложений в зависимости от условий ifПозволяет выполнить или не выполняет определенные предложения в зависимости от заданного условияСинтаксис:if (condition) Аргументы:В целом, предложение if завершается закрывающей фигурной скобкой

Глава 5 Работа программ в Windows Vista

Глава 5 Работа программ в Windows Vista • Работа с Диспетчером задач• Автозапуск приложений и борьба с ним• Устаревшие программы в Windows Vista• Настройка связей типов файлов с приложениями• Трюки со встроенными приложениямиИз этой главы вы узнаете об эффективных средствах

Глава 8 Разработка программ

Глава 8 Разработка программ Первоначально системе UNIX предназначалась роль среды для разработки программ. В настоящей главе мы обсудим некоторые применяемые с этой целью программные средства на примере солидной программы — интерпретатора языка программирования,

Влияние ошибок на выполнение программ

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

ГЛАВА 7. ЕЩЕ НЕСКОЛЬКО ПРИМЕРОВ ПРОГРАММ

ГЛАВА 7. ЕЩЕ НЕСКОЛЬКО ПРИМЕРОВ ПРОГРАММ В каждом разделе этой главы рассматривается некоторое конкретное применение Пролога. Мы советуем вам прочитать все разделы. Не огорчайтесь, если вы не поймете назначение какой-либо программы потому, что незнакомы с данной

ГЛАВА 8. ОТЛАДКА ПРОЛОГ-ПРОГРАММ

ГЛАВА 8. ОТЛАДКА ПРОЛОГ-ПРОГРАММ На приведенных выше примерах вы уже приобрели опыт применения программ и научились их изменять, а также успели написать и свои собственные программы. Теперь самое время заняться вопросом: что делать, когда программа ведет себя не так, как

Глава 4 Проектирование программ и объявления

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

Глава 17. Создание пакетов и распространение программ

Глава 17. Создание пакетов и распространение программ Все больше и больше продуктов — и в первую очередь аспирин — выпускается в упаковке, защищенной до такой степени, что потребитель уже и воспользоваться ими не может. Дэйв Бэрри Эта глава посвящена вопросу о том, как

Глава 2 Синтаксис и семантика Пролог-программ

Глава 2 Синтаксис и семантика Пролог-программ В данной главе дается систематическое изложение синтаксиса и семантики основных понятий Пролога, а также вводятся структурные объекты данных. Рассматриваются следующие темы:• простые объекты данных (атомы, числа,

Глава 4 Создание трехмерных моделей и выполнение двумерных графических фрагментов

Глава 4 Создание трехмерных моделей и выполнение двумерных графических фрагментов Виды изделий всех отраслей промышленности при выполнении конструкторской документации устанавливает ГОСТ 2.101-68.Изделием называется любой предмет или набор предметов производства,

Глава 16 Установка и удаление программ

Глава 16 Установка и удаление программ • Установка программ• Удаление программ• Обновления операционной системыСовременную компьютерную систему условно можно разделить на две составляющие: аппаратную и программную. Аппаратная часть включает в себя все, что

Глава 4 СТРУКТУРА ДАННЫХ ПРОГРАММ

Глава 4 СТРУКТУРА ДАННЫХ ПРОГРАММ 4.1. ПОНЯТИЕ СТРУКТУРЫ ДАННЫХ ПРОГРАММ Под структурой данных программ в общем случае понимают множество элементов данных, множество связей между ними, а также характер их организованности.Под организованностью данных понимается

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

Переход с Visual Basic 6 на Visual Basic . NET — дело не очень простое. В нем появились новые возможности, а некоторые знакомые инструменты изменились. По этой причине каждая лекция начинается с врезки с описанием изменений. Для изучения Visual Basic . NET с помощью этой книги вам не требуется иметь какой-либо опыт программирования. Для тех, кто уже знает Visual Basic 6, ниже перечислены некоторые усовершенствования в Visual Basic . NET .

  • В Visual Studio появилась новая панель Start Page (Начальная страница). На ней показываются недавно использовавшиеся проекты, с нее можно открывать новые или существующие исходные файлы. Дополнительные ссылки на панели Start Page (Начальная страница) предоставляют доступ к веб-сайтам о Visual Studio и к сообществам разработчиков.
  • Среда разработки Visual Studio содержит несколько новых инструментов программирования, а уже имевшиеся средства были доработаны. Окно Project (Проект) теперь называется Solution Explorer (Обозреватель решений), появилось окно контекстной справки, по имени Dynamic Help (Динамическая справка). Несколько изменилась и панель инструментов Toolbox (Область элементов). Она теперь разделена на несколько функциональных категорий: элементы Windows Forms, элементы Web Forms и Data (Данные).
  • Большинство окон инструментов имеют функцию автоматического сворачивания окна инструмента — когда он не используется, он скрывается с экрана.
  • Проекты теперь сохраняются по-другому. Имя проекту вы присваиваете перед его созданием. Сами проекты разделены на несколько файлов и папок — их еще больше, чем в Visual Basic 6. В Visual Basic 6 программы, которые состояли из нескольких проектов, назывались группами проектов; теперь они называются решениями.

Важно. Если вы еще не установили файлы практических занятий для этой книги, обратитесь к разделу «Установка файлов практических занятий».

Важно. Чтобы выполнить упражнения из этой книги, нужно установить одну из следующих редакций Visual Studio .NET 2003: Visual Basic .NET Стандартный выпуск, Visual Studio .NET Professional, Visual Studio .NET Enterprise Developer или Visual Studio .NET Enterprise Architect. Вы не сможете выполнять упражнения, если у вас установлена более ранняя версия Visual Basic. В этом случае попробуйте найти издание «Microsoft Visual Basic Professional 6.0 Шаг за шагом».

Запустится Visual Studio, и вы увидите на экране среду разработки с ее многочисленными меню, инструментами и окнами с компонентами. (Иногда эти окна также называются окнами инструментов.) Если это первый запуск Visual Studio после новой установки, то должна появиться Start Page (Начальная страница). Если Start Page (Начальная страница) не видна, ее можно вызвать из меню Help (Справка) по команде Show Start Page (Показать начальную страницу).

Убедитесь, что в раскрывающемся списке At Startup (При запуске) выбран пункт Show Start Page (Показать начальную страницу). Теперь при каждом запуске Visual Studio будет показана Start Page (Начальная страница).

Запустив Visual Studio, начните с открытия какого-либо существующего проекта: с готового решения, в которое нужно вынести изменения, или с текущего разрабатываемого проекта. Попробуйте открыть существующий проект — программу МузВопрос.

Источник: telefony-gid.ru

Метод Application.Run – простой способ подружить Office-ribbon и обычные VBA-макросы (на примере C# и Excel)

В статье рассматривается использование Visual Studio для решения узкой задачи – собственно вызов VBA-макросов, расположенных в надстройках или документах, с помощью кнопок, которые разработчик может разместить в необходимых дополнительных (отдельно созданных) группах элементов вкладки НАДСТРОЙКИ ленты Excel или отдельных вкладках, и, при желании, использовать все современные возможности для работы с этими элементами.

Для читателей, в целом знакомых с тем, как в Visual Studio (конкретно – механизмы Visual Studio Tools for Office (VSTO)) реализована работа с объектами офисных приложений (объектные модели, само собой, ничем не отличаются от доступных средствами VBA), целесообразно сократить время чтения – основную мысль статьи можно выразить одной строкой C#-кода:

которая аналогична хорошо известному VBA-вызову Application.Run(“ИмяМакроса”) – в том числе и в варианте вызова как функции:

Ну и вариантах с передачей одного или нескольких параметров разных типов:

VBA-разработчиков, для которых актуальна данная проблема, – приглашаю продолжить чтение. Пошаговое выполнение демо-примера займет примерно 10-20 минут (без учета затрат времени на загрузку, установку и стартовую настройку Visual Studio Community Edition).

Основная цель упражнения – посмотреть как можно получить современный настраиваемый ribbon-интерфейс и при этом вообще не вносить какие-либо изменения в файлы, содержащие VBA-макросы.

Проблема управления ribbon’ом из VBA и традиционные пути решения

Объектная модель VBA-приложений исторические не поддерживает регламентные инструменты для продуктивной работы с дополнительными (создаваемыми под VBA-надстройки или просто макросы) элементами ленты (Ribbon, впервые появилась в MS Office 2007) – явно недостаточными являются скромные возможности, предоставляемые Application.CommandBars (только управление стандартными Ribbon-элементами (методы GetPressedMSO / ExecuteMSO / GetEnabledMso, …..)), и IRibbonUI (https://docs.microsoft.com/ru-ru/office/vba/api/overview/library-reference/iribbonui-members-office; docs.microsoft.com/ru-ru/office/vba/api/office.iribbonui.activatetab). При этом стала ограниченной поддержка кастомных Toolbars, которые в Office 97 – 2003 мы могли создать, настроить под наши нужды, украсить подходящими иконками и упаковать в документы с макросами или в надстройки.

Читайте также:
Программа как проходит мой день

Есть несколько способов борьбы с печальной реальностью:

1) использовать специализированные Custom-UI-редакторы для встраивания в файлы VBA-надстроек и офисных документов XML-кода, управляющего лентой, — Custom UI Editor github.com/OfficeDev/office-custom-ui-editor и вариант github.com/fernandreu/office-ribbonx-editor/releases/tag/v1.7.1; замечательный и хорошо документированный инструмент Ribbon XML Editor novikov.gq/products/ribbonxmleditor/ribbonxmleditor.html (особенно интересный русскоязычным разработчикам);

2) смириться самому и призвать к смирению пользователей своих VBA-приложений, потому что теперь кнопки для вызова макросов, ранее (Office 97-2003) располагавшиеся в кастомных перемещаемых Toolbars, теперь (всегда, частично упорядоченно) находятся на вкладке НАДСТРОЙКИ ленты;

3) использовать немодальный VBA-диалог, имитирующий плавающую панель управления, и вызываемый либо относительно уникальной клавишной комбинацией, либо всё-таки с помощью кастомной кнопки, расположенных на вкладке НАДСТРОЙКИ (см. выше).

Уточнения и допущения, принятые в статье

1) Демо-пример в тестовом режиме помогает разобраться только с одной узкой проблемой – как из Office-надстройки, реализованной в Visual Studio (далее – VSTO-надстройка), щелчком по нашей кнопке, расположенной в нашей группе элементов ленты, просто и привычно вызвать VBA-макрос, код которого находится в офисном документе или в VBA-надстройке. С одной стороны, этого примера может быть достаточно, чтобы оценить и попробовать применить предложенный механизм, с другой стороны, нужно учитывать, что даже далеко неполное описание работы с объектными моделями офисных приложений из VSTO-надстроек – это тема для нетонкой книги (на Хабре есть ряд статей по некоторым вопросам habr.com/ru/post/136520, habr.com/ru/post/54880, habr.com/ru/post/130084 )

2) Для примера VBA-кода используется Excel, потому что он является основной платформой как для массового кустарного VBA-кодирования так и для создания профессиональных распространяемых VBA-надстроек. При этом для Word и PowerPoint основные принципы в целом остаются такими же (тут есть оговорки и нюансы преимущественно в части подключения VBA-надстроек в этих приложениях, но не в части доступа к объектам приложений и не в части Application.Run()). Про Outlook ничего сказать не могу.

Версия Office в целом не важна – 2013, 2016, 2019, 365 – всё одинаково. Предложенный способ, скорее всего не будет работать с Office 2007 (что-то там как-то по другому) и с Office 2010 (тоже придётся подкручивать какие-то гайки).

3) В демо-примере кода VS-надстройки используется C#, а не VB.NET. Основная причина – решение Microsoft не развивать Visual Basic.NET как второй (основной? конкурирующий?) объектно-ориентированный язык для .Net ( habr.com/ru/news/t/492158 ) – именно как язык, в котором будут появляться и развиваться новые функциональные (архитектурные, синтаксические…) возможности. А нам ведь хотелось бы чтобы используемый инструмент был актуален в течение нескольких пятилеток? Так что если вы еще не применяли VB.NET для работы с офисными приложениями, то теперь начинать явно не стоит. Программные C#-конструкции демо-примера очень просты.

Версия Visual Studio не важна – если у вас установлена Visual Studio 2017, то для проработки демо-примера этого достаточно, а если не установлена и есть интерес, то, пока читаете, запустите скачивание и установку бесплатной Visual Studio 2019 Community Edition
visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=CommunityВызван МакросОдин» End Sub Public Sub МакросДва(ByVal strParam1 As String) MsgBox «Вызван МакросДва, передан параметр » Вызвана ФункцияТри с параметром » Str(intParam2) End Function

Создание VSTO-надстройки в Visual Studio

Запускаем VS, выполняем Файл -> Создать проект

1) В предъявленном диалоге в правом списке выбираем «Надстройка VSTO для Excel», Далее.

Выбор типа проекта (Рис. 01)

2) Указываем имя надстройки, каталог для размещения папок и файлов проекта.

Имя надстройки и папка проекта (Рис. 02)

3) Необязательно — в предъявленном окне с кодом C#-класса ThisAddin.cs копируем в буфер обмена строку

using Excel = Microsoft.Office.Interop.Excel;

после этого щелком по крестику закрываем этот класс – для демо-примера не требуется вносить в него какие-либо изменения.

Класс ThisAddin.cs (Рис. 03)

4) В Обозревателе решений правым щелчком по имени надстройки DemoAddin вызываем меню и выбираем «Создать элемент».

Создать элемент (Рис. 04)

5) В диалоге добавления нового элемента выбираем «Лента (визуальный конструктор)» и указываем имя класса DemoRibbon.cs.

Добавление класса для работы с лентой (Рис. 05)

6) В визуальном конструкторе создаётся заготовка (group1) нашей будущей группы элементов ленты. В окне свойств сразу переименовываем её и задаём надпись — DemoGroup.

Группа элементов ленты (Рис. 06)

7) Из Панели элементов, из группы «Элементы управления ленты Office» в нашу вкладку перетаскиваем три Button’a и в окне свойств задаём имена и надписи DemoButton1..3.

Программируемые кнопки на ленте (Рис. 07)

8) Двойным щелчком по верхней кнопке открываем вкладку кода. Вкладка визуального конструктора остается открытой и двойными щелчками по второй и третьей кнопке для них так же создайте обработчики события Click.

Пустой обработчик события Click (Рис. 08)

9) Модифицируйте код этого класса следующим образом:
— в верхний список using’ов вставьте строки:

using Excel = Microsoft.Office.Interop.Excel; using System.Windows.Forms;

— добавьте объявление и инициализацию объекта ExcelApp;
— заполните обработчики событий вызовами ExcelApp.Run(. ):

Модифицированный код класса Ribbon.cs

(примечания:
— IntelliSense VS, как и VBA, упрощает ввод параметров – на рисунке момент после ввода запятой после первого параметра; типы параметров не указаны, потому что и в VBA все, кроме первого, параметры метода Application.Run являются Variant – три десятка необязательных;

Список параметров (Рис. 09)

— обращение ExcelApp можно заменить на Globals.ThisAddIn.Application и обойтись без объявления и инициализации объекта ExcelApp.)

Тестовый запуск

1) Закрываем запущенный Excel – если открыт.

2) В Visual Studio щелкаем кнопку Пуск. С небольшой задержкой будет запущен Excel, с открытием пустого файла по умолчанию.

3) Убеждаемся, что во вкладке НАДСТРОЙКИ появилась группа элементов DemoGroup с тремя кнопками. Если не появилась, то во вкладке РАЗРАБОТЧИК щелкаем «Надстройки COM» и в диалоге включаем галочку для нашей надстройки (анализ возможных причин такого поведения – за рамками этой статьи).

Подключение надстройки (Рис. 10)

5) Щелкаем наши кнопки DemoButtonN и убеждаемся, что технология работает. При этом обращаем внимание, что в заголовках сообщений, появляющихся после щелчков кнопок 1 и 2 указано «Microsoft Excel» – это заголовок по умолчанию для MsgBox, вызванном в Excel-VBA без параметра Title. А в сообщении для кнопки 3 заголовка нет вообще – потому что это сообщение выведено методом MessageBox.Show(), при вызове которого мы тоже не указали параметр Title, и который про Excel ничего не знает.

Вызов процедуры 1 (Рис. 11)

Вызов процедуры 2 (Рис. 12)

Вызов функции (Рис. 13)

Выводы по тестовому примеру

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

Можно развить идею вызова Application.Run как функции – если нужно что-то получать непосредственно из Excel или что-то вычисляемое средствами VBA, и нет времени на изучение C# и модели доступа к Excel, то можно подготовить некоторое количество VBA-функций, которые за пределы Excel-VBA будут возвращать то, что требуется. При правильном проектировании таких функций может быть немного, что требуется от конкретной функции – можно указывать параметрами. Для использования в C# возвращаемых значений простых типов (строки, числа) особо погружаться в изучение C# не придется, если же возвращать объектные типы (например, Range, ссылки на листы и книги) или массивы, то нужно будет изучить правила объявления переменных и т.п.

Использование XLAM-надстройки и формирование дистрибутива VSTO-надстройки
Теперь необходимо провести проверку для компонентов, которые будут устанавливаться на компьютерах пользователей.

1) XLSM-файл сохраняем как XLAM-надстройку.

3) Выполняем Сборка -> Опубликовать DemoAddin, указываем расположение папки дистрибутива и способ установки на ПК пользователей – CD или DVD (имеется ввиду – из файлов дистрибутива, а не из внутреннего ресурса организации). В указанной папке будет создан файл setup.exe и прочие установочные файлы.

4) Копируем DemoVBA.xlam и папку дистрибутива на компьютер пользователя.

5) DemoVBA.xlam подключаем как обычно для xlam-надстроек – РАЗРАБОТЧИК -> Надстройки (не путать с Надстройки COM!). Закрываем Excel.

6) Устанавливаем VSTO-надстройку – это «трёх-щелчковое» действие, включая согласие с невозможностью проверить подпись издателя.

7) Запускаем Excel, проверяем. Если группа DemoGroup не появилась на вкладке НАДСТРОЙКИ, включаем DemoAddin в диалоге РАЗРАБОТЧИК -> Надстройки COM.

Читайте также:
Что такое компьютерные словари и программы переводчики

Файлы тестового примера доступны здесь yadi.sk/d/A5JuAxwg86XxVg
(примечание — если установка из дистрибутива будет выполняться на том же ПК, на котором производится тестирование из среды Visual Studio, то при тестовых запусках VS будет выдавать сообщение об ошибке — наличие некорректно установленной настройки. Для устранения этой ошибки недостаточно отключить и удалить VSTO-надстройку в диалоге РАЗРАБОТЧИК -> Надстройки COM. Её нужно удалить как обычное Windows-приложение — удаление в разделе «Программы и компоненты» панели управления).

Уточнения по видимости (доступности) VBA-процедур и функций (Public или Private)

Представленный в статье способ вызова VBA-макросов полностью поддерживает важную особенность метода Application.Run – так как вызов макроса производится «по полному имени макроса», то не важно, какая область видимости указана в объявлении процедуры или функции – Public или Private. Видимо, проектировщики VBA приняли решение о таком поведении, руководствуясь соображением «Если VBA-программист уверенно вызывает макрос по полному имени, представленному строкой, то не нужно проверять ограничения видимости, лишь бы имя было правильным; на этапе компиляции мы не сможем проверить корректность таких вызовов, потому что это строка-параметр метода, а не стандартный программный вызов».

Более того – на возможность такого вызова не повлияет и наличие директивы Option Private Module в заголовке VBA-модуля!

Изящество такого архитектурного решения становится понятным, когда мы подумаем о VBA-функциях, возвращающих простые значения (строки, числа….) в качестве вычисляемых значений ячеек. Соответственно, при необходимости, такие функции должны быть доступны в качестве функций рабочего листа – в категории «Определенные пользователем» диалога вставки функций. Следовательно, для использования в Excel, они должны быть объявлены как Public, а все остальные VBA-функции – как Private – но это не означает, что их нельзя вызвать по полному имени, в качестве публичных!

Уточнение понятия «полное имя» макроса — в среде VBA поддерживается возможность при вызове указывать имя модуля перед именем макроса (разделяя точкой), что позволяет легко обойти проблему наличия в разных модулях одноименных макросов с одинаковой областью видимости.

Дополнительная информация по инструментам конструирования ленты

Источник: habr.com

Создание приложений на языке VBA для MS PowerPoint

В PowerPoint предусмотрено множество возможностей для создания эффективных и интересных презентаций, а пользовательский интерфейс приложения позволяет с легкостью воспользоваться этими возможностями. Но иногда, несмотря на богатый набор возможностей стандартного пользовательского интерфейса PowerPoint, может понадобиться найти несложный способ выполнять рутинные, повторяющиеся задачи, а также те задачи, которые не удается решить с помощью пользовательского интерфейса. К счастью, в приложения Office, такие как PowerPoint, интегрирован Visual Basic для приложений (VBA), язык программирования, позволяющий расширять возможности этих приложений.

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

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

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

Замечание 1

Существует множество других причин использовать VBA в PowerPoint, одна из важнейших среди которых — это выполнение задач, требующих взаимодействия PowerPoint с другими приложениями Office. Например, можно поместить весь текст презентации в файл данных с разделителями-запятыми (CSV), который можно открыть в Microsoft Excel 2010.

«Создание приложений на языке VBA для MS PowerPoint»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы

Основы программирования на VBA

Рассмотрим использование VBA в Microsoft PowerPoint 2010. Данную версию PowerPoint выберем, поскольку она по сравнению с более ранними имеет множество дополнительных возможностей для создания презентаций.

  1. Объектная модель Объекты программироdания связаны друг с другом отношениями иерархии, которые зовутся объектной моделью приложения. Иначе говоря, объектная модель отображает то, что видим в пользовательском интерфейсе, например, объектная модель PowerPoint содержит среди многих других объекты Application, Presentation и Slide. Объектная модель представляет собой схему приложения и его возможностей.
  2. Свойства и методы Управлять объектами можно, задавая их свойства и вызывая их методы. Задание свойства изменяет некоторое качество объекта. Вызов метода заставляет объект выполнить некоторое действие. Например, объект Slide имеет метод Copy, помещающий копию слайда в буфер обмена, и свойство Layout, представляющее макет слайда.
  3. Коллекции Многие объекты существуют в версиях единственного и множественного числа — Presentation и Presentations, Slide и Slides и т. д. Версии множественного числа называются коллекциями. Объекты коллекции используются для выполнения действия над несколькими элементами коллекции.

Макросы и редактор Visual Basic

Теперь, познакомившись с принципом работы объектной модели Microsoft PowerPoint 2010, вы, вероятно, хотите попробовать вызвать методы объекта и задать его свойства. Для этого необходимо написать свой код так, чтобы он распознавался в Office. Обычно это делается с помощью редактора Visual Basic. Несмотря на то, что он установлен по умолчанию, многие пользователи не знают о его наличии, пока этот редактор не будет включен на ленте.

  1. Вкладка Разработчик Все приложения Office 2010 используют ленту. Среди других вкладок на ленте имеется вкладка Разработчик, на которой можно вызвать редактор Visual Basic и другие средства разработчика. Так как в Office 2010 вкладка Разработчик не показана по умолчанию, необходимо отобразить ее самостоятельно. Для этого нужно выполнить указанные ниже действия.
  2. Отображение вкладки Разработчик На вкладке Файл выберем пункт Параметры, чтобы открыть диалоговое окно Параметры PowerPoint. Затем выберем элемент Настройка ленты в левой части диалогового окна. В разделе Выбрать команды, расположенном слева в окне, нужно выбрать пункт Часто используемые команды. В разделе Настройка ленты, который находится справа в диалоговом окне, выберем Основные вкладки, а затем установим флажок Разработчик. Теперь можно нажать кнопку ОК. Когда вкладка Разработчик отобразится в окне PowerPoint, необходимо обратить внимание на то, где на этой вкладке находятся кнопки Visual Basic, Макросы и Безопасность макросов. Внешний вид вкладки Разработчик представлен на рисунке 1.
  3. Проблемы безопасности Нажмем кнопку Безопасность макросов, чтобы определить, какие макросы могут выполняться и при каких условиях. Хотя неконтролируемый код макроса может серьезно повредить компьютер, условия безопасности, запрещающие выполнять полезные макросы, могут ограничить эффективность работы. Безопасность макросов — это сложный и важный вопрос, в котором следует разобраться при работе с макросами PowerPoint. Помните, что если при открытии книги, содержащей макрос, между лентой и листом появляется строка Предупреждение системы безопасности: запуск макросов отключен, можно нажать кнопку Включить содержимое, чтобы включить макрос.

Замечание 2

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

Редактор Visual Basic

После отображения вкладки Разработчик можно открыть редактор Visual Basic — встроенный инструмент, используемый для создания и изменения кода VBA для PowerPoint.

    Создание макроса в редакторе Visual Basic Нажмем кнопку Макросы на вкладке Разработчик. В открывшемся диалоговом окне Макрос введем Hello в поле Имя. Нажмем кнопку Создать, чтобы открыть редактор Visual Basic с уже введенными основными элементами нового макроса. Редактор Visual Basic содержит код, указанный ниже: Sub Hello() End Sub

Определение 1

Sub — это сокращение от Subroutine (подпрограмма), которую в данном случае можно определить как макрос.

Вызов макроса Hello приведет к выполнению любого кода между строчками Sub Hello() и End Sub. Теперь изменим макрос, чтобы он был похож на следующий код. Sub Hello() MsgBox(«Hello world») End Sub Вернемся на вкладку Разработчик в PowerPoint и снова нажмем кнопку Макросы. Выберите макрос Hello в появившемся списке, а затем нажмем кнопку Запуск, чтобы отобразить небольшое окно сообщения с текстом «Hello world».

Замечание 3

Таким образом, мы создали и запустили пользовательский код VBA в PowerPoint. Нажмем кнопку ОК в окне сообщения, чтобы закрыть его и закончить выполнение макроса. Если окно сообщения не появляется, необходимо проверить настройки безопасности макросов и перезапустить PowerPoint.

Источник: spravochnick.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru