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

Я поискал. Наиболее актуальным предлагается имя макроса «workbook_open». Но я все равно должен вызывать модуль вручную. Вот что я закодировал. (Любые другие предложения приветствуются, так как это мой первый сценарий vba — в возрасте 73 лет)

  Sub Workbook_Open () Dim lastRow As Long 'последняя строка с данными Dim thisDate As Double'  отметка времени начала thisDate = Now () With Sheets ("Журнал давления") lastRow = .Range ("B" & .Rows.Count) .End (xlUp) .Row 'заполнить следующую строку датой/временем Range ("B" &  lastRow) .Offset (1) = Формат (thisDate, "dddd") Диапазон ("B" & lastRow) .Offset (1, 1) = Формат (thisDate, "мм/дд/гггг") Диапазон ("B" &  lastRow) .Offset (1, 2) = Format (thisDate, "чч: мм AM/PM") Диапазон ("B" и lastRow) .Offset (1, 3) .Select 'позиция для пользовательских данных End With End Sub  

5

В Visual Basic Editor (VBE), откройте Project Explorer (Ctrl + R), затем дважды щелкните модуль ThisWorkbook (или щелкните его правой кнопкой мыши и выберите » Просмотреть код «):

Th at вызовет код программной части модуля ThisWorkbook . ThisWorkbook представляет книгу, в которой размещен ваш проект VBA; это специальный тип модуля, наследующий все члены класса Excel.Workbook , который может представлять любую книгу Excel.

В верхней части панели кода вы увидите два раскрывающихся списка:

Выберите Workbook в раскрывающемся списке слева; VBE автоматически генерирует процедуру обработчика событий для события Open :

Обратите внимание на то, что в правом раскрывающемся списке теперь указано Открыть — если вы щелкните это раскрывающееся меню, вы найдете что в нем перечислены все события , которые может обработать Workbook ; выбор одного из них автоматически сгенерирует для него метод с правильной сигнатурой/прототипом.

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

Удачи! Учиться никогда не поздно!

Поделиться
Улучшите этот ответ
ответил 29 нояб., 19:02
  • Вот и все. благодаря. Похоже, это фундаментальная грамотность, которой я должен был обладать. Не могли бы вы предложить «дальнейшее чтение»? — grNadpa 29 нояб., В 19:12
  • 2
    @grNadpa различные блоги Excel-Easy — это один, Chip Pearson — тоже довольно популярный ресурс. У меня тоже есть свой блог, но он более продвинутый, объектно-ориентированный (хотя Rubberduck может помочь найти ряд проблем с кодом, но есть ряд ошибок и пара проверок false положительные моменты, которые могут вас сбить с толку). Моя личная рекомендация — изучить все, нажать все кнопки, посмотреть, что все делает — вы действительно ничего не можете сломать 😉 — Матье Гуиндон 29 нояб., 19:19
  • Ну … вы может что-нибудь сломать, но нужно очень много работать, чтобы это сломалось. — FreeMan 29 нояб., В 19:26
  • Является ли code-behind термином, заимствованным для другого языка? Свободный термин, используемый в разных языках? Панель кода более общего термина? + — QHarr 13 сен ’19 в 09:48
добавить комментарий |

В редакторе Visual Basic (VBE) откройте Project Explorer (Ctrl + R) , затем дважды щелкните модуль ThisWorkbook (или щелкните его правой кнопкой мыши и выберите «Просмотреть код»):

Это вызовет код программной части модуля ThisWorkbook . ThisWorkbook представляет книгу, в которой размещен ваш проект VBA; это специальный тип модуля, наследующий все члены класса Excel.Workbook , который может представлять любую книгу Excel.

В верхней части панели кода вы увидите два раскрывающихся списка:

Выберите Workbook в левом раскрывающемся списке; VBE автоматически генерирует процедуру обработчика событий для события Open :

Обратите внимание на то, что в правом раскрывающемся списке теперь написано Открыть — если вы щелкните это раскрывающееся меню, вы Вы обнаружите, что в нем перечислены все события , которые Workbook может обработать; выбор одного из них автоматически сгенерирует для него метод с правильной сигнатурой/прототипом.

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

Удачи! Учиться никогда не поздно!


1

В дополнение к ответу Мэтью есть еще один способ запустить код при открытии книги: вы можете создать процедуру Auto_Open в стандартном модуле. Внимание! Эту функцию можно удалить в следующих версиях Office, но она все еще работает! 😉

В стандартном модуле:

  Sub Auto_Open () 'Your codeEnd Sub  

В таким же образом вы можете использовать процедуру Auto_Close вместо обработчика событий BeforeClose .

Поделиться
Улучшить этот ответ
ответил 29 ноя ’18 в 19:10
добавить комментарий |

В дополнение к ответу Матье есть еще один способ запустить код при открытии книги: вы можете создать Auto_Open процедура в стандартном модуле. Внимание! Эту функцию можно удалить в следующих версиях Office, но она все еще работает! 😉

В стандартном модуле:

  Sub Auto_Open () 'Your codeEnd Sub  

В таким же образом вы можете использовать процедуру Auto_Close вместо обработчика событий BeforeClose .

Оцените статью
Botgadget.ru
Добавить комментарий