Как запустить программу написанную в VBA приложении в Excel-е?
Написала программу, но могу её запускать только непосредственно из VBA приложения. Можно-ли сделать так, что бы запуская весь файл я видела на экране не Excel, а форму VBA? Где включается эта настройка?
Лучший ответ
Доброго времени суток.
Создать ситуацию, когда не видно самого Excel, думаю будет проблематичным. Другое дело, если надо при запуске файла *.xls запускать ваш код. Попробуйте сделать это из макроса Workbook_Open(). Либо запишите туда ваш код, либо вызывайте свою программу оттуда.
Для ручного запуска можно поместить на панель инструментов кнопку и назначить ей ваш макрос.
Остальные ответы
нажми alt+F8 выскочит панелька со всеми макросами, которые там есть. чтобы видеть код VBA нажми alt+F11 будет дерево проекта и увидишь все. нажимая ф8 сможешь пошагово видеть выполнение проги. удачи
Cola-laГуру (3247) 15 лет назад
Спасибо большое за ответ! Я могу выполнить программу, она работает. Я просто хочу, что бы те, кто будут пользоваться могли бы кликать на иконку Excell программы и сразу видели бы на экране мою программку, а не таблицы Excel
Сергей Дородонцев Профи (949) нет, так не получится. VBA работает только в приложениях excel, word и тд. поэтому всегда будет открываться сначала файл. вот в VB это возможно. это уже будет самостоятельное приложение.
Интерфейс COM в VBA | 1. Запуск программы RFEM, создание и сохранение модели, закрытие программы RFEM
Техническая статья из области расчета конструкций и использования программ Dlubal Software
Техническая статья
Эта статья была переведена Google Translator
Первая часть сообщения о интерфейсе COM описывает открытие и закрытие RFEM. В программе Excel используется язык программирования VBA; тем не менее, порядок выполнения программы такой же, как и при программировании на C#. Во-первых, необходимо добавить соответствующую ссылку в VBA для распознавания команд для интерфейса. На рисунке слева показан пример RFEM 5.
Затем, исходный код для простой программы. Сначала можно создать интерфейс для данной модели, а затем открыть программу с помощью модели. После сохранения программа будет закрыта.
Всегда полезно использовать обработчик ошибок для обнаружения и отображения возможных проблем ввода-вывода. При возникновении проблемы, лицензия будет разблокирована снова, и вы сможете получить доступ к RFEM / RSTAB. Дальнейшие разъяснения можно найти в исходном коде.
‘ Firstly, an interface
‘ to a new model is created.
Dim iModel As RFEM5.model
Set iModel = Новые RFEM5.model
‘ Here, the model name is defined,
‘ either the content of cell B2 of sheet Table1
‘ or, if empty, «test.rf5».
Dim modelName As String
If IsEmpty(Worksheets( «Table1» ).Range( «B2» ).Value) Then
modelName = «test01.rf5»
Else
modelName = CStr (Worksheets( «Tabelle1» ).Range( «B2» ).Value)
End If
‘ Transfer of the model name to the interface.
iModel.SetName(modelName)
‘ It is possible to specify a model description here.
iModel.SetDescription( «description» )
‘ Error handling routine.
On Error GoTo e
Dim iApp As RFEM5.Application
‘ Interface to the program is opened.
‘ (Program is started.)
Set iApp = iModel.GetApplication
‘ COM license and program access are blocked.
iApp.LockLicense
‘ Program is displayed in the foreground.
iApp.Show
‘ Model is saved at «C:\temp» .
iModel.Save(«C:\temp\» & modelName)
e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source
‘ COM license is unblocked, program access possible again.
iModel.GetApplication.UnlockLicense
‘ Program is closed.
iApp.Close
Автор
Dipl.-Ing. Thomas Günthel
Г-н Гюнтель осуществляет техническую поддержку пользователей Dlubal Software.
Ссылки
- Программы для проектирования в 3D и по методу BIM
22 лучших вопроса и ответа на собеседовании по VBA (2023 г.)
Вот вопросы и ответы на собеседовании VBA для как новичков, так и опытных кандидатов, желающих получить работу своей мечты.
Вопросы и ответы на собеседовании по Excel VBA для первокурсников
1) Объясните, что такое VBA или Visual Basic для приложений?
VBA означает Visual Basic для приложений; это язык программирования, управляемый событиями, разработанный Microsoft. Он преимущественно используется с офисными приложениями Microsoft, такими как MS-word, MS-Access и MS-Excel.
2) Укажите, где вы можете написать свою программу VBA для макросов?
Модуль — это место, где вы можете написать программу VBA для макроса. Чтобы вставить модуль, перейдите к «Вставить». ->Модули
3) Укажите, какой стиль комментариев используется в VBA?
Комментарии используются для документирования логики программы и пользовательской информации, с помощью которой другие программисты могут беспрепятственно работать над тем же кодом в будущем. В VBA в основном существует два метода представления комментариев.
- Любое утверждение, начинающееся с одинарной кавычки, рассматривается как комментарий.
- Или вы можете использовать оператор REM вместо одинарной кавычки (‘)
4) Как в VBA объявить переменную и константу?
В VBA переменную можно объявить с помощью ключевого слова «DIM», а константу — с помощью ключевого слова «Const».
5) Какие типы данных есть в VBA?
Типы данных в VBA делятся на две категории
Числовой тип данных | Нечисловой тип данных |
---|---|
Байт | Строка (фиксированная длина) |
Целое | Строка (переменной длины) |
Длинное | Время |
Один | Логический |
двойной | объект |
Валюта | Вариант (числовой) |
Десятичная дробь | Вариант (текст) |
6) Объясните, что такое ADO, ODBC и OLEDB?
ADO: Объекты данных ActiveX или ADO — это универсальная платформа доступа к данным, которая включает в себя функциональность DAO.
ODBC: Open Database Connectivity или ODBC — это технология, которая позволяет клиентскому приложению базы данных подключаться к внешней базе данных.
ОЛЕДБ: Это низкоуровневый программный интерфейс, предназначенный для доступа к широкому спектру связывания и внедрения объектов доступа к данным (OLE).
7) Объясните, что такое указатели на функции в VBA?
Это VBA (визуальная базовая информация) имеют гибкие приложения, но в VBA есть ограничение на указатель функции. Windows API не имеет адекватной поддержки указателей на функции, поскольку у него есть возможность использовать функцию, но нет функциональной поддержки для обратного вызова функции. Он имеет встроенную поддержку вызова, но не обратного вызова.
8) Объясните, как осуществляется «подсчет ссылок» в VBA?
В VBA, как только переменная выходит за пределы области видимости, счетчик ссылок на ссылочный объект уменьшается. Когда вы присваиваете ссылку на объект другой переменной, счетчик ссылок увеличивается. А когда ваш счетчик ссылок достигает нуля, событие прекращается.
9) Как можно явно уменьшить счетчик ссылок?
Чтобы явно уменьшить счетчик ссылок, вам нужно установить для переменной значение «Ничего».
10) Объясните, что такое объекты COM (объектная модель компонентов) в VBA?
COM-объекты обычно представляют собой файлы .dll и представляют собой скомпилированные исполняемые программы.
Вопросы и ответы на собеседовании по Excel VBA для опытных
11) Объясните, как можно набрать номер телефона через VBA?
Чтобы набрать номер телефона через VBA, вам необходимо выполнить следующие шаги.
- Команду оболочки в VBA можно использовать для запуска программы набора номера, присутствующей в ОС Windows.
- Для подключения к модему можно использовать номер телефона
- С помощью клавиш отправки и команды оболочки вы можете дозвониться до своего пользователя.
- Sendkey определяет окна для набора номера в соответствии с нажатиями клавиш приложения, в то время как Shell активирует приложение Windows.
- Макрос можно использовать для запуска программы картотеки, которая запускает функцию автоматического дозвона.
12) Объясните, что означает «Опция явная»? Где его следует использовать?
«Option Explicit» делает объявление переменных обязательным. Явная функция Line заставляет компилятор определять все переменные, которые не объявлены в инструкции dim. Эта команда значительно уменьшает проблему ошибок типа. Он используется в VBA, поскольку имеет дело с насыщенными информацией приложениями, в которых часто встречаются ошибки типов. Перед запуском какой-либо подпроцедуры ее можно использовать внутри модуля.
13) Объясните, как передавать аргументы функциям VBA?
Когда аргументы передаются функциям VBA, их можно передавать двумя способами.
- ByVal: Когда аргумент передается по значению, это означает, что в процедуру передается только значение, и любые изменения, внесенные в аргумент внутри процедуры, будут потеряны при выходе из процедуры.
- По ссылке: Когда аргумент передается по ссылке, в процедуру передается фактический адрес аргумента. Любые изменения, внесенные в аргумент внутри процедуры, будут вызваны при выходе из процедуры.
14) Укажите метод, который вызывается из объекта ObjectContext для уведомления MTS о том, что транзакция была неудачной или успешной?
Сетаборт и набор завершен метод вызывается из объекта ObjectContext для уведомления MTS о том, что транзакция не удалась или не удалась
15) Какой код позволяет найти последнюю использованную строку в столбце или последний использованный столбец строки?
Чтобы найти последнюю строку в столбце, используется команда End(xlUp), а для поиска последнего столбца в строке используется команда End(xlToLeft).
16) Укажите разницу между подпрограммами и функциями в VBA?
Разница между подпрограммами и функциями заключается в том, что
- Подпрограммы никогда не возвращают значение, но функции возвращают значения.
- Подпрограммы могут изменять значения фактических аргументов, в то время как функция не может изменять значения фактических аргументов.
17) Объясните, в чем разница между свойствами CurrentRegion и UsedRange?
- Текущий регион: Текущий регион представляет собой диапазон, ограниченный любой комбинацией пустых столбцов и строк.
- Используемый диапазон: Это свойство используется для выбора диапазона используемых ячеек на листе. Он возвращает объект Range, который представляет используемый диапазон на определенном листе.
18) Объясните, как отлаживать код VBA?
Чтобы отладить код VBA, выполните следующие действия.
- Использование точек останова (F9)
- Пошаговое выполнение (F8)
- Печать и немедленное окно и просмотр окна
19) Как остановить сценарий VBA, когда он переходит в бесконечный цикл?
Нажимая Cntrl+ Pause Break Ключ позволяет остановить сценарий VBA, когда он переходит в бесконечный цикл.
20) Укажите, какое свойство меню нельзя установить во время выполнения?
Во время выполнения свойство Name меню не может быть установлено.
21) Укажите, есть ли в VBA словарная структура?
Да, в VBA есть словарная структура. Вы можете установить ссылку на словарь, например
- Установите dict = CreateObject («Scripting.Dictionary»)
- ИЛИ Dim dict как New Scripting.Dictionary
22) Упомяните, как можно комментировать и раскомментировать блоки кода в офисном редакторе VBA?
В редакторе Office VBA вы можете комментировать и раскомментировать блоки кода, выполнив следующие действия.
- В редакторе VBA перейдите в «Просмотр». -> Панели инструментов -> Настроить… ИЛИ щелкните правой кнопкой мыши на панели инструментов и выберите «Настроить».
- Выберите меню редактирования слева на вкладке команд.
- Прокрутив вниз, вы увидите два значка: «Блокировать комментарии» и «Раскомментировать».
- Когда вы перетащите их на панель инструментов, у вас будет легкий доступ, чтобы выделить блок кода и выполнить над ним действие.
Эти вопросы для собеседования также помогут вам в устной речи.
- Как писать макросы в Excel: Учебник по макросам – что такое и как использовать
- VBA в Excel: что такое Visual Basic для приложений, как использовать
- Учебное пособие по Excel VBA для начинающих: изучите за 3 дня
- Переменные VBA, типы данных и объявление констант VBA в Excel
- Массивы Excel VBA: что такое, как использовать и типы массивов в VBA
Макрос
Макрос, или макрокоманда — это небольшая программа, которая выполняет заданный набор действий в офисном документе. Чаще всего макросами пользуются в Microsoft Office Excel для работы с таблицами. Создать и запустить их можно внутри Excel.
Освойте профессию «Аналитик данных»
Макрос — подобие скрипта: небольшой программы, четко заточенной под определенные действия, чаще всего не имеющей графического интерфейса. Программу можно представить как большую и обширную команду, заданную системе. Поэтому второе название макроса — макрокоманда.
Кто пользуется макросами в работе
Макросами желательно уметь пользоваться всем, кто активно работает с Excel. Это экономисты, разные категории менеджеров, аналитики и специалисты по маркетингу или рекламе. Им приходится обрабатывать табличные данные, иногда в больших количествах.
Умение работать с макросами — не всегда обязательное условие для получения работы, но крайне желательно и может быть полезно в любом случае, если вы часто сталкиваетесь с Excel-таблицами.
Профессия / 12 месяцев
Аналитик данных
Находите закономерности и делайте выводы, которые помогут бизнесу
Для чего нужны макросы
- упростить и ускорить работу с документами;
- автоматизировать рутину и сконцентрироваться на интеллектуальных задачах;
- избежать человеческих ошибок в ряде задач, таких как, например, форматирование данных в таблице;
- быстро находить нужную информацию среди большого объема данных;
- объединять работу в нескольких продуктах Microsoft Office, потому что один макрос может работать с разными программами офисного пакета;
- создавать дополнительные функции, которых нет в программе изначально, но которые могут понадобиться пользователю.
Как это работает
Работа с макросами выглядит так: сначала пользователь создает набор команд с помощью инструментов внутри Excel, потом запускает выполнение одной кнопкой. В результате то, что вручную пришлось бы делать несколько минут, выполняется автоматически и не требует усилий со стороны человека. Так автоматизируют рутинные процессы.
Сохранить макрос можно локально — для конкретного документа, или глобально — для всех документов.
Когда макрос запускают, Excel выполняет его код — совершает действия, которые в нем описаны. Это похоже на написание и запуск программы при разработке скриптов, но для создания макросов не обязательно уметь программировать.
Запускать макрос можно сколько угодно раз, и он каждый раз будет выполнять заложенные в нем действия.
Читайте также Востребованные IT-профессии 2023 года: на кого учиться онлайн
VBA: язык для макросов
«Изнутри» макрос — код на языке программирования VBA, который принадлежит Microsoft. Аббревиатура расшифровывается как Visual Basic Application. Язык основан на Visual Basic, но адаптирован для использования внутри офисного пакета. Код описывает команды, которые нужно выполнить.
VBA встроен в Excel и другие программы Microsoft Office. Это значит, что они распознают язык и могут выполнять написанные на нем команды, если те поступят в программу. Писать на нем можно изнутри офисного пакета в окне Visual Basic — оно открывается через меню.
Пользователь, досконально знающий VBA, может создавать сложные макросы. Но разбираться в языке и уметь программировать для решения большинства задач не нужно. Создать макрос можно без написания кода вручную.
Как создать макрос в Excel
Создать новую макрокоманду можно двумя способами: написать код на языке VBA или записать действия с помощью специального встроенного модуля — макрорекордера.
Для обоих способов нужно открыть панель макросов. Это можно сделать через меню: вкладка «Разработчик», кнопка «Макросы». Если у вас в интерфейсе нет вкладки разработчика, кнопку можно найти в разделе «Вид» справа. А можно настроить окно так, чтобы вкладка появилась:
- перейти по пути «Файл — Параметры» или кликнуть правой кнопкой по меню;
- выбрать «Параметры Excel» и «Настроить ленту»;
- в списке «Основные вкладки» поставить галочку напротив пункта «Разработчик».
Теперь подробнее поговорим об обоих способах создания макроса.
Написать код вручную. Для этого понадобится открыть окно набора кода. Можно сделать это из вкладки «Разработчик»: там есть кнопка, которая называется Visual Basic. Если вы нажмете на нее, откроется окно. Оно будет пустым: редактор для написания кода надо открыть самостоятельно с помощью меню слева. Там есть кнопка View Code.
Второй способ открыть интерфейс для написания кода — нажать на кнопку «Макросы», ввести название нового макроса в верхней строке и нажать «Создать». В этом случае окно VBA откроется уже с пустой «заготовкой» под макрос и открытым редактором, где прописаны начало и конец команды. Останется только написать код в этом редакторе и сохранить.
Станьте аналитиком данных и получите востребованную специальность
Мы не будем углубляться в синтаксис и правила написания кода на Visual Basic: если человек только начинает работать с макросами, поначалу он редко пользуется этой возможностью. Хотя в будущем она может серьезно ему помочь.
Записать действия с таблицей. Второй вариант, более простой и не требующий уметь программировать, — воспользоваться макрорекордером. Так называется встроенный инструмент Excel, который «записывает» действия пользователя и потом на их основе автоматически генерирует код. Это похоже на запись видео или звука, только «пишутся» не кадры, а действия.
Выглядит это так: человек нажимает во вкладке «Разработчик» на кнопку «Записать макрос», вводит для него название, а потом выполняет действия с таблицей. Макрорекордер записывает эти действия и переводит их в код на Visual Basic, который сохраняется в виде макроса. Потом пользователь нажимает кнопку «Остановить запись», и рекордер прекращает записывать. Макрос готов, и им можно пользоваться
Пользоваться макрорекордером удобнее и быстрее для большинства действий. Его иногда рекомендуют как инструмент «для чайников», но вообще-то им пользуются и профессионалы, когда хотят сэкономить время.
Ограничения в использовании макрорекордера
Запись макроса – мощный, но не всемогущий инструмент. У нее есть ряд ограничений. С ее помощью нельзя:
- создавать сложные конструкции, например условные, когда какое-то действие выполняется, только если справедливо некоторое условие, или циклы;
- придумывать команды, которых нет в Excel изначально, и писать их с нуля;
- выполнять действия, при которых не нужно выбирать ячейку таблицы — макрорекордер работает только с ячейками, а например, открыть другой лист не сможет.
Но все перечисленное можно сделать вручную с помощью VBA. Более того: код пишется на Visual Basic, и «понимать» его может не только Excel — практически все программы офисного пакета. Поэтому макрос, написанный самостоятельно, может взаимодействовать поочередно с несколькими программами, например загружать в Excel данные из Access. Возможность работы «за пределами» Excel специфична для кода, написанного вручную.
Что лучше: писать код или записывать действия
Мы уже сказали, что макрорекордер чуть менее функционален; но есть еще одна деталь. Макрорекордер избыточен. Это значит, что при автоматической записи в макрос добавляется много лишнего, «мусорного» кода, и программы не оптимизированы. Потому они могут выполняться чуть медленнее, чем написанные вручную, и их тяжелее читать другим пользователям.
Это не значит, что от записи действий нужно отказываться. Нет, запись макросов — хороший способ сэкономить время на их создании. Но если вы знаете, что с вашей макрокомандой потом будет работать другой человек, или хотите выполнить какое-то сложное ресурсоемкое действие, лучше воспользоваться ручной записью.
В начале работы с макросами пользователь обычно не знаком с VBA или знаком, но слабо. Поэтому использование макрорекордера на этом этапе вполне оправдано и закономерно, помогает разобраться с тем, как работают макросы. Умение писать код на VBA приходит со временем, если человек постепенно учится.
Станьте аналитиком данных и получите востребованную специальность
Расширение файлов с макросами
Обычный файл Excel не может сохранить внутри себя макрос. Чтобы тот остался в документе и его можно было пересылать вместе с таблицей, понадобится сохранить файл с расширением .xslm — он поддерживает макросы. Файлы с расширением .xlsx их не поддерживают.
Абсолютные и относительные значения
Как и при написании функций в Excel, в макросах можно задавать абсолютные и относительные значения ячеек. По умолчанию макрос работает с абсолютными значениями — то есть, если вы кликнете в макрорекордере на ячейку B5, он при выполнении всегда будет выбирать B5. Чтобы макрос пользовался относительными значениями, то есть мог работать с разными ячейками, понадобится включить режим «Относительные ссылки». Кнопка для его включения находится прямо под кнопкой записи макроса.
В режиме относительных ссылок макрос начинает работу не с жестко зафиксированной ячейки с конкретным значением, а с той, которую сейчас выделил пользователь.
Создание макроса через запись: пошаговая инструкция
Разберем использование макрорекордера пошагово. Это довольно просто: можно с ходу создать несложный макрос и потом пользоваться им, даже если вы раньше не имели дел с макрокомандами.
-
Подготовка Понадобится перейти в панель «Разработчик». Если вы хотите, чтобы макрокоманда работала не с жестко зафиксированными ячейками, а с теми, которые вы выберете, нажмите на кнопку «Относительные ссылки». Кнопка включит относительный режим. Если вам нужна работа с абсолютными значениями, проигнорируйте этот шаг.
После этого нужно будет нажать на кнопку «Запись макроса».
Параметры макроса Откроется окно, в котором надо будет придумать уникальное имя для макрокоманды, а по желанию — комбинацию клавиш, которая будет запускать макрос. Там же надо будет:
1. Выбрать, где сохранится макрос — внутри открытого документа, внутри новой таблицы или в «личной книге», то есть глобально для всего Excel;
2. Придумать короткое описание, которое объясняет, что делает команда.
Описание и горячие клавиши не обязательны. Вариант сохранения по умолчанию — текущий документ, и им пользуются чаще всего, чтобы передавать таблицу другим можно было вместе с макросами. Личную книгу применяют, если пишут макрокоманду, которой планируют пользоваться в разных таблицах.
Кстати, личную книгу тоже можно передавать другим: это специальный файл внутри Excel, где хранится написанный пользователем код. В офисном пакете есть инструменты, позволяющие делиться этим файлом.
Запись действий После того как вы настроите будущий макрос, понадобится нажать «ОК». Запустится запись. Макрорекордер начнет фиксировать действия, которые вы выполняете.
Это могут быть любые действия с ячейками: выделение, переход на другую ячейку, редактирование ее значения, вставка или применение форматирования. Например, записанный макрос поможет привести несколько таблиц к единому виду внешне. Пользователь выделит цветом верхнюю строку, изменит ширину столбцов и исправит выравнивание для контента.
Проверить, что макрорекордер работает, можно в левом нижнем углу окна Excel. Когда он записывает действия, там отображается значок в виде квадратика.
Особенности выполнения действий Помните, что рекордер записывает все выделения, клики или переходы по ячейкам, поэтому старайтесь не совершать лишних действий. Если вы сделали что-то лишнее, отменить это можно, только если отредактировать код в редакторе Visual Basic — или записать макрос с самого начала.
— если вы создали его для конкретной книги — из этой книги;
— если вы сохранили его в личную книгу — из любого документа Excel.
Как пользоваться созданным макросом
Если при создании макроса вы задали для него комбинацию горячих клавиш, то его можно в любой момент запустить с помощью этого сочетания. Но обращайте внимание на то, где вы сохранили макрос: если только в пределах конкретной таблицы — запустить его из другого документа не получится, тот просто не будет о нем знать.
Если же комбинации нет, то для запуска макроса понадобится перейти в меню «Разработчик» и там нажать на кнопку «Макросы». Откроется список созданных вами и доступных для этого документа макрокоманд. Нужно будет выбрать нужную и нажать «Выполнить». После этого макрос исполнится.
Мы советуем назначать горячие клавиши для макросов, которые вы планируете запускать часто, а через меню открывать более редко используемые.
Узнайте больше о макросах и использовании Excel на наших курсах менеджмента: мы поможем научиться современным инструментам и освоить востребованную профессию.
Аналитик данных
Аналитики влияют на рост бизнеса. Они выясняют, какой товар и в какое время больше покупают. Считают юнит-экономику. Оценивают окупаемость рекламной кампании. Поэтому компании ищут и переманивают таких специалистов.
Статьи по теме: