Страница 1 из 1

Workbook_Open и связи в ексель

Добавлено: 29 апр 2014, 12:25
jaroslav
Всем привет. В книге Excel в ЭтаКнига написал Private Sub Workbook_Open и программу, которая должна выполняться при открытии книги. Кроме того, в этой же книге создал модуль класса с таким кодом:

Код: Выделить всё

Public WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal wb As Workbook)
    Application.DisplayAlerts = False
End Sub

Private Sub App_WorkbookBeforeClose(ByVal wb As Workbook, _
        Cancel As Boolean)
     ActiveWorkbook.Saved = True
End Sub
Эта книга содержит связи с другими книгами. При запуске книги выдает сообщение: "Эта книга содержит одну или несколько связей, которые не могут быть обновлены..." и 2 кнопки Продолжить и Изменить связи. После нажатия кнопки Продолжить запускается программа, которая написана в процедуре Private Sub Workbook_Open.

Вопрос: можно ли сделать так, чтобы при открытии книги сообщение: "Эта книга содержит одну или несколько связей, которые не могут быть обновлены..." не выдавалось, то есть, чтобы сразу запускалась программа, которая написана в процедуре Private Sub Workbook_Open?

Re: Workbook_Open и связи в ексель

Добавлено: 29 апр 2014, 12:48
pashulka
jaroslav, Если Вы используете MS Excel XP-2003, то в меню Правка выберите команду Связи, в появившемся стандартном диалоговом окне Изменение связей кликните кнопку Запрос на обновление связей и выберите второй вариант. Разумеется в следующих версиях эта возможность также наличествует, только меню придётся поискать на ленте.

P.S. На самом деле создавать модуль класса вовсе не обязательно, ибо модуль книги ThisWorkbook(ЭтаКнига) это тоже модуль класса.

Код: Выделить всё

Public WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_WorkbookOpen(ByVal wb As Workbook)
    'App.DisplayAlerts = False
End Sub

Private Sub App_WorkbookBeforeClose(ByVal wb As Workbook, Cancel As Boolean)
    wb.Saved = True
End Sub

Добавлено: 29 апр 2014, 14:24
jaroslav
Спасибо, pashulka. Все получилось.

Re: Workbook_Open и связи в ексель

Добавлено: 29 апр 2014, 14:45
pashulka
Это хорошо :) только возможно имеет смысл, после открытия книги, всё же обновить связи ...

P.S. На всякий случай уточню (для других читателей топика), что в случае наличия "битых" ссылок, выбрать нужно вариант Не задавать вопрос и не обновлять связи