1

Тема: Ломается автоматическое обновление связей между Word и Excel

word2010

Связал документ Word с файлом Эксель. Всё работает, всё обновляется, когда меняю данные в экселе.  Когда  копирую файл Word и файл Эксель в другую папку, и вношу изменения в эксель в новой папке, файл Word  в новой папке автоматически обновляется в 3/4 случаев.  Но иногда автоматического обновления связей не происходит.  Т. е. я открываю файл Word, выскакивает окошко с предложением обновить все связи.  Я нажимаю Да.  Ничего не обновляется.

Смотрю Файл Сведения Изменить связи с файлами, там везде ссылки на файл экселя, который в старой папке находится. Если нажимаю обновить связь, так же не обновляется, просто ничего не пишет, ни ошибки, ничего, и даже из файла эксель, который в старой папке не обновляет.

В то же время,  если в теле Word документа я на каждом связанном элементе кликаю правой кнопкой мыши и нажимаю обновить связь, то она обновляется из  файла эксель, который в новой папке. Т. е. всё работает. 

Пробовал сменить источник, как советовали вот в этой теме
http://wordexpert.ru/forum/viewtopic.php?id=130. Но приходится менять источник для каждой связи отдельно

Модератор там написал "Нет! Можно выделить все связи и сменить источник для все сразу.

У меня не получается так. Открываю Файл Сведения Изменить связи с файлами,
выделяю все связи, нажимаю Сменить источник,  открывается диалоговое меню ворда, где нужно выбрать месторасположение нового источника, выбираю новый источник, нажимаю ОК.  И тут окно выбора источника открывается еще раз, автоматом, уже для второй связи. И так далее, по количеству связей.  На 50 связи иду вешаться.


Уважаемые форумчане, у меня 2 вопроса.
1. Как можно исправить проблему с автоматическим обновлением связей, почему она у меня глючит?
2. Каким образом можно сменить источник для множества связей сразу?


"

2

Re: Ломается автоматическое обновление связей между Word и Excel

Одним из возможных способов группового обновления связей может быть такой:

Преобразовываем поля в формат кода (Выделить все (Ctrl+A) - Alt+F9).
Далее стандартным способом (с помощью окна Найти и заменить) можно произвести замену старого пути на новый.
Затем снимаем формат кода полей, выполнив повторно (Выделить все (Ctrl+A) - Alt+F9).
Вроде бы все!  smile

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Ломается автоматическое обновление связей между Word и Excel

Спасибо большое за оперативный ответ, сейчас буду пробовать.

А по поводу вопроса номер 1 есть какие либо идеи? Почему так может происходить, что автоматическое обновление умирает? Вручную, путем щелкания на каждом связанном объекте внутри ворда всё обновляется, а автоматом ни в какую не хочет.

4

Re: Ломается автоматическое обновление связей между Word и Excel

Я думаю, это может быть связано с тем, что в полях прописан полный (абсолютный) путь. Если вы переместили оба файла (Word и Excel) (или хотя бы один из них), то эти файлы уже не могут найти друг друга и обновить связь.
По поводу возможности указания относительного пути, где-то на форуме, кажется, было обсуждение, но не помню, к какому выводу пришли. Если найду ссылку - сообщу вам в этой ветке.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Ломается автоматическое обновление связей между Word и Excel

Если вы переместили оба файла (Word и Excel) (или хотя бы один из них), то эти файлы уже не могут найти друг друга и обновить связь.

Я их всегда в одну папку помещаю, так что по идее должны находить. И находят:  если я в ручном режиме мышкой кликаю на связанный объект, нажимаю обновить (при этом вручную не указываю расположение источника), то они находят друг друга.

6

Re: Ломается автоматическое обновление связей между Word и Excel

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

7

Re: Ломается автоматическое обновление связей между Word и Excel

К сожалению, везде пишут, что относительный путь для связи файлов задать нельзя. Даже, если это и получится, относительный путь сразу преобразуется в абсолютный.
На следующих страницах описывается обновление связей с помощью макроса, но мне самому пока не приходилось использовать такие макросы:
http://wordexpert.ru/forum/viewtopic.php?id=130
внешняя ссылка

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

