Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 131

Связать файл ворд с таблицами эксель для обновления через VBA

22.05.2018, 09:17. Показов 940. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте стоит такая задача. Необходимо связать файл WORD с EXEL, с определенным файлом для подтягивания диаграмм. Но чтобы была возможность поменять файл EXEL и данные в WORDавтоматически подтянулись. Например есть файл "док 1" (в приложении) там есть диаграмма она автоматически связана с файлом "Книга 5". Нужно сделать так чтобы можно было автоматически подтянуть данные, например выбрал файл "Книгу 2", диаграмма в "Док 1" должна автоматически обновится. Помогите очень нужно
Также важно чтобы в диаграммах не менялся исходный формат диаграмм, то есть они не становились больше или меньше, уже или шире.
На просторах форума нашел вот такой макрос. Помогите разобраться пожалуйста.
Visual Basic
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Sub Смена_источника_данных()
'
' Смена_источника_данных Макрос
'
  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 'Начало и конец пути к файлу в коде поля
  Dim FullPath As String
  Dim Name As String
      
    For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldLink Then 'Если поле является полем ссылки
        If InStr(oFld.Code.Text, "Excel.SheetMacroEnabled.12") <> 0 Then 'Если поле ссылается на лист Excel
            FullPath = oFld.Code.Text
            Exit For
        End If
    End If
    Next
      
 'Отделение имени файла от мусора
  i = InStrRev(FullPath, "") 'позиция последнего \\
  Name = Mid(FullPath, i + 2)
  j = InStrRev(Name, Chr(34)) 'позиция конца имени файла с расширением
  OldFileName = Left(Name, j - 1)
   
  'Ввод старого имени файла
  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; *.xlsm"
    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.SheetMacroEnabled.12") <> 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
      oFld.Code.Text = FieldCode
    End If
  Next
End Sub
Вложения
Тип файла: docx Doc1.docx (16.7 Кб, 3 просмотров)
Тип файла: xlsx Книга2.xlsx (9.9 Кб, 2 просмотров)
Тип файла: xlsx книга 5.xlsx (14.4 Кб, 2 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2018, 09:17
Ответы с готовыми решениями:

Результат запроса в эксель через vba
Здравствуйте, Есть запрос, который получает 2 параметра из полей формы. Результат запроса сохраняю в excel. Подскажите пожалуйста,...

Как работать с временными таблицами через VBA?
см. тему

Через Ексель Открыть файл ВОРД и сохранить файл под определенным именем
Открываю через ексель файлы ворд и выполняю макрос ворд, но не получается сохранить файл под указанным именем ни такое ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2018, 09:17
Помогаю со студенческими работами здесь

Функция VBA для эксель
Помогите понять вообще, что тут происходит. Функция должна считать количество посещений листа в эксель. Мне непонятно какие функции...

Задачка для эксель и VBA
Добрый день. Прошу помощи специалистов в решении следующей задачи. Допустим, в клетках А1-А5 имеются следующие данные (например, виды...

Запись в эксель и ворд
Здравствуйте! Подскажите, как можно записать данные из таблицы в эксель и ворд без вывода ошибки &quot;Действительный формат открываемого...

Запущен ли Ворд, Эксель
У меня запущен Ворд, и Эксель, код есть, но MsgBox на этот счёт не получаю ????? Dim Word As Word.Application On Error Resume...

Прокрутка бегунком в эксель и ворд
Здравствуйте. Подскажите по ворду и эксель. Win7. Офис 2007. Если мышкой нажать и держать вертикальный или горизонтальный бегунок, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru