Как запустить программу макросом

У меня есть макрос Excel VBA, который мне нужно запускать при доступе к файлу из пакетного файла, но не каждый раз его открывать (следовательно, не используя событие открытого файла). Есть ли способ запустить макрос из командной строки или командного файла? Я не знаком с такой командой. Предположим, что среда Windows NT.

Polymeron 12 янв. 2010, в 15:06
Поделиться
Является ли использование vbscript / jscript с хостом сценариев Windows вариант?
madaboutcode 12 янв.

2010, в 16:41
Поделиться:
command-line

10 ответов

Лучший ответ

Вы можете запустить Excel, открыть книгу и запустить макрос из файла VBScript.

Скопируйте приведенный ниже код в Блокнот.

Сохраните его с расширением vbs и запустите его.

Ключевая строка, выполняющая макрос:

xlApp.Run «MyMacro»

Robert Mearns 13 янв. 2010, в 12:41
Поделиться

Это то, что я искал! Оно работает. Я должен добавить пару изменений, необходимых для того, чтобы это работало без глюков: 1. Это «xlApp.Run». 2. Перед выходом следует использовать xlApp.SaveAs, иначе изменения, сделанные макросом, не будут сохранены. (можно использовать xlApp.DisplayAlerts = False), чтобы избежать связанных всплывающих окон) 3. Перед выходом следует вызвать xlApp.ActiveWorkbook.Close или электронная таблица останется открытой (хотя и скрытой), что отключает дальнейшее редактирование. В общем, это то, что я искал 🙂

Keyran | Инструкция к программе.

Polymeron 24 янв. 2010, в 15:13

Также рассмотрите возможность добавления xlApp.Visible = True , иначе вы не увидите Excel или каких-либо его диалоговых окон, которые могут появиться.

Rachel Hettinger 14 окт. 2014, в 22:24
Процесс EXCEL.exe не закрывается, когда я запускаю этот скрипт дословно.
André C. Andersen 27 окт. 2014, в 17:17
Mubeen Shahid 29 окт.

2014, в 09:34

Какой из ваших файлов Excel защищен паролем, и вы хотите открыть его для чтения-записи? Что вы корректируете свой код?

Jason Samuels 05 авг. 2016, в 12:26
Robert Mearns 05 авг. 2016, в 15:02
Показать ещё 4 комментария

Самый простой способ сделать это:

1) Запустите Excel из своего командного файла, чтобы открыть книгу, содержащую ваш макрос:

2) Вызовите свой макрос из события Workbook_Open книги, например:

Private Sub Workbook_Open() Call MyMacro1 ‘ Call your macro ActiveWorkbook.Save ‘ Save the current workbook, bypassing the prompt Application.Quit ‘ Quit Excel End Sub

Теперь это приведет к возврату элемента управления в пакетный файл для выполнения другой обработки.

bvukas 12 янв. 2010, в 18:43
Поделиться

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

Polymeron 13 янв. 2010, в 16:10

Это легко решить, изменив параметр реестра, который сообщает Excel, какой уровень безопасности установлен.

bvukas 18 янв. 2010, в 22:11
Конечно, цифровая подпись рабочей книги всегда помогает, даже с тестовым сертификатом 🙂
bvukas 19 янв. 2010, в 15:42

Как установить макрос в программе Keyran и использовать макросы

И вообще делать это без Excel? Я имею в виду другую программу, более специализированную для быстрого выполнения макросов из командной строки?

skan 16 окт. 2013, в 22:54
Как мне открыть файл без запуска макроса, если мне придется что-то изменить позже?
wviana 18 июль 2016, в 18:06
Показать ещё 3 комментария

вы можете написать vbscript для создания экземпляра excel с помощью метода createobject(), затем откройте книгу и запустите макрос. Вы можете либо напрямую вызвать vbscript, либо вызвать vbscript из командного файла.

Читайте также:
Тип вредоносной программы среда обитания

Fink 12 янв. 2010, в 17:59
Поделиться

Метод, показанный ниже, позволяет запускать определенный макрос Excel из командного файла, он использует переменную среды для передачи имени макроса из пакета в Excel.

Поместите этот код в командный файл (используйте ваши пути к EXCEL.EXE и к книге):

Поместите этот код в Excel VBA ThisWorkBook Object:

Private Sub Workbook_Open() Dim strMacroName As String strMacroName = CreateObject(«WScript.Shell»).Environment(«process»).Item(«MacroName») If strMacroName <> «» Then Run strMacroName End Sub

И поместите свой код в модуль Excel VBA, как показано ниже:

Sub MyMacro() MsgBox «MyMacro is running. » End Sub

Запустите пакетный файл и получите результат:

Изображение 3747

В случае, когда вы не собираетесь запускать какой-либо макрос, просто поставьте пустое значение Set MacroName= в пакет.

omegastripes 28 дек. 2015, в 21:15
Поделиться

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

Я удалил «Application.Quit», потому что мой макрос вызывает пользовательскую форму, заботясь об этом.

ИЗМЕНИТЬ

Я действительно отработал это, на всякий случай, когда кто-то хочет запустить пользовательскую форму «подобно» автономному приложению:

Проблемы, с которыми я столкнулся:

1 — Я не хотел использовать событие Workbook_Open, поскольку excel заблокирован только для чтения. 2 — Команда партии ограничена тем фактом, что (насколько мне известно) она не может вызвать макрос.

Сначала я написал макрос, чтобы запустить мою пользовательскую форму, скрывая приложение:

Sub open_form() Application.Visible = False frmAddClient.Show vbModeless End Sub

Затем я создал vbs для запуска этого макроса (выполнение этого с относительным путем было сложным):

И я, наконец, сделал пакетный файл для выполнения VBS.

Обратите внимание, что в моем Userform_QueryClose :

я также включил «Установить обратно в видимый»

Private Sub cmdClose_Click() Unload Me End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ThisWorkbook.Close SaveChanges:=True Application.Visible = True Application.Quit End Sub

В любом случае, спасибо за вашу помощь, и я надеюсь, что это поможет, если кому-то это понадобится

Axn40 05 янв. 2014, в 08:05
Поделиться

Я всегда тестировал количество открытых книг в Workbook_Open(). Если это 1, то рабочая книга была открыта командной строкой (или пользователь закрыл все книги, а затем открыл это).

If Workbooks.Count = 1 Then ‘ execute the macro or call another procedure — I always do the latter PublishReport ThisWorkbook.Save Application.Quit End If
Brian Hoffman 06 фев. 2013, в 15:47
Поделиться

Вместо прямого сравнения строк (VB не найдет их равными, поскольку GetEnvironmentVariable возвращает строку длиной 255):

Private Sub Workbook_Open() If InStr(1, GetEnvironmentVariable(«InBatch»), «TRUE», vbTextCompare) Then Debug.Print «Batch» Call Macro Else Debug.Print «Normal» End If End Sub
laybmw 27 март 2012, в 16:00
Поделиться

Если вам удобнее работать в Excel/VBA, используйте открытое событие и протестируйте среду: либо есть файл сигнала, запись реестра или переменная среды, которая контролирует то, что делает событие open.

Вы можете создать файл/настройку снаружи и протестировать внутри (использовать GetEnviromentVariable для env-vars) и легко протестировать. Я написал VBScript, но сходство с VBA вызывает у меня больше тоски, чем легкость.

Как я понимаю, вы хотите использовать электронную таблицу, обычно большую часть/часть времени, но она запускается в пакетном режиме и делает что-то дополнительное/другое. Вы можете открыть лист из командной строки excel.exe, но вы не можете контролировать, что он делает, если он не знает, где он находится. Использование переменной среды относительно просто и упрощает тестирование электронной таблицы.

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

