powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Взаимодействие одной книги эксель с другой
12 сообщений из 37, страница 2 из 2
Взаимодействие одной книги эксель с другой
    #36408001
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TopTinHugo121, не много понял из написано.. есть возможность показать на примере прикрепленного файла?

сам файл забыл!
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36408067
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так теперь после кода от Сергей06 / Degassad моя писанина уже не нужна.
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36408467
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Сергей06, to Hugo121. Чувствую что выложенный код хорош, но со всем уважением к пояснениям Сергей не могу однозначно понять как это осуществить. Возможно ли сделать пример на прикрепленном файле (кстати уже содержащим некоторый макрос и кнопку для обновления).
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36408763
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopTin,
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36408824
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей06TopTin,

Использовал прикрепленный файл чтобы вставить макрос у себя в основной - практическое применение показало, что все работает как надо!!...но та же самая практика выявила, что при немаленьком числе связей при обновлении этих связей не сразу можно обнаружить какие последними изменились .. пробовал через условное форматирование сделать выделение цветом изменившейся ячейки, но прямой зависимости как это сделать по сравнению с ранее имеющейся датой и временем нет .. можете подсказать как довести до ума на том же самом прикрепленном файле.
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36408878
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может так попробовать - хоть напишет, с какого последнего файла обновил:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub UpdLink()
Dim temp$
Application.DisplayAlerts = False
aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(aLinks) Then
    For i =  1  To UBound(aLinks)
     fname = aLinks(i)
     If FileExists3(fname) = True Then
       ActiveWorkbook.UpdateLink Name:=fname
        temp = fname
'       Else
'         x = Split(fname, "\")
'         fnput = Replace(fname, x(UBound(x)), "[" & x(UBound(x)) & "]")
'         For Each Sh In ActiveWorkbook.Sheets
'           Sh.Cells.Replace What:=fnput, Replacement:=fnput, LookAt:=xlPart
'         Next Sh
      
     End If
    Next i
    MsgBox "Last updated " & temp
End If
Правда сам не проверял...
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36409228
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, это макрос надо дополнительной кнопкой прописывать, или как его использовать..мог бы сделать в примере на прикрепленном файле, потому что, честно говоря не смог применить..
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36409409
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так там же уже макрос есть, его надо было дописать или целиком заменить на этот.
Что-то у меня глючит проверка наличия файла по сети (Private Function FileExists3(fname) As Boolean подвисает), но на другом файле проверил, работает мессидж.
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36409660
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Так там же уже макрос есть, его надо было дописать или целиком заменить на этот.
Что-то у меня глючит проверка наличия файла по сети (Private Function FileExists3(fname) As Boolean подвисает), но на другом файле проверил, работает мессидж.

Проверил...результат такой: допустим есть 20 ссылок, при нажатии на кнопку происходит обновление 10 ссылок (из этих 20), сообщение об обновлении будет только о последнем из этих 10, а оставшиеся 9 надо искать самому (в данном случаи при 20 ссылках это еще не так сложно, а вот при 40-50 - уже весьма). может ли макрос как то выделять изменения цветом, или отображать весь список изменений?!
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36411652
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad, прошу помощи в разботе этого макроса (ну и других пользователей этого сайта):

Вопросы у меня такие:
1. Что делает (зачем нужна) функция FileExists3?
Пока писал, разобрался, что она проверяет наличие файла на который ссылается книга. Спасибо.
2. Этот макрос выдает ошибку, если книгу, которую мы хотим обновить, открыта.
как исправить эту ошибку?

Код: plaintext
on error resume next  ?

или через проверку, что файл отрыт:

Код: plaintext
1.
2.
if fname.Закрыт then 
ActiveWorkbook.UpdateLink Name:=fname
end if
[quot Сергей06]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
'http://www.sql.ru/forum/actualthread.aspx?tid=423077&hl=activeworkbook+updatelink+name#4075679
'
'Deggasad
'Если можно не обновлять недоступные файлы, а оставить старые цифры то удали из модуля эти строки:
'       Else
'         x = Split(fname, "\")
'         fnput = Replace(fname, x(UBound(x)), "[" & x(UBound(x)) & "]")
'         For Each Sh In ActiveWorkbook.Sheets
'           Sh.Cells.Replace What:=fnput, Replacement:=fnput, LookAt:=xlPart
'         Next Sh


Private Function FileExists3(fname) As Boolean
    Set filesys = CreateObject("scripting.filesystemobject")
    FileExists3 = filesys.FileExists(fname)
End Function

Sub UpdLink()

Application.DisplayAlerts = False
aLinks = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(aLinks) Then
    For i =  1  To UBound(aLinks)
     fname = aLinks(i)
     If FileExists3(fname) = True Then
       ActiveWorkbook.UpdateLink Name:=fname
'       Else
'         x = Split(fname, "\")
'         fnput = Replace(fname, x(UBound(x)), "[" & x(UBound(x)) & "]")
'         For Each Sh In ActiveWorkbook.Sheets
'           Sh.Cells.Replace What:=fnput, Replacement:=fnput, LookAt:=xlPart
'         Next Sh
      
     End If
    Next i
End If
Application.DisplayAlerts = True

End Sub
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36413578
TopTin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей06, Hugo121..все другие участники данной ветки - большое Вам спасибо. В принципе из ничего сделали прикладной алгоритм работающий на практике! Если есть возможность "довести" его (т.е. в части выделения/оповещения о послед. изменениях из всех связей - будет вообще классно, кстати если честно не понял что именно делает последний макрос выложенный Сергей06).
...
Рейтинг: 0 / 0
Взаимодействие одной книги эксель с другой
    #36414013
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторесли честно не понял что именно делает последний макрос выложенный Сергей06 вот именно ActiveWorkbook.UpdateLink Name:=fname и делает.
Остальное - обвес по определению этого fname и наличия его доступности.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Взаимодействие одной книги эксель с другой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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