В Excel автоматизация обновления TFS с использованием VBA не будет работать в функции Workbook_Open - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь автоматизировать книгу, чтобы при ее открытии она автоматически обновляла данные TFS и отправляла электронное письмо. Я могу успешно обновить данные TFS с помощью макроса (найден код в этом блоге ), однако, когда я запускаю код из события Workbook_Open, он выдает ошибку с методом «Ошибка времени выполнения» -2147467259 (80004005) ' 'выполнить' объекта '_CommandBarButton' не удалось ". Я посмотрел на Как разрешить метод VBA «Выполнение [CommandBarButton надстройки Excel TFS] не удалось» Ошибка времени выполнения , но это решение не работает для меня. Это на самом деле имеет смысл для меня, потому что книга еще не подключена к TFS - это происходит ПОСЛЕ завершения Workbook_Open.

У меня вопрос, есть ли событие после подключения к базе данных TFS, которое я могу вызвать мой код или есть способ принудительно установить соединение TFS в первую очередь? Я пытался сделать Application.Wait и Sleep, но это только задерживает соединение с базой данных TFS.

Спасибо!

1 Ответ

1 голос
/ 23 января 2020

Я пытался выполнить Application.Wait и Sleep, но это только задерживает соединение с базой данных TFS.

Это потому, что эти методы, по сути, приостанавливают текущий (один-единственный) поток; тем временем они не позволят запускать любой другой код (не VBA).

книга еще не подключена к TFS - это происходит ПОСЛЕ завершения Workbook_Open.

Звучит так, как будто вам нужно отложить выполнение. Переместите код CommandButton.Execute в другую процедуру, а затем используйте Application.OnTime , чтобы запланировать выполнение этой процедуры, скажем, через 5 секунд - при условии, что вы перетянули код, вызывающий сбой, в какую-то процедуру UpdateTFS:

Application.OnTime DateTime.DateAdd("s", 5, DateTime.Now), "UpdateTFS"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...