Пожалуйста, помогите ограничить работу макроса. Я сам далеко не программист, работаю с макросами, запускающими и считывающими результаты из одной программы. Так случилось, что завтра нужно ложиться в больницу на 2 недели, а работу, которую я выполнял, больше никто не умеет делать. И меня в срочном порядке просят обучить работе с этими макросами человека из другого отдела.
Можно как то ограничить работу макроса по дате ? Или Запрашивать код, который нужно вводить, после наступления определенной даты? Или чтобы макрос удалялся после наступления определенной даты
Очень прошу помочь! Спасибо
Здравствуйте!
Пожалуйста, помогите ограничить работу макроса. Я сам далеко не программист, работаю с макросами, запускающими и считывающими результаты из одной программы. Так случилось, что завтра нужно ложиться в больницу на 2 недели, а работу, которую я выполнял, больше никто не умеет делать. И меня в срочном порядке просят обучить работе с этими макросами человека из другого отдела.
Можно как то ограничить работу макроса по дате ? Или Запрашивать код, который нужно вводить, после наступления определенной даты? Или чтобы макрос удалялся после наступления определенной даты
у меня есть кнопка в макросе, с которой весь расчет начинается.
В код этой кнопки я вписал сперва
[vba]
Код
Dim oVBComponent As Object, lCountLines As Long 'Проверяем, защищен проект или нет If ActiveWorkbook.VBProject.Protection = 1 Then MsgBox "VBProject выбранной книги защищён." & vbCrLf & _ " Компоненты не будут удалены.", vbExclamation, "Отмена выполнения" Exit Sub End If
[/vba]
Затем написал
[vba]
Код
If Date > CDate("07.07.2019") Then For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents On Error Resume Next With oVBComponent Select Case .Type Case 1 'Модули .Collection.Remove oVBComponent Case 2 'Модули Класса .Collection.Remove oVBComponent Case 3 'Формы .Collection.Remove oVBComponent Case 100 'ЭтаКнига, Листы lCountLines = .CodeModule.CountOfLines .CodeModule.DeleteLines 1, lCountLines End Select End With Next Set oVBComponent = Nothing End if
[/vba]
и дальше пошел код самой кнопки.
В итоге после запуска макроса он ругается следующим образом:
у меня есть кнопка в макросе, с которой весь расчет начинается.
В код этой кнопки я вписал сперва
[vba]
Код
Dim oVBComponent As Object, lCountLines As Long 'Проверяем, защищен проект или нет If ActiveWorkbook.VBProject.Protection = 1 Then MsgBox "VBProject выбранной книги защищён." & vbCrLf & _ " Компоненты не будут удалены.", vbExclamation, "Отмена выполнения" Exit Sub End If
[/vba]
Затем написал
[vba]
Код
If Date > CDate("07.07.2019") Then For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents On Error Resume Next With oVBComponent Select Case .Type Case 1 'Модули .Collection.Remove oVBComponent Case 2 'Модули Класса .Collection.Remove oVBComponent Case 3 'Формы .Collection.Remove oVBComponent Case 100 'ЭтаКнига, Листы lCountLines = .CodeModule.CountOfLines .CodeModule.DeleteLines 1, lCountLines End Select End With Next Set oVBComponent = Nothing End if
[/vba]
и дальше пошел код самой кнопки.
В итоге после запуска макроса он ругается следующим образом:
ну ограничить - не снести к чертям, но раз ж в стартовом было, то На доступ к модели данных VBA проекта нужно дать разрешение, аналогичное как и для работы просто макросов. Это свойство конкретного приложения, то есть если вы у себя все настроите и отладите, то на другом ПК это может не сработать. Тогда надо шаманить
ну ограничить - не снести к чертям, но раз ж в стартовом было, то На доступ к модели данных VBA проекта нужно дать разрешение, аналогичное как и для работы просто макросов. Это свойство конкретного приложения, то есть если вы у себя все настроите и отладите, то на другом ПК это может не сработать. Тогда надо шаманитьbmv98rus
Замечательный Временно просто медведь , процентов на 20.