Vba открыть файл excel без обновления связей

ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

UPDATE:

After all the details summarized and discussed, I spent 2 fair hours in checking the options, and this update is to dot all is.

Preparations

First of all, I performed a clean Office 2010 x86 install on Clean Win7 SP1 Ultimate x64 virtual machine powered by VMWare (this is usual routine for my everyday testing tasks, so I have many of them deployed).

Then, I changed only the following Excel options (i.e. all the other are left as is after installation):

  • Advanced > General > Ask to update automatic links checked:

Ask to update automatic links

  • Trust Center > Trust Center Settings... > External Content > Enable All... (although that one that relates to Data Connections is most likely not important for the case):

External Content

Preconditions

I prepared and placed to C: a workbook exactly as per @Siddharth Rout suggestions in his updated answer (shared for your convenience): https://www.dropbox.com/s/mv88vyc27eljqaq/Book1withLinkToBook2.xlsx Linked book was then deleted so that link in the shared book is unavailable (for sure).

Manual Opening

The above shared file shows on opening (having the above listed Excel options) 2 warnings — in the order of appearance:

WARNING #1

This workbook contains links to other data sources

After click on Update I expectedly got another:

WARNING #2

This workbook contains one or more links that cannot be updated

So, I suppose my testing environment is now pretty much similar to OP‘s) So far so good, we finally go to

VBA Opening

Now I’ll try all possible options step by step to make the picture clear. I’ll share only relevant lines of code for simplicity (complete sample file with code will be shared in the end).

1. Simple Application.Workbooks.Open

Application.Workbooks.Open Filename:="C:Book1withLinkToBook2.xlsx"

No surprise — this produces BOTH warnings, as for manual opening above.

2. Application.DisplayAlerts = False

Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True

This code ends up with WARNING #1, and either option clicked (Update / Don't Update) produces NO further warnings, i.e. Application.DisplayAlerts = False suppresses WARNING #2.

3. Application.AskToUpdateLinks = False

Application.AskToUpdateLinks = False
Application.Workbooks.Open Filename:="C:Book1withLinkToBook2.xlsx"
Application.AskToUpdateLinks = True

Opposite to DisplayAlerts, this code ends up with WARNING #2 only, i.e. Application.AskToUpdateLinks = False suppresses WARNING #1.

4. Double False

Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Workbooks.Open Filename:="C:Book1withLinkToBook2.xlsx"
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True

Apparently, this code ends up with suppressing BOTH WARNINGS.

5. UpdateLinks:=False

Application.Workbooks.Open Filename:="C:Book1withLinkToBook2.xlsx", UpdateLinks:=False

Finally, this 1-line solution (originally proposed by @brettdj) works the same way as Double False: NO WARNINGS are shown!

Conclusions

Except a good testing practice and very important solved case (I may face such issues everyday while sending my workbooks to 3rd party, and now I’m prepared), 2 more things learned:

  1. Excel options DO matter, regardless of version — especially when we come to VBA solutions.
  2. Every trouble has short and elegant solution — together with not obvious and complicated one. Just one more proof for that!)

Thanks very much to everyone who contributed to the solution, and especially OP who raised the question. Hope my investigations and thoroughly described testing steps were helpful not only for me)

Sample file with the above code samples is shared (many lines are commented deliberately): https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm

Original answer (tested for Excel 2007 with certain options):

This code works fine for me — it loops through ALL Excel files specified using wildcards in the InputFolder:

Sub WorkbookOpening2007()

Dim InputFolder As String
Dim LoopFileNameExt As String

InputFolder = "D:DOCUMENTS" 'Trailing "" is required!

LoopFileNameExt = Dir(InputFolder & "*.xls?")
Do While LoopFileNameExt <> ""

Application.DisplayAlerts = False
Application.Workbooks.Open (InputFolder & LoopFileNameExt)
Application.DisplayAlerts = True

LoopFileNameExt = Dir
Loop

End Sub

I tried it with books with unavailable external links — no warnings.

Sample file: https://www.dropbox.com/s/9bwu6pn8fcogby7/NoWarningsOpen.xlsm

0 / 0 / 0

Регистрация: 28.05.2008

Сообщений: 21

1

Обойти сообщение об обновлении связей?

09.06.2008, 15:12. Показов 18384. Ответов 9


Студворк — интернет-сервис помощи студентам

Привет!
Вопрос в заголовке, при открытии файла об обновлении связей надо ответить ‘Да’ без сообщения Excel-я.
Спасибо



0



2 / 2 / 1

Регистрация: 01.01.2008

Сообщений: 410

10.06.2008, 13:02

2

А почему нельзя фишку поставить в параметрах Excelа типа не спрашивать про связи?



0



0 / 0 / 0

Регистрация: 28.05.2008

Сообщений: 21

10.06.2008, 14:28

 [ТС]

3

Нужно,чтобы связи обновлялись автоматически,а Еxcele есть фишка только по запросу.



0



2 / 2 / 1

