Запуск макроса без запуска excel

I wonder how would you assign VBA codes written on Excel VBA to a sort of procedure/programme or maybe dos related filepath, which you can directly without opening excel. In other word, i want to have a desktop icon i can stir up a vba code i assigned to.

Community's user avatar

asked Oct 6, 2012 at 11:07

serhat's user avatar

7

You can do it easily.

Add the following content in a VBS file (e.g. example.vbs). This is only a text file that you can write using Notepad:

'Code should be placed in a .vbs file
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:pathtomyexcelfilemyExcelMacroFile.xlsm'!MyModule.MyFunctionName"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

Then you can double clic on the VBS file to execute it.

Source: http://wellsr.com/vba/2015/excel/run-macro-without-opening-excel-using-vbscript/

answered Oct 13, 2016 at 8:46

Julien Kronegg's user avatar

Julien KroneggJulien Kronegg

4,9231 gold badge46 silver badges60 bronze badges

3

If the VBA in the Excel macro doesn’t reference Excel objects, you can just copy the code into a text file and change the extension to .VBS. However, VB script doesn’t like it when you use types, just delete the «AS something» from your Dim statement.

I do this often to get the benefit of Intellisense, which I wouldn’t have using Notepad.

If my assumption is correct, then you probably want to change your tags to VB Scripting instead of Excel to get appropriate help.

answered Oct 6, 2012 at 15:07

Robert Co's user avatar

Robert CoRobert Co

1,7158 silver badges14 bronze badges

If I understand that right, you can simply write VBS code in a text file and rename it to .vbs
(make sure file endings are visible in Windows). On doubleclick the file is executed by the Windows Scripting Host. VBS lacks some functionality of VBA but you can do a lot with CreateObject/GetObject.

answered Oct 6, 2012 at 11:56

KekuSemau's user avatar

KekuSemauKekuSemau

6,8214 gold badges25 silver badges34 bronze badges

1

Though the learning curve may be a bit steep, but you could consider using AutoHotKey. This allows you to create your own scripts and if so desired turn them into (rather large) .exe files. AutoHotKey is free!

answered Oct 7, 2012 at 9:45

Robert Ilbrink's user avatar

Robert IlbrinkRobert Ilbrink

7,6982 gold badges22 silver badges31 bronze badges

write a cmd or ps1 that opens an excel and in that excel’s startup run your macro… and then when finished close it.

this can be a solution but you are probably doing something which is unnecessary in correct planned environments.

answered Oct 23, 2012 at 13:44

Serdar's user avatar

SerdarSerdar

1,4062 gold badges17 silver badges42 bronze badges

0 / 0 / 0

Регистрация: 09.06.2011

Сообщений: 33

1

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

15.10.2012, 19:15. Показов 18932. Ответов 7


Студворк — интернет-сервис помощи студентам

Помогите открыть файл Excel vba, я туда вписала код: на закрытие программы



0



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

15.10.2012, 19:23

2

Викулька, не понятно, что у вас за задача.



1



0 / 0 / 0

Регистрация: 09.06.2011

Сообщений: 33

15.10.2012, 19:26

 [ТС]

3

мне нужно открыть проект мой, я нечайно вписала код который мне не дает открыть код vba и оттудова убрать его, я в него вложила почти 2 часа и не хотела бы его переделывать



0



5468 / 1148 / 50

Регистрация: 15.09.2012

Сообщений: 3,514

15.10.2012, 19:29

4

Викулька, у меня открывается ваш файл и в VBA я вижу форму.



1



3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,085

15.10.2012, 19:32

5

Решения этой проблемы: Запуск Excel, отключить макросы, закрыть Excel, запустить Ваш файл и исправить код и получится:



1



0 / 0 / 0

Регистрация: 09.06.2011

Сообщений: 33

15.10.2012, 19:39

 [ТС]

6

вот спасибо, а я думала все клинцы на шею))), а не подскажите как сделать что бы при закрытии формы закрыть не только ее но и Excel



0



3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,085

15.10.2012, 19:51

7

Вставь тот опасный код (строку) в процедуру выхода из формы и будет счастье.



1



Апострофф

Заблокирован

16.10.2012, 08:41

8

Вариант —
запускаем Excel,
Ctrl+O,
ищем проблемный файл,
жмём Shift и открываем



3



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

16.10.2012, 08:41

8

 

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

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

файл с макросом — в папку XLSTART  
сам макрос — в процедуру Workbook_Open на лист макросов Эта книга

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Не получается так.    
Книга, которую создают такие приложения, не записана на диск еще. Потому код из Personal.xls не выполняется когда создается такой сеанс EXCEL…

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

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

  пс. про Personal.xls я вообще не говорил. это то же самое?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Может кто-нибудь знает как обработать «УПАВШИЕ» в EXCEL данные из другого приложения с помощью макросов?

 

Alex_ST

Пользователь

Сообщений: 2746
Регистрация: 22.12.2012

На лицо ужасный, добрый внутри

Вы что, хотите сказать, что при открытии Ёкселя, когда автоматом создаётся ещё не сохраненная нигде пустая Книга1, у вас не открывается, лежащий в папке XLSTART файл Personal.xls и не отрабатываются его события?  
Что-то с трудом верится…  
Ну, если даже почему-то вдруг и не срабатывает обработчик события Workbook_Open, расположенный в модуле книги файла Personal.xls, то попробуйте использовать вместо него обработчик события Auto_Open в стандартном модуле.

С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!)
<#0>

 

ИМЕННО ТАК, ПОПРОБУЙТЕ САМИ.  
Макрос с именем «auto_open» будет выполняться при каждом открытии книги, содержащей макрос, вручную.

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

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

 

может быть, я чего-то не понимаю, охота разобраться, т.к., хоть до сих пор не использовал такую возможность, но сейчас, благодаря этому форуму, кажется, нашёл реальное применение в своей работе.  
так вот. как я понимаю, Personal.xls — это обычный файл Excel. Но если он называется именно так (в любой версии) и расположен в папке XLStart, то он служит т.н. «личной книгой макросов» — т.е. открывается автоматически при запуске Excel и макросы, находящиеся в нём, будут доступны в любой книге.  
если же в вашем варианте такой файл не открывается, тогда, наверное, есть разница между запуском Excel’я и созданием нового объекта Excel’я в другом приложении? т.е. тогда Excel как бы «не запускается».  
перечитал… сумбурно немножко… но по-другому что-то не получается выразиться :)

 

Serge

Пользователь

Сообщений: 11308
Регистрация: 01.01.1970

При выгрузке из 1С не происходит события открытия (запуска) Экса.  
Вы об этом?

 

Alex_ST

Пользователь

Сообщений: 2746
Регистрация: 22.12.2012

На лицо ужасный, добрый внутри

Не поленился, проверил.  
Понаставил у себя в Personal.xls MsgBox’ов в Workbook_Open и в Auto_Open …  
Сохранил скрин экрана с таблицей Ёкселя в ДжиПег. Распознал в файнридере и велел ему передать распознанный проект в Ёксель.  
Нифига не появились MsgBox’ы … Посмотрел в VBE — только этот проект и открыт и больше ничего — ни Персонала, ни одной надстройки…  
Даже при уже открытом Ёкселе и объявленном в декларациях модуля книги Personal.xls объекте Application для отлавливания событий в других книгах Private WithEvents App As Application событие App_NewWorkbook при передаче на анализ в Ёксель из файнридера НЕ ВОЗНИКАЕТ!  
Тут надо ждать гуру. Может, что посоветуют…

С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!)
<#0>

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

попробуйте грузить в ворд — там шаблон всегда грузится, а в нем можно макрос запускать

 

Alex_ST

Пользователь

Сообщений: 2746
Регистрация: 22.12.2012

На лицо ужасный, добрый внутри

{quote}{login=The_Prist}{date=28.03.2011 10:05}{thema=}{post}…Сторонние приложения запускают Excel типа в безопасном режиме(вроде как с зажатой клавишей Shift). Так что все макросы и надстройки игнорируются {/post}{/quote}  
Дмитрий, спасибо за информацию.  
На чём бы узелок завязать чтобы вспомнить когда понадобится…?  
(борода уже вся в узелках :)

С уважением, Алексей (ИМХО: Excel-2003 — THE BEST!!!)
<#0>

 

{quote}{login=Mijver}{date=27.03.2011 01:54}{thema=Запуск макроса при любом старте EXCEL}{post}Как запустить макрос при любом старте EXCEL, включая случаи передачи данных из приложений, например, из FineReader распознанный текст. Книга с этими данными не сохранена еще на диске.{/post}{/quote}  

  КАК Я ПОНЯЛ — НАДО РУКАМИ СОХРАНЯТЬ ФАЙЛ «УПАВШИЙ» ИЗ ПРИЛОЖЕНИЯ, ПОТОМ ЗАСТАВИТЬ ЕГО ИСКАТЬ, ЧТОБЫ ЗАПУСТИЛСЯ МАКРОС… ИЛИ В ПРИЛОЖЕНИИ КОВЫРЯТЬСЯ, ЕСЛИ ОНО ПОЗВОЛИТ…

 