Чтобы уточнить, воспользуйтесь приведенной ниже функцией, чтобы изучить среду. В модуле объявить:

Private Declare Function GetEnvVar Lib «kernel32» Alias «GetEnvironmentVariableA» _ (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long Function GetEnvironmentVariable(var As String) As String Dim numChars As Long GetEnvironmentVariable = String(255, » «) numChars = GetEnvVar(var, GetEnvironmentVariable, 255) End Function

В открывшемся событии Workbook (как и другие):

Private Sub Workbook_Open() If GetEnvironmentVariable(«InBatch») = «TRUE» Then Debug.Print «Batch» Else Debug.Print «Normal» End If End Sub

Добавить действующий код, если применимо. В пакетном файле используйте

set InBatch=TRUE

Источник: overcoder.net

Как создать макрос в Google Таблицах и назначить для него кнопку

Как создать макрос в Google Таблицах и назначить для него кнопку

Макрос – небольшая программа, выполняющая действия, заранее записанные пользователем. Google Таблицы поддерживают создание таких программ, что значительно упрощает рутинные действия, с которыми приходится сталкиваться каждый день. Я покажу, как можно записать макрос и запускать его выполнение при помощи графической кнопки, расположенной прямо в таблице.

Пример задачи для макроса

Сначала предлагаю вкратце остановиться на том, что именно будет делать макрос, который я взял в качестве примера для данной статьи. Его задача – перенести записанные данные из одного листа таблицы на другой, формируя тем самым базу данных в автоматическом режиме. Это упростит процесс заполнения информации и избавит юзера от необходимости следить за строками. Разберу все составляющие таблицы для реализации поставленной цели.

  1. У меня есть небольшая форма для заполнения с номерами товаров, их названием, серийным номером, датой. Проверка содержимого листа перед созданием макроса в Google Таблицах
  2. На следующем изображении вы видите простую формулу для счета номера каждого товара, чтобы не вводить его каждый раз. Ссылка в функции ведет на лист с базой данных. Первая функция в таблице перед созданием макроса в Google Таблицах
  3. Дата тоже проставляется автоматически. Вторая функция в таблице перед созданием макроса в Google Таблицах
  4. Вручную будут заполняться только названия для товаров и их серийные номера, после чего все это переносится на лист базы данных. Пример переноса данных перед созданием макроса в Google Таблицах
  5. На этом листе вся таблица повторяется по структуре, но пока она пустая, поскольку все будет переноситься автоматически при помощи макроса, о котором пойдет речь далее. Пустой лист для базы данных перед созданием макроса в Google Таблицах

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

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей

Запись макроса в Google Таблицах

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

  1. Для начала я заполню динамические данные в своей таблице. Сделайте это и вы, если в этом возникнет необходимость. Динамически заполняемые данные перед созданием макроса в Google Таблицах
  2. После этого откройте меню «Расширения», наведите курсор на пункт «Макросы» и нажмите кнопку «Записать макрос». Вызов инструмента через меню для создания макроса в Google Таблицах
  3. Появится окно записи, значит, вы можете приступать к выполнению рутинных действий. Учитывайте, что макрос записывает абсолютно все изменения, поэтому старайтесь не делать лишних нажатий и редактирований ячеек. Панель с уведомлениями для создания макроса в Google Таблицах
  4. Я скопировал всю строку для переноса в базу данных и использую специальную вставку «Только значения», чтобы избежать вставки функций, которые тут не нужны. Выполнение действия для создания макроса в Google Таблицах
  5. Далее удаляю динамические значения, чтобы форма была готова для заполнения другими товарами. Выполнение второго действия для создания макроса в Google Таблицах
  6. В завершение на листе, куда была перенесена строка, создаю новую строку выше, чтобы обеспечить место для дальнейшего копирования. Выполнение третьего действия для создания макроса в Google Таблицах
  7. Остается только нажать на «Сохранить», завершая тем самым запись макроса. Если вы не уверены, что все сделали правильно, щелкните на «Отмена», снова запустите запись и повторите действия. Сохранение результата для создания макроса в Google Таблицах
  8. Задайте для макроса любое название на английском языке. Быстрые клавиши можно не задавать, поскольку далее разберемся с тем, как запускать скрипт при помощи графической кнопки. Добавление названия для создания макроса в Google Таблицах
  9. Проверьте макрос через то же самое меню «Макросы», отыскав его по названию. Поиск макроса через меню после его создания Google Таблицах
  10. Если результат вас устраивает, переходите к следующему шагу. В противном случае удалите текущую программу и создайте новую. Проверка выполнения макроса после его создания в Google Таблицах
Читайте также:
Как узнать разрядность установленной программы

Назначение кнопки для запуска макроса

Как вы уже увидели выше, для запуска макроса приходится искать его через меню или запоминать горячую клавишу. Куда проще создать графическую кнопку, одно нажатие по которой быстро запустит выполнение программы. Благо в Google Таблицах это реализуемо при помощи вставки простого рисунка, что осуществляется так:

  1. Разверните меню «Вставка» и нажмите по пункту «Рисунок». Использование вставки рисунка для назначения кнопки макроса Google Таблицах
  2. Создайте любой рисунок или вставьте геометрическую фигуру, выбрав для нее подходящий размер. Можно даже использовать любой текст. Создание рисунка для назначения кнопки макроса Google Таблицах
  3. Расположите рисунок на листе, щелкните по трем точкам справа от него и выберите «Назначить скрипт». Переход к добавлению скрипта для рисунка в Google Таблицах
  4. В качестве скрипта укажите точное название макроса, который создали ранее. Добавление скрипта для рисунка в Google Таблицах
  5. Теперь кликните по картинке ЛКМ и убедитесь в том, что скрипт был успешно выполнен (на экране появится соответствующее уведомление). Нажатие по рисунку для запуска макроса в Google Таблицах

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

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

Макрокоманда «ЗапускПрограммы»

Вы можете использовать макрокоманду ЗапускПрограммы в классических базах данных Access для вызова процедуры Visual Basic для приложений (VBA).

Настройка

Макрокоманда ЗапускПрограммы имеет следующий аргумент:

Аргумент макрокоманды

Имя функции

Имя вызываемой процедуры VBA типа Function. Аргументы функции заключаются в скобки. Имя функции вводится в поле Имя функции окна конструктора макросов. Это обязательный аргумент.

Примечание: В базе данных Access (MDB или ACCDB) нажмите кнопку Построить, чтобы задать функцию для этого аргумента при помощи построителя выражений. Щелкните нужную функцию в списке построителя выражений.

Примечания

Пользовательские процедуры функций хранятся в Access модулях.

Наличие скобок обязательно, даже если процедура типа Function не имеет аргументов, как в следующем примере:

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

Access не учитывает возвращаемое значение функции.

Примечание: Процедура типа Function не может быть вызвана из макроса, если имя функции совпадает с именем модуля.

Чтобы запустить подпрограмма или процедура обработки событий в Visual Basic, создайте процедуру Function, которая вызывает процедуру Sub или процедуру события. Затем запустите процедуру Function с помощью макрокода RunCode.

Если для вызова функции используется макрокод RunCode, Access ищет функцию с именем, заданным аргументом «Имя функции» в стандартных модулях базы данных. Однако если это действие выполняется в ответ на выбор команды меню в форма или отчет либо в ответ на событие в форме или отчете, Access сначала ищет функцию в модуле класса формы или отчета, а затем в стандартных модулях. Access не ведет поиск в модулях классов, которые отображаются в области модулей области навигации для функции, указанной аргументом «Имя функции».

Эта макрокоманда недоступна в модуле VBA. Вместо этого запустите нужную процедуру Function непосредственно в VBA.

Источник: support.microsoft.com

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