Не работают макросы в Excel? Включите их выполнение, добавьте специальный модель с кодом, проверьте версию ОС и Эксель, убедитесь в соответствии пакета приложений, активируйте Майкрософт Офис, снимите блокировку файла, проверьте систему безопасности и применяемые библиотеки. Ниже подробно рассмотрим, в чем могут быть причины подобной неисправности, и какие шаги предпринимать для ее устранения.
Причины
Для начала стоит разобраться, почему не работает макрос в Excel, ведь от этого зависят дальнейшие шаги. К основным причинам стоит отнести:
- Функция отключена.
- Отключение отслеживания событий.
- Устаревшая операционная система.
- Несоответствие разработчика пакета офисных приложений.
- Устаревшая версия Майкрософт Офис.
- Неактивированная версия Excel.
- Заблокированный файл.
- Неправильные настройки безопасности.
- Отсутствие необходимой библиотеки и т. д.
Выше рассмотрены основные причины, почему не удается выполнить макрос в Excel. Все они могут быть решены самостоятельно с помощью приведенных ниже рекомендации. Подробнее на решении вопроса остановимся ниже.
Что делать
Многие пользователи теряются в ситуации, когда не включаются или вообще не работают макросы в Excel. Такая проблема не дает нормально пользоваться приложением и заставляет искать альтернативные варианты.
Включите опцию
Первое, что необходимо сделать — включить функцию для обеспечения ее работоспособности. Здесь многое зависит от версии Эксель.
Если не работают макросы в Excel 2003, сделайте следующие шаги:
- Войдите в «Сервис».
- Перейдите в раздел «Безопасность».
- Кликните «Уровень макросов «Низкий».
В случае, когда не работают макросы в Excel 2007, включите их следующим образом:
- Жмите на кнопку «Офис».
- Войдите в параметры Excel.
- Кликните на «Центр управления безопасности».
- Войдите в «Параметры центра управления безопасностью».
- Жмите на «Параметры макросов».
- Кликните на «Разрешить все …».
В ситуации, когда не работают макросы в Excel 2016, сделайте следующие шаги:
- Войдите в раздел «Файл».
- Кликните на кнопку «Параметры».
- Зайдите в «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры …».
- Жмите на «Разрешить все …».
После внесения изменений параметра безопасности перезапустите приложение Excel, а именно закройте его полностью и откройте снова. Лишь после этого изменения вступают в силу.
Добавьте нужный модуль в книгу
Бывают ситуации, когда макросы включены, но не работают в Excel из-за отключения каким-либо элементом отслеживания событий. В таком случае сделайте следующее:
- Перейдите в редактор VBA с помощью клавиш Alt+F11.
- Вставьте указанный ниже код.
Sub Reset_Events()
Application.EnableEvents = True
End Sub
- Для выполнения кода поставьте курсор в любой точке между началом и концом.
- Кликните F5.
Проверьте операционную систему
В ситуации, когда не отображаются макросы в Excel, обратите внимание на тип операционной системы. К примеру, Майкрософт Офис, который подходит для Виндовс, на Мак ОС уже работать не будет. Причина в том, что в приложении используются разные библиотеки. Даже если надстройки и функционируют, могут быть сбои в работе. Вот почему при появлении проблем нужно проверить ОС на соответствие.
Обратите внимание на разработчика
Если в Экселе не работают макросы, причиной может быть другой разработчик. Так, пользователи Excel часто применяют OpenOffice или LibreOffice. Эти пакеты созданы на разных языках программирования, которые имеют индивидуальные особенности. Так, если надстройки написаны на Visual Basic for Application, он может не работать в указанных выше офисных приложениях. Вот почему необходимо уточнять, для какого пакета создан макрос / надстройка.
Проверьте версию Майкрософт Офис
В Макрософт Офис 2003 применяются надстройки xla для Excel. В современных версиях расширение поменялось на xlam. Если ставить макросы старого типа в приложения Офис 2007 и больше, никаких трудностей не происходит. Если же вы попытаетесь поставить новую надстройку на старую версию Excel, она зачастую не работает. Вот почему важно обратить внимание на этот параметр при выборе.
Убедитесь в наличии пакета VBA
Одной из причин, почему не запускается макрос в Excel, может быть отсутствие пакета VBA. Для успешного запуска надстройки необходимо, чтобы этот пакет был установлен. Иногда он уже установлен в Офис, но так происходит не всегда. Для проверки жмите комбинацию на Alt+F11. Если после этого появляется Visual Basic, компонент можно считать установленным. В ином случае его нужно поставить. Для этого:
- Зайдите в «Пуск», а далее «Панель управления / Программы и компоненты».
- Выберите программу Майкрософт Офис.
- Жмите на кнопку «Изменить».
- Запустить файл установки Setup.exe.
- Кликните на «Добавить или удалить компоненты».
- Выберите в списке Visual Basic и установите его.
Активируйте Офис
Если в Excel 2007 не работает кнопка «макросы», причиной может быть отсутствие активации приложения. Для этого жмите на кнопку «Активировать» и следуйте инструкции. В большинстве случаев такая опция является платной.
Снимите блокировку файла
Учтите, что документ, полученный с другого ПК / ноутбука, может заблокироваться. Для разблокировки файла нужно нажать ПКМ и в разделе «Общие» кликнуть на «Разблокировать».
Проверьте библиотеки
В случае, когда параметры макросов не активны в Excel, причиной может быть появление ошибки «Can’t find project or library». При этом, надстройка работает на другом ПК / ноутбуке, а здесь возникают проблемы. Ошибку легко устранить, если в окне, которое идет за сообщением об ошибке, снять отметки в полях Missing. Для вызова окна можно выбрать пункт меню Tools / References.
Проверьте настройки безопасности
В ситуации, когда не работают макросы в Excel, можно добавить надежные расположения или настроить доступ к объектной модели VBA. Для этого в Офис 2007 необходимо сделать следующее:
- Войдите в Меню
- Кликните на пункт «Параметры».
- Жмите на «Центр управления безопасностью».
- Войдите в «Параметры центра управления безопасностью».
- Кликните на «Параметры макросов» и «Доверять доступ к объектной модели проектов».
Зная, почему не работают макросы в Excel, вы можете с легкостью исправить проблему и восстановить работоспособность. Если же сложности в работе возникают, вы всегда можете воспользоваться инструкцией в статье.
В комментариях расскажите, какой из приведенных выше вариантов вам помог, и что еще можно сделать.
Отличного Вам дня!
Тормоз 4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
||||
1 |
||||
24.03.2021, 14:50. Показов 4460. Ответов 14 Метки excel, vbs (Все метки)
Здравствуйте! На vbs надо открыть таблицу Excel, прочитать данные, обработать, и выйти.
Подскажите, пожалуйста. На просторах нашёл только борьбу, но не рецепт.
0 |
I can bite 3693 / 3126 / 692 Регистрация: 13.04.2015 Сообщений: 7,314 |
||||
24.03.2021, 15:02 |
2 |
|||
Сообщение было отмечено Тормоз как решение Решение
Добавлено через 47 секунд
Quit Случае ошибки у тебя происходит выход без закрытия приложения.
1 |
Тормоз 4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
||||
24.03.2021, 15:32 [ТС] |
3 |
|||
Спасибо, но не помогло. Добавлено через 16 минут
0 |
bite 3693 / 3126 / 692 Регистрация: 13.04.2015 Сообщений: 7,314 |
|
24.03.2021, 15:38 |
4 |
xls.DisplayAlerts = False Надеюсь, знаешь, что это значит?
1 |
4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
|
25.03.2021, 07:53 [ТС] |
5 |
Да.
0 |
bite 3693 / 3126 / 692 Регистрация: 13.04.2015 Сообщений: 7,314 |
|
25.03.2021, 11:18 |
6 |
Да. Нет. Совсем не то.
1 |
Punkt5 малоболт 1143 / 442 / 193 Регистрация: 30.01.2020 Сообщений: 1,095 |
||||
25.03.2021, 13:05 |
7 |
|||
Тормоз Может так попробовать?
1 |
5745 / 2534 / 997 Регистрация: 06.06.2017 Сообщений: 8,638 |
|
25.03.2021, 16:34 |
8 |
oWorkBook.Close,false Это что за синтаксис такой не vb-шный?
1 |
4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
|
02.04.2021, 09:26 [ТС] |
9 |
Нет. Совсем не то. Уточню, мне не надо сохранять исходный файл, поэтому мне не нужны предупреждения, и не нужен диалог с Excel
Это что за синтаксис такой не vb-шный? Это vbs. Те же яйца, вид сбоку.
xls.visible = True ‘ Добби покажет открытый файл не нужен диалог с Excel, всё должно быть тихо и без вопросов. Всем спасибо за участие и соучастие, всем здоровья!
0 |
5745 / 2534 / 997 Регистрация: 06.06.2017 Сообщений: 8,638 |
|
02.04.2021, 11:29 |
10 |
Это vbs. Те же яйца, вид сбоку. Какой ещё вид сбоку? Это ошибка и неверный синтаксис. Такое не будет работать на vb(a,s).
1 |
4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
|
02.04.2021, 13:04 [ТС] |
11 |
Работает же.
0 |
5745 / 2534 / 997 Регистрация: 06.06.2017 Сообщений: 8,638 |
|
02.04.2021, 13:11 |
12 |
Не верю. Должно выдать «Недопустимое число аргументов или присвоение значения свойства:».
0 |
Тормоз 4 / 4 / 1 Регистрация: 09.10.2019 Сообщений: 217 |
||||
02.04.2021, 13:14 [ТС] |
13 |
|||
Специально посмотрел в работающем коде:
Добавлено через 48 секунд
Не верю. Должно выдать «Недопустимое число аргументов или присвоение значения свойства:». Ничем помочь больше не могу, извините.
0 |
5745 / 2534 / 997 Регистрация: 06.06.2017 Сообщений: 8,638 |
|
02.04.2021, 13:22 |
14 |
Фантастика. Не знаю, как этот рудимент может не выдать ошибки. В любом случае
0 |
Модератор 34702 / 19224 / 4037 Регистрация: 12.02.2012 Сообщений: 32,180 Записей в блоге: 13 |
|
01.05.2021, 16:23 |
15 |
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.05.2021, 16:23 |
15 |
Открыть файл Ексель скриптом формата vbs |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
@Robert: Я попытался адаптировать ваш код с относительным путем и создал пакетный файл для запуска VBS.
VBS запускается и закрывается, но не запускает макрос… Любая идея о том, где проблема может быть?
Option Explicit
On Error Resume Next
ExcelMacroExample
Sub ExcelMacroExample()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFilePath = objFSO.GetAbsolutePathName(".")
Set xlBook = xlApp.Workbooks.Open(strFilePath, "ExcelsCLIENTES.xlsb") , 0, True)
xlApp.Run "open_form"
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
Я удалил «Application.Quit», потому что мой макрос вызывает пользовательскую форму, заботясь об этом.
Приветствия
ИЗМЕНИТЬ
Я действительно отработал это, на всякий случай, когда кто-то хочет запустить пользовательскую форму «подобно» автономному приложению:
Проблемы, с которыми я столкнулся:
1 — Я не хотел использовать событие Workbook_Open, поскольку excel заблокирован только для чтения.
2 — Команда партии ограничена тем фактом, что (насколько мне известно) она не может вызвать макрос.
Сначала я написал макрос, чтобы запустить мою пользовательскую форму, скрывая приложение:
Sub open_form()
Application.Visible = False
frmAddClient.Show vbModeless
End Sub
Затем я создал vbs для запуска этого макроса (выполнение этого с относительным путем было сложным):
dim fso
dim curDir
dim WinScriptHost
set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")
set fso = nothing
Set xlObj = CreateObject("Excel.application")
xlObj.Workbooks.Open curDir & "ExcelsCLIENTES.xlsb"
xlObj.Run "open_form"
И я, наконец, сделал пакетный файл для выполнения VBS…
@echo off
pushd %~dp0
cscript Add_Client.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
В любом случае, спасибо за вашу помощь, и я надеюсь, что это поможет, если кому-то это понадобится
So the setup on this WinServer 2012 R2 64bit is:
Windows Task Scheduler -> cscript .vbs file -> opening excel and run a sub in the main module
This runs fine in the background when I double click the .vbs file, but when I trigger the .vbs via the task scheduler, excel opens, but doesn’t load the file or run the sub (not sure which). The task runs under an domain user that has administration rights on the machine. I use the same user when i try clicking on the .vbs
Code that is being run, in order:
Task scheduler launches:
C:WINDOWSsystem32cscript.exe «D:xyztrigger.vbs»
.vbs does:
Option Explicit
Dim xlApp, xlBook, xlsheets, xlcopy
Set xlApp = CreateObject("Excel.Application")
xlapp.Interactive = False
xlapp.DisplayAlerts = False
xlapp.AskToUpdateLinks = False
xlapp.AlertBeforeOverwriting = False
Set xlBook = xlApp.Workbooks.Open("D:xyzexcelfile.xlsm")
On Error Resume Next
Call xlBook.Application.Run("Main.Extrnal_Trigger")
xlbook.Saved = True
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlcopy = Nothing
Set xlApp = Nothing
WScript.Quit(1)
Excel code:
Sub Extrnal_Trigger()
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.AlertBeforeOverwriting = False
Call update_button
Call MainProgram
Call ReportSave
End Sub
How can I find out where the .vbs or the excel hangs and why? A very similar setup on another machine does run without troubles. It is virtually identical to the code quoted here.
I realize there are several bad practices (like not cleaning up xlapp settings), but I’d like to get the process running before cleaning up.
/edit:
Removing
On Error Resume Next
from the .vbs does not display an error.
/edit2:
I tried reverting as far back as possible.
Option Explicit
Dim fso, f, s, log
Set fso = CreateObject("Scripting.FileSystemObject")
Set log = fso.CreateTextFile("D:xyzTESTlog.txt")
log.WriteLine "before fso"
Set f = fso.GetFile("D:xyzexcel.xlsm")
s = f.Path & " "
s = s & "Created: " & f.DateCreated & " "
s = s & "Last Accessed: " & f.DateLastAccessed & " "
s = s & "Last Modified: " & f.DateLastModified
log.WriteLine "after fso"
log.writeline "fso content"
log.writeline s
This works when being triggered by the task scheduler via cscript.exe.
I will try to modify to log what’s happening around the call to the excel file.
/edit3:
Debugging showed that this
Set xlBook = xlApp.Workbooks.Open("D:xyzexcel.xlsm")
never happens. I put out error numbers and got error 1004 for this call. Still not sure what’s the issue, but at least I got an error number now.
/edit4:
error 1004 when trying to run this as a scheduled tasks persists. When I am running it by double clicking the .vbs, everything works.