Hugo

Пользователь

Сообщений: 23252
Регистрация: 22.12.2012

А может vbs запустить?  

  Set objExcel = GetObject(, «Excel.Application»)  
set ws=objExcel.sheets(1)  
msgbox ws.cells(1,1).value

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

Из файнридера не грузится.

 

Mijver: «КАК Я ПОНЯЛ — НАДО РУКАМИ СОХРАНЯТЬ ФАЙЛ «УПАВШИЙ» ИЗ ПРИЛОЖЕНИЯ». И не иначе — вы указываете Абби куда передать распознанное, вызывается соответствующее приложение и в него помещаются данные, как вы с ними согласились — запомнили. Нет, назад в Абби, правите в Абби, и снова передача… Во всяком случае даже по «короткой» дорожке (зависит от версии)- автоматом распознать и передать в XL — требуется сохранять под указанным именем. Или что-то не договаривают…  
-96602-

 

СПАСИБО ЗА ОБСУЖДЕНИЕ.    
Я ХОТЕЛ «НЕ ТЕРЯТЬ ИНИЦИАТИВУ» —    
ТАК ЭТО НАЗЫВАЕТСЯ В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ:    
ЕСЛИ ЧЕЛОВЕК НАЖАЛ КНОПКУ, ТО ХОТЕЛОСЬ ИЗ ЭТОГО НАЖАТИЯ ВЫЖАТЬ МАКСИМУМ.    
НО ВИНДОУС ТАК УСТРОЕН — ЧТОБЫ ЧЕЛОВЕК СИДЕЛ ОКОЛО НЕГО И НАЖИМАЛ КНОПКИ КАКИЕ НАДО И НЕ НАДО… ЛИШЬ БЫ ПОБОЛЬШЕ

 

Не думал, что это может кого-то раздражать. Извините, если что не так. Я думал здесь не буквы читают а мысли.

 

Юрий М

Модератор

Сообщений: 60581
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Mijver}{date=28.03.2011 11:09}{thema=Re: }{post}Я думал здесь не буквы читают а мысли.{/post}{/quote}  
Вы ошиблись — здесь помогают по Excel.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

вот, встретил у Уокенбаха:  

  переключатель командной строки /automation  
Excel запускается без подключения надстроек и шаблонов, а также загрузки файлов из папки Xlstart или любой другой папки автозагрузки. Этот переключатель используется для «чистой начальной загрузки» Excel.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Из других приложениий Excel, как правило, запускается в режиме автоматизации через CreateObject(«Excel.Application»). При этом создается отдельный объект (класса) Excel без загрузки надстроек, кроме COM-надстроек. То есть, если создать свою COM-надстройку и подключить её к Excel, то такая надстройка, в принципе, позволит контролировать Excel.

 

dimaqw

Пользователь

Сообщений: 1
Регистрация: 01.01.1970

#23

28.05.2012 12:50:31

думаю оно. во всяком случая очень нужная вещь:   

http://www.excel-vba.ru/chto-umeet-excel/kak-otsledit-sobytienaprimer-vydelenie-yacheek-v-lyuboj-knige/


Download Article


Download Article

