powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновить ссылки не открывая файл
30 сообщений из 30, показаны все 2 страниц
Обновить ссылки не открывая файл
    #39621350
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,

Необходимо из одного открытого файла - запустить обновление ссылок между другими файлами из данной папки.
Не открывая при этом по отдельности все указанные файлы.

Используя информацию с Форума получается такой скрипт:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Обновление_связей_всех_файлов()
'
' Обновление_связей_всех_файлов Макрос
'
      Call OpenAll_xls_files_from_DIR("\Бюджет\МОДЕЛЬ\ГОД 2018\Тест\")
End Sub

Function OpenAll_xls_files_from_DIR(myPath As String)
myName = Dir(myPath)
Do While myName <> ""
    If myName <> "." And myName <> ".." And Right(myName, 5) = ".xlsx" Then
        Debug.Print myName    ' Display entry only if it
        Workbooks.Open Filename:=(myPath & myName), UpdateLinks:=True
        ActiveWorkbook.Save
        Workbooks(myName).Close False
    End If
    myName = Dir    ' Get next entry.
Loop

ActiveWorkbook.UpdateLink , Type:= _
        xlExcelLinks

End Function

Модератор: Учимся использовать тэги оформления кода - FAQ

Подскажите - как сделать так, чтобы данный макрос запускался для любой другой папки. Т.е. в данном макросе надо избавиться от конкретного адреса папки, который прописан в начале. Можно сделать так, чтобы макрос самостоятельно определял папку для обработки - как ту из которой открыт текущий файл !?
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621354
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

Код: vbnet
1.
Call OpenAll_xls_files_from_DIR(thisWorkbook.Path & "\")
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621369
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. По адресу - макрос отработал.

Но вот ещё вопрос - Если файл из которого запускается макрос имеет такое же расширение как у остальных - появляется конфликт при отработке макроса: при попытке повторного открытия данного файла.

Как этого избежать.

P/s/ в приведённом примере - открываются файлы xlsx. Но если бы надо было открывать xlsm - не получилось бы. Поскольку у открытого файла - такое же расширение.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621379
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitriпоявляется конфликт при отработке макросаНу ясен пень, надо же ещё сравнивать myName с ThisWorkbook.Name и выполнять операцию только при неравенстве...
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621397
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Получилось.

Ещё вопросик - когда при последовательном открытии файлов макрос напарывается на сообщение "Не удаётся обновить одну или несколько связей в книге Excel".

Как сделать чтобы макрос не останавливался на этом - а проскакивал дальше (как при нажатии клавиши "Продолжить") !?
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621444
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

on error goto или on error resume next.
Первый вариант позволит отловить файл с ошибкой, второй просто проигнорит ошибку и продолжит выполнение макроса.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621450
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeon error goto или on error resume next.
Первый вариант позволит отловить файл с ошибкой, второй просто проигнорит ошибку и продолжит выполнение макроса.Разве Application.DisplayAlerts=False не поможет?
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621708
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Да, нужен именно Application.DisplayAlerts, on error не то что нужно.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621715
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогло Application.DisplayAlerts=False

Спасибо.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39621743
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FurdmitriПомогло Application.DisplayAlerts=False

Спасибо.Не забудьте в конце макроса Application.DisplayAlerts=True
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622757
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,

Нижеуказанный макрос нормально отрабатывает только в применении к файлам, расположенным на смежном сервере, с ссылками формата \\2corp\data\LES\fin\Бюджет\Бюджет\МОДЕЛЬ\ГОД 2018\[Смета.xlsx]Смета'!

А с файлами к которым осуществляется доступ через интернет соединение - не отрабатывает. Выдает ошибку.
У этих файлов ссылка типа ' http://global.corp.com/sites/LES/fg/DocLib12/ [Смета.xlsx]Смета'


Подскажите - что можно изменить в макросе - чтобы он отрабатывал файлы И через интернет доступ. (Обычное принудительное обновление файлов - работает нормально; слэш на обратный - менял, не помогает).

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub Обновление_связей_всех_файлов()
'
' Обновление_связей_всех_файлов Макрос
'
Call OpenAll_xls_files_from_DIR(ThisWorkbook.Path)
End Sub

Function OpenAll_xls_files_from_DIR(myPath As String)
myName = Dir(myPath)
Do While myName <> ""
    If myName <> "." And myName <> ".." And ThisWorkbook.Name <> myName And Right(myName, 5) = ".xlsx" Then
        Debug.Print myName    ' Display entry only if it
        Application.DisplayAlerts = False
        Workbooks.Open Filename:=(myPath & myName), UpdateLinks:=True
        ActiveWorkbook.Save
        Workbooks(myName).Close False
    End If
    myName = Dir    ' Get next entry.
Loop

End Function
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622761
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P/S

Выдаёт

Bad file name or number
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622769
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак, писать другой макрос.
Определившись с ответами на вопросы:
1) как вы планируете получить список файлов на веб сервере (Dir тут никак не поможет)
2) как вы планируете закачивать файл обратно на веб-сервер