Регистрация: 01.01.2008

Сообщений: 410

10.06.2008, 14:44

4

Hi, Natasha!
Только что лишний раз попробывал ету мульку. Есть книга, у ней есть связь с другой. Когда фишка про связи есть, имеем запрос про обновление. Фишку убирам. Выходим. Грузим. Запрос отсутствует.
Я что-то опять не понял?



0



0 / 0 / 0

Регистрация: 28.05.2008

Сообщений: 21

10.06.2008, 15:43

 [ТС]

5

Привет!
Нужно,чтобы пр открытии файла связи обновлялись автоматически,но сообщения Excela об обновлении связей не выдавалось,то бишь подавить окно сообщения при открытии.



0



2 / 2 / 1

Регистрация: 01.01.2008

Сообщений: 410

11.06.2008, 13:39

6

Привет, Natasha!
Мы что-то друг друга не понимаем.
Я меняю у себя
Сервис->Параметры->Правка
от состояния ‘Запрашивать об обновлении автоматических связей’ зависит режим открытия книги. Когда надо выскакивает окно запроса про обновление связей, когда не надо — не выскакивает.
Вы пробовали? А то я что-то опять не понимаю.



0



0 / 0 / 0

Регистрация: 28.05.2008

Сообщений: 21

11.06.2008, 14:22

 [ТС]

7

Спасибо большое!Век живи,век учись!Зациклилась совсем,а вроде не дилетант.



0



0 / 0 / 0

Регистрация: 03.05.2010

Сообщений: 141

02.11.2011, 15:30

8

А как можно программно снять/установить галку «Запрашивать об обновлении автоматических связей» ?
Спасибо



0



Comanche

02.11.2011, 15:35

9

Код

Application.AskToUpdateLinks = True/False

Я этого не знал. Просто есть такая полезная штука — макрорекордер…

0 / 0 / 0

Регистрация: 03.05.2010

Сообщений: 141

02.11.2011, 18:40

10

еще небольшой вопрос по теме …
на связанном листе стоит формула
мне ее надо убрать до момента задания вопроса об обновлении связей,
чтобы этот вопрос не задавался

в какое событие (обязательно перед открытием книги) поставить очистку формулы ?
workbook.active и workbook.open срабатывают уже после того, как вопрос об обновлении сработал

спасибо



0



!!!!! ОБНОВЛЕНИЕ ФАЙЛОВ БЕЗ ОТКРЫТИЯ!!!!!

_Boroda_

Дата: Вторник, 10.10.2017, 11:51 |
Сообщение № 21

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Напишите в скобочках, как во втором макросе поста 4
[vba]

Код

With Workbooks.Open (Filename:=macrosMAJ & origine, UpdateLinks:=True)

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Margot

Дата: Вторник, 10.10.2017, 12:19 |
Сообщение № 22

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Написала, макрос запускается без ошибки.

Спасибо большое за помощь !!! :)

 

Ответить

Tamplier88

Дата: Пятница, 27.03.2020, 15:52 |
Сообщение № 23

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2019

Доброе время!
Использовал данный макрос для автоматического обновления (по заданию Планировщика задания) данных в группе файлов .xls*,
которая подтягивает данные (OLE-link) из множества связанных обновляющихся файлов-источников .doc и .docx.

При использовании кода:

[vba]

Код

Do While File <> «»
            With Workbooks.Open(Filename:=Папка & Имя, UpdateLinks:=3)  ‘ здесь макрос делает открытие и обновление файлов в папке
                    .Close SaveChanges:=True
            End With
            File = Dir
Loop

[/vba]

столкнулся с проблемой, что файлы открываются, но данные по OLE ссылкам не обновляются.
Чтобы автоматом обновлялись удаленные ссылки в цикл нужно добавить

[vba]

Код

.UpdateRemoteReferences = True

[/vba]

Мой итоговый макрос выглядит так:

[vba]

Код

Sub MyMacro
     With Application
        .ScreenUpdating = False ‘ обновление экрана
        .DisplayAlerts = False  ‘ вывод системных сообщений
        .EnableEvents = False ‘ чтобы события не выполнялись
        .AskToUpdateLinks = False ‘ чтобы не появлялись запросы на обновления связей
        Report = «Полный путь к папке с файлами»

                File = Dir(Report & «*.xls*»)
        Do While File <> «»
            With Workbooks.Open(Filename:=Report & File) ‘ открытие файлов в папке по очереди
                            .UpdateRemoteReferences = True ‘ обновление ссылок после открытия
                            .Close SaveChanges:=True ‘ сохранение и закрытие
            End With
            File = Dir
        Loop
        .ScreenUpdating = True ‘ обновление экрана
        .DisplayAlerts = True  ‘ вывод системных сообщений
        .EnableEvents = True ‘ выполнение событий
        .AskToUpdateLinks = True ‘ запросы на обновления связей
    End With
End Sub

[/vba]