This wikiHow will teach you how to run macros in Excel automatically when you open a specific workbook, or how to create a macro that opens all your workbooks when you open Excel. Before you start, make sure you have the developer tab showing on the editing ribbon.

  1. Image titled 12334186 1

    1

    Make sure the Developer tab is displayed on your editing ribbon. If it isn’t and you’re using a Windows computer, go to the File tab and click Options > Customize ribbon. Under «Main tabs» check the box next to «Developer.»

    • If you’re using a Mac, you’ll be able to enable the developer tab by going to Excel > Preferences (the menu at the top of your screen) then clicking Ribbon & Toolbar. In the «Customize the Ribbon» category, click the «Developer» checkbox and click Save.
  2. Image titled 12334186 2

    2

    Click the Developer tab and select Visual Basic.

    Advertisement

  3. Image titled 12334186 3

    3

    Double-click your workbook from the panel on the left. You’ll see it listed under «VBA Project,» but if you don’t see it, click to expand the «VBA Project» folder.

  4. Image titled 12334186 4

    4

    Enter the following code:

    Private Sub Workbook_Open()
    
     Put your Macro-code here
    
    End Sub
    
  5. Image titled 12334186 5

    5

    Close the Visual Basic Editor. You don’t have to click save or anything before closing the editor.

    • The next time you open this workbook, the macro code you entered between the sub and end sub lines will run.[1]
  6. Advertisement

  1. Image titled 12334186 6

    1

    Make sure the Developer tab is displayed on your editing ribbon. If it isn’t and you’re using a Windows computer, go to the File tab and click Options > Customize ribbon. Under «Main tabs» check the box next to «Developer.»

    • If you’re using a Mac, you’ll be able to enable the developer tab by going to Excel > Preferences (the menu at the top of your screen) then clicking Ribbon & Toolbar. In the «Customize the Ribbon» category, click the «Developer» checkbox and click Save.
    • This macro will open all the worksheets you want to open when you launch Excel, which is highly useful if you work on a few different projects each day.
  2. Image titled 12334186 7

    2

    Click Record Macro. It’s in the «Developer» tab in the «Code» grouping.

  3. Image titled 12334186 8

    3

    Enter your macro name. Name it something like «Auto_Open» so you can read the title and know what it does.

  4. Image titled 12334186 9

    4

    Click Personal Macro Workbook. You’ll see this in the «Store macro in» box and will make the macro available every time you open Excel.

    • You can fill out the description to remind you specifically of what this macro does.
  5. Image titled 12334186 10

    5

    Click Ok. That window will close and every keystroke or button press will be recorded in the macro.

  6. Image titled 12334186 11

    6

    Click the File and click Open. Your file manager will open.

  7. Image titled 12334186 12

    7

    Select all the workbooks you want to open when you open Excel. If you need to select files in different locations, hold down Shift and click them.

  8. Image titled 12334186 13

    8

    Click Stop Recording. All the keystrokes and button presses you made are recorded and stored in the macro.

  9. Image titled 12334186 14

    9

    Close Excel. You’ll be prompted to save the changes you’ve made, so click Yes and your macro will open all those workbooks whenever you restart Excel.

  10. Advertisement

Ask a Question

200 characters left

Include your email address to get a message when this question is answered.

Submit

Advertisement

Thanks for submitting a tip for review!

References

About This Article

Article SummaryX

1. Make sure the Developer tab is displayed on your editing ribbon.

2. Open VBA.
3. Double-click your workbook from the panel on the left.

4. Enter the displayed code.

5. Close the Visual Basic Editor.

Did this summary help you?

Thanks to all authors for creating a page that has been read 10,106 times.

Is this article up to date?

У меня есть код VBA, который вызывает мою процедуру при открытии этого Excel.

Sub WorkBook_Open()
Call Sheets("Result").main
End Sub

Меня беспокоит то, что основная функция будет отправлять электронную почту. Так что в будущем, если я захочу отредактировать этот Excel, как я могу открыть его, не вызывая вызов?

Сначала я хотел использовать командную строку для ежедневного запуска функции vba и автоматически отправлять этот отчет.

2018-01-10 16:39

3

ответа

Решение

  1. Откройте приложение Excel.
  2. Перейдите в Файл ~ Открыть или Файл ~ Недавние.
  3. Удерживайте Shift при открытии файла.

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

Редактировать:

Меня беспокоит то, что основная функция будет отправлять электронную почту.

Не добавляйте свой код в Workbook_Open событие, вместо этого добавьте его в событие нажатия кнопки — оно никогда не будет отправлять электронные письма, пока вы не нажмете кнопку.

2018-01-10 16:54

Вам не нужно сначала открывать Excel. Просто удерживайте нажатой клавишу Shift, дважды щелкнув файл .xlsm.

2022-11-14 20:31

Я нашел для себя следующие работы в Office 365 (возможно, и в других версиях Excel):

  1. Открывайте Excel напрямую, не щелкайте книгу дважды, чтобы запустить Excel
  2. Файл / Открыть / Обзор
  3. Перейдите к книге, которую хотите открыть, щелкните по ней одним щелчком мыши
  4. Щелкните раскрывающийся список рядом с «Открыть» и «Открыть в защищенном просмотре».

Если вы хотите продолжить редактирование на этом этапе, вам нужно будет щелкнуть «Разрешить редактирование» во всплывающем окне, которое должно появиться прямо под строкой меню. Когда я это делаю, у меня есть макросы, которые пытаются сразу же запустить, но не работают, и я могу редактировать VBA. YMMV есть.

2020-09-01 16:31

Like this post? Please share to your friends:
  • Запуск макроса excel при запуске файла
  • Запуск макроса excel по расписанию
  • Запуск макроса excel безопасность
  • Запуск макроса excel 2010
  • Запуск макрос excel 2010