Я пишу vba, который управляет данными на листе, но я пытаюсь запустить его всякий раз, когда открывается рабочая книга.Запуск кода vba при открытии книги
Проблема, с которой я сталкиваюсь, заключается в том, что из-за рабочей книги (что код должен запускаться) каждый раз меняется/новый, мне нужно, чтобы код auto_open находился в личной рабочей книге макросов.
Sub Auto_Open()
Dim bookname As String
Dim checkbook As String
Dim Workbook As Workbook
For Each Workbook In Application.Workbooks
bookname = Workbook.Name
checkbook = Left(bookname, 3)
If checkbook = "EDN" Then
Data_generator
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.Quit
Else
End If
Next Workbook
End Sub
Когда этот код выполняется он проверяет все открытые книги и видит, если первые 3 буквы этого являются «СЦС», если после этого запустить Public Sub под названием «Data_generator», сохранить его и бросить курить. Если он не проверяет следующую открытую книгу и т. Д.
Когда файл открывается из проводника Windows, excel запускает (как с требуемой книгой, так и с личной рабочей книгой), однако, поскольку Excel сначала открывает персональную макрокоманду и запускает код перед тем, как открыть желаемую книгу, он не найдет книгу под названием «EDN».
Если приведенный выше код запускается после открытия обеих книг, код работает по назначению и циклически проходит через каждую открытую книгу, чтобы увидеть, есть ли один из них под названием «EDN» (это было доказано путем помещения сообщения после «затем» и запуск кода), если так запустить sub.
Я доказал это, поставив сообщение через «else», когда это будет сделано, он отобразит сообщение с рабочей книгой, которую я хочу, а не открыть. После того, как окно сообщения будет очищено, откроется рабочая книга.
Есть ли способ сделать нужную рабочую книгу открытой или любой другой работой для этого?
Вам необходимо события приложения: http://www.cpearson.com/Excel/AppEvent.aspx в частности, вы хотите уловить событие «WorkbookOpen» приложения, которое вызовет открытие любой книги. – Rory
Отлично, это то, что я хотел. –