Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2010, 12:02   #1
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию Макрос на изменение источника связи между Word и Excel

Добрый день программисты!

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

С уважением,
Василий.
Василий. вне форума Ответить с цитированием
Старый 29.08.2010, 13:12   #2
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию

забыл вложить файл ...
Вложения
Тип файла: rar вопрос.rar (9.1 Кб, 32 просмотров)
Василий. вне форума Ответить с цитированием
Старый 29.08.2010, 15:28   #3
CyberMen
Заблокирован
 
Регистрация: 08.08.2010
Сообщений: 41
По умолчанию

Василий.
а вручную неудобно изменить связь?
CyberMen вне форума Ответить с цитированием
Старый 29.08.2010, 15:38   #4
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию

да я то могу, но есть люди которые могут только открыть лист ... поэтому так вот.
Василий. вне форума Ответить с цитированием
Старый 29.08.2010, 22:55   #5
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию по другому ...

Хорошо, можно тогда создать макрос, который при открытии книги, а она будет защищена от изменений, будет запрашивать источник обновления?

Заранее спасибо.

Последний раз редактировалось Василий.; 29.08.2010 в 22:56. Причина: грамматика ...
Василий. вне форума Ответить с цитированием
Старый 29.08.2010, 22:57   #6
CyberMen
Заблокирован
 
Регистрация: 08.08.2010
Сообщений: 41
По умолчанию

Василий.
источник обновления запрашивается в Word.
CyberMen вне форума Ответить с цитированием
Старый 29.08.2010, 23:15   #7
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию

т.е. нельзя ничего сделать?
Василий. вне форума Ответить с цитированием
Старый 30.08.2010, 11:53   #8
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию

Программисты Word!!!

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

С уважением,
Василий.
Василий. вне форума Ответить с цитированием
Старый 30.08.2010, 13:07   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Попробуй такой. Писал не для разогрева, а давным-давно.
Код:
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
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 30.08.2010, 13:16   #10
Василий.
Пользователь
 
Регистрация: 28.08.2010
Сообщений: 16
По умолчанию

для viter.aleх

Сейчас попробую ... и всё-равно спасибо за уделённое время.
Василий. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос преобразовывающий таблицу из Word в Excel Alisya Microsoft Office Excel 20 15.10.2011 13:16
Макрос для одновременной работы с word и excel Virtour Microsoft Office Excel 1 20.07.2010 09:29
связи между файлами excel redfield Microsoft Office Excel 0 04.05.2010 16:22
Связи excel c word Vladymyr17 Microsoft Office Excel 0 28.09.2009 15:52
Обмен данных между Excel и Word WilliJo Microsoft Office Word 3 26.05.2009 00:19