Может кому пригодится, так как ни на одном форуме я данное решение не нашел.


Everythihg should be incredibly simpler.

Сообщение отредактировал Tamplier88Пятница, 27.03.2020, 16:13

 

Ответить

gsolodovnikova

Дата: Четверг, 24.11.2022, 20:58 |
Сообщение № 24

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1

Привет коллеги) Подскажите, что я делаю не так?
У меня есть файл с настроенными пивотами на данные из кубов.
Задача сделать файл с кнопкой, который откроет в фоновом режиме файл, все обновит и сохранит.
В идеале, если не получится, то выдаст лог.
И я сделаю себе файл с макросами и буду по кнопочке обновлять нужные файлы.
А еще я загружу один файл в планировщик (пока не знаю как вы это все делаете) и он мне будет сам все обновлять.
По факту я зашла в эксель, ввела в VB этот код.
Он не ругается. Все ок.
Нажимаю отработать макрос. И ничего не происходит.
И файлы так и остались старыми.
и еще Dir у меня не выделен другим цветом (как команда).

[vba]

Код

Sub MyMacro()
    With Application
        .ScreenUpdating = False ‘ обновление экрана
        .DisplayAlerts = False  ‘ вывод системных сообщений
        .EnableEvents = False ‘ чтобы события не выполнились
        .AskToUpdateLinks = False ‘ чтобы не появлялись запросы на обновления связей
        Report = «N:DEPARTMENTSefficiencySalesTracker — копия» ‘ полный путь к папке с файлами

                File = Dir(Report & «*.xls*»)
        Do While File <> «»
            With Workbooks.Open(Filename:=Report & File, UpdateLinks:=True) ‘ открытие файлов в папке по очереди
                          .UpdateRemoteReferences = True ‘ обновление ссылок после открытия
                          .Close SaveChanges:=True ‘ созданение и закрытие
            End With
            File = Dir
        Loop
        .ScreenUpdating = True ‘ обновление экрана
        .DisplayAlerts = True  ‘ вывод системных сообщений
        .EnableEvents = True ‘ выполнение событий
        .AskToUpdateLinks = True ‘ запросы на обновление связей
    End With
End Sub

[/vba]

Сообщение отредактировал gsolodovnikovaЧетверг, 24.11.2022, 21:00

 

Ответить

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Популярные разделы FAQ:    user posted image Общие вопросы    user posted image Особенности VBA-кода    user posted image Оптимизация VBA-кода    user posted image Полезные ссылки


    1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
    2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
    3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
    4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.

    >
    Как обойти запрос на обновление внешних связей в Excel?

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    23.04.08, 12:42

      Надоел запрос на обновление внешних связей.
      А так как макросы у меня подписаны мною же и я добавил себя в число доверенных издателей, то запрос на включение макросов не появляется.
      Хотел в событии workbook.open прописать следующий код, чтобы связи обновлялись автоматически:

      ExpandedWrap disabled

        Private Sub Workbook_Open()

        ‘Отключаем предупреждения (может и не надо, но пусть будет) и обновляем связи сами

            With Application

                .DisplayAlerts = False

            End With

            With ActiveWorkbook

                .UpdateRemoteReferences = False

                .UpdateLink Name:=ActiveWorkbook.LinkSources

            End With

        ‘включаем все как было

            With Application

                .DisplayAlerts = True

            End With

            With ActiveWorkbook

                .UpdateRemoteReferences = True

            End With

        End Sub

      Обнаружилась вот какая бяка: событие workbook.open обрабатывается ПОСЛЕ того, как эксель сам обнаруживает связи и пытается их обновить. Мой код выполняется, но это уже никому не нужно.
      Так можно ли отключить запрос на обновление связей при открытии книги? Чтобы связи обновлялись автоматом без запроса?


      pashulka



      Сообщ.
      #2

      ,
      10.05.08, 08:26

        Full Member

        ***

        Рейтинг (т): 95

        Если речь идёт о MS Excel XP/2003, то можно сделать следующее :

        1. Открыть нужную рабочую книгу.
        2. В меню Правка выбрать команду Связи (если данная команда окажется заблокированной, то это означает, что открытая книга не содержит внешних ссылок)
        3. В появившемся стандартном диалоговом окне кликнуть кнопку Запрос на обновление связей
        4. Затем, установить переключатель напротив Не задавать вопрос и обновлять связи и кликнуть кнопку OK.
        5. Закрыть диалоговое окно нажатием кнопки Закрыть.

        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

        0 пользователей:

        • Предыдущая тема
        • VB for Application
        • Следующая тема

        Рейтинг@Mail.ru

        [ Script execution time: 0,0530 ]   [ 16 queries used ]   [ Generated: 14.04.23, 17:37 GMT ]  

        Like this post? Please share to your friends:
      • Vba открыть книгу excel невидимо
      • Vba открыть документ word по имени
      • Vba определить координаты ячейки excel
      • Vba определить другой excel
      • Vba объединить документы word в один