8

Re: Ломается автоматическое обновление связей между Word и Excel

Sub ChangeLinks()
  Dim oFld As Field 'Поле
  Dim OldFileName As String 'Старое имя файла
  Dim NewFileName As String 'Новое имя файла
  Dim FieldCode As String 'Код поля
  Dim ReplaceAllPath As Boolean 'Заменять весь путь к файлу или только имя
  Dim StartPath As Integer, EndPath As Integer 'Начало и конец пути к файлу в коде поля
  
  'Ввод старого имени файла
  OldFileName = InputBox("Укажите старое имя файла с расширением в ссылке, которое нужно изменить", "Изменение ссылок", OldFileName)
  If Len(OldFileName) = 0 Then Exit Sub
  
  'Выбор нового файла
  With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Выберите новый файл, с которым должен быть связан документ"
    .AllowMultiSelect = False
    .ButtonName = "Выбрать"
    .Filters.Clear
    .Filters.Add "Таблицы Excel", "*.xls; *.xlsx"
    If .Show Then NewFileName = .SelectedItems(1) Else Exit Sub
  End With
  
  'Если изменилось не только имя, но и местоположение, то можно заменить весь путь
  ReplaceAllPath = MsgBox("Заменять весь путь? Нажмите ""Нет"", чтобы заменить только имя файла", vbYesNo + vbInformation, "Изменение ссылок") = vbYes
  
  NewFileName = Replace(NewFileName, "\", "\\")
  'Перебираем все поля в документе
  For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldLink Then 'Если поле является полем ссылки
      FieldCode = oFld.Code.Text
      If InStr(oFld.Code.Text, "Excel.Sheet") <> 0 And InStr(FieldCode, "\\" & OldFileName) <> 0 Then 'Если поле ссылается на лист Excel и на нужный файл
        If ReplaceAllPath Then 'Если нужно заменить весь путь
          StartPath = InStr(FieldCode, ":\\") - 2
          EndPath = InStr(FieldCode, "\\" & OldFileName) + Len(OldFileName) + 2
          FieldCode = Mid(FieldCode, 1, StartPath) & NewFileName & Mid(FieldCode, EndPath)
        Else 'Если нужно заменить только имя файла
          FieldCode = Replace(FieldCode, OldFileName, Mid(NewFileName, InStrRev(NewFileName, "\") + 1))
        End If
      End If
    End If
    oFld.Code.Text = FieldCode
  Next
End Sub

9

Re: Ломается автоматическое обновление связей между Word и Excel

Имя файла экселевского охотно меняется макросом. Но когда макрос начинает менять путь, выводится окошко бага(((

10

Re: Ломается автоматическое обновление связей между Word и Excel

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

У кого нибудь есть идеи, как его исправить?

11

Re: Ломается автоматическое обновление связей между Word и Excel

crucifixion пишет:

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

У кого нибудь есть идеи, как его исправить?

Здравствуйте.  А не решили ли Вы этой проблемы? Не могли бы Вы объяснить как запустить данный макрос, поскольку я очень и очень далек от них, и никак не могу сообразить. Заранее спасибо!

12

Re: Ломается автоматическое обновление связей между Word и Excel

AbaevZ пишет:


Не могли бы Вы объяснить как запустить данный макрос, поскольку я очень и очень далек от них, и никак не могу сообразить. Заранее спасибо!

AbaevZ, посмотрите здесь:
http://wordexpert.ru/page/sozdanie-makr … ovogo-koda

13

Re: Ломается автоматическое обновление связей между Word и Excel

У меня возникла такая проблема с макросом. В документе присутствуют формулы стандартные вордовские в которые вставлены связанные данные. До применения макроса все работает обновляется. После запуска макроса связи  которые были вставлены в формулы выдают ошибку связи. При этом тип связи до макроса был Excel.Sheet  а после становится Microsoft Equation 3.0.
Можно это как то исправить?