Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновить ссылки не открывая файл / 25 сообщений из 30, страница 1 из 2
27.03.2018, 16:26
    #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
27.03.2018, 16:29
    #39621354
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
Furdmitri,

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

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

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

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

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

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

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

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

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

Спасибо.Не забудьте в конце макроса Application.DisplayAlerts=True
...
Рейтинг: 0 / 0
29.03.2018, 16:30
    #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
29.03.2018, 16:33
    #39622761
Furdmitri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
P/S

Выдаёт

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

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

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

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

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

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

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

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

Ну либо дождаться человека, который опознает по URL-у, что у вас там за сервер и как он настроен.
...
Рейтинг: 0 / 0
29.03.2018, 20:14
    #39622898
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
Shocker.Pro"xlviewer.aspx" в URL намекает
Тут уже без намёков шарик
...
Рейтинг: 0 / 0
29.03.2018, 21:58
    #39622932
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
big-dukeShocker.Pro"xlviewer.aspx" в URL намекает
Тут уже без намёков шарик просто ты сказал "если"big-dukeЕсли это шарепойнта так-то я с ним не работал, поэтому не в курсе
...
Рейтинг: 0 / 0
30.03.2018, 15:11
    #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
30.03.2018, 15:20
    #39623377
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
Furdmitri ... всех файлов с определённым путём/адресом.


И где хранится список всех файлов с определённым путём/адресом ?
...
Рейтинг: 0 / 0
30.03.2018, 15:25
    #39623380
Furdmitri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обновить ссылки не открывая файл
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Обновить ссылки не открывая файл / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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