(ЗЫ: а почему вы VB-код решили оформлять с помощью [srс XML]?)
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622782
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. На веб-сервере - файлы визуально располагаются в аналогичных папках.
При этом - при открытии какого-либо файла и "Обновлении" ссылок - они нормально обновляются.
Ссылки - именно такие как я указал (с "http").

Почему собственно для макроса данный путь - не является путём ?

2. "Закачивать обратно" ? Ну они вроде так же открываются, сохраняются, и закрываются как и с сервера.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622791
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FurdmitriПочему собственно для макроса данный путь - не является путём ?Потому что функция Dir не понимает http, и уж тем более не понимает термина "визуально в аналогичных папках"

FurdmitriНу они вроде так же открываются, сохраняются, и закрываютсяВы уверены, что сохраняются они на сервере, а не во временной папке, куда были скачаны? Попробуйте руками внести какое-то изменение (ячейку покрасить), сохранить, закрыть и заново открыть именно с сервера по ссылке (а не последний открытый)
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622796
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сохраняются сразу на сервере. При повторном открытии - все изменения сразу видны.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622805
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622810
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

Если это шарепойнт, то копайте в сторону MapNetworkDrive и WebDAV.
Или же попытайтесь получить UNC путь к DocLib12.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622840
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли это шарепойнт, то копайте в сторону MapNetworkDrive и WebDAV.
Или же попытайтесь получить UNC путь к DocLib12.

Так общо - у меня не получится разобраться ((
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622842
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем мы можем помочь, если не знаем подробностей, даже версию офиса вы не указали.

"xlviewer.aspx" в URL намекает, что файл может открываться в интегрированном куда-то экселе или вообще не в экселе.

Ну либо дождаться человека, который опознает по URL-у, что у вас там за сервер и как он настроен.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622898
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro"xlviewer.aspx" в URL намекает
Тут уже без намёков шарик
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39622932
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeShocker.Pro"xlviewer.aspx" в URL намекает
Тут уже без намёков шарик просто ты сказал "если"big-dukeЕсли это шарепойнта так-то я с ним не работал, поэтому не в курсе
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623365
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось прописать последовательно открытие-обновление файлов (с местом нахождения - http...) на основе определения пути исходного через ThisWorkbook.Path

Однако хотелось бы все таки запускать цикл на последовательное открытие всех файлов с определённым путём/адресом.

Может кто-то предложить вариант такого цикла ?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Обновление_связей_всех_файлов()
'
' Обновление_связей_всех_файлов Макрос
'
Application.DisplayAlerts = False
    Workbooks.Open Filename:=ThisWorkbook.Path & "/Смета.xlsx", UpdateLinks _
        :=3
    ActiveWorkbook.Save
    ActiveWindow.Close
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=ThisWorkbook.Path & "/ТЭП.xlsx", UpdateLinks _
        :=3
    ActiveWorkbook.Save
    ActiveWindow.Close
    ActiveWorkbook.Save
End Sub
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623377
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri ... всех файлов с определённым путём/адресом.


И где хранится список всех файлов с определённым путём/адресом ?
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623380
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623428
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

Попробуйте подключить библиотеку шарика как сетевой диск, а потом назначьте ему букву. После этого может взять DIR и обойти примапленный диск.

Начните отсюда.
https://support.appriver.com/kb/a715/how-to-map-a-network-drive-to-sharepoint.aspx
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623447
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПопробуйте подключить библиотеку шарика как сетевой диск, а потом назначьте ему букву. После этого может взять DIR и обойти примапленный диск.

Наверное не подойдёт. Файл с макросом должен использоваться большим количеством разных пользователей.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39623664
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

Так вы это сделайте только для обновления ссылок.
У остальных пользователей сохранится возможность открывать эти файлы с шарика.
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39624175
Furdmitri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может можно запустить цикл поиска и последовательного открытия всех файлов через fileMask=ThisWorkbook.Path & "/" ??

Как написать такой цикл ?
...
Рейтинг: 0 / 0
Обновить ссылки не открывая файл
    #39624361
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Furdmitri,

Do While и Dir вам в помощь.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновить ссылки не открывая файл
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]