И снова обновление внешних связей макросом

Автор Konstanta, 22 октября 2019, 11:36

0 Пользователи и 1 гость просматривают эту тему.

economist

Konstanta - это замедление объяснимо. Calc/Excel хранят "предрассчитанные значения" связей в паре с датой изменения файлов. Если файл-источник  обновился - вместо значения показывается #ЗНАЧ. На обновление связей нужно время, оттого и тормоза.

Что касается неработающего refresh - попробуйте тотальную обновлялку:

Sub refreshAllSheetLinks()
oEnum = thisComponent.AreaLinks.createEnumeration
while oEnum.hasMoreElements
  oLink = oEnum.NextElement
  oLink.refresh
wend
oEnum = thisComponent.SheetLinks.createEnumeration
while oEnum.hasMoreElements
  oLink = oEnum.NextElement
  oLink.refresh
wend
oEnum = thisComponent.DDELinks.createEnumeration
while oEnum.hasMoreElements
  oLink = oEnum.NextElement
  oLink.refresh
wend
End Sub
 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

rami

Цитата: economist от 24 октября 2019, 11:43Что касается неработающего refresh - попробуйте тотальную обновлялку:
С таким успехом можно предложить обновить жену, квартиру, работу..., а если не поможет, то что-нибудь ещё...

Тот метод связи с другими документами который выбрал ТС, не имеет метода refresh (просто не доделан с давних пор), так что никакие обновления чего бы то ни было не помогут, остаётся только старенький добрый диспетчер... или попробовать другие возможности.

economist

#17
rami - согласен, за способ с диспетчером спасибо.

Я просто немного забежал вперед: ТС ищет любые способы и возможно дойдет до DDE и ссылок на целые листы. DDE - вполне себе работает и обновляется. Годится для единичных связей.

Можно дергать лист целиком, ведь refresh на SheetLinks тоже, вроде, работал (Лист - Вставить лист - из файла - связь). Да и при открытии книги запрос задается, такое не пропустишь. А потом уже с внутреннего листа книги можно брать нужное.


Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

rami

#18
Konstanta, попробуйте такой документ:

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

2. откройте и откажитесь от обновления связей, нажмите на кнопку "Обновить связи" на листе "Общий"

3. хвалитесь результатами ;D



P.S. заменил документ на исправленный

Konstanta

rami Спасибо за поддержку!
Сохранил.
Открыл.
Попробовал оба варианта.
Не пошло.
Пока результата нет.

Но Вы порадовали меня своим позитивом с утра, за что отдельное Спасибо!


Konstanta

Да не жалуется вообще.
Кнопка кликается.
Ничего не меняется.
Проверил привязку кнопки к макросу. Всё нормально.
В связях стоит "Невозможно обновить ссылку."
Я сначала подумал что связи просто слетели.
В одном из листов вставил новую связь
после вызова макроса встала ошибка "#ссыл"

rami

Запутался немного в ваших ссылках, поправил, надеюсь, угадал.


Чтобы не плодить документы заменил предыдущую версию документа на исправленную в Ответ #18