С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.03.2014
Сообщений: 3
1

И вновь из excel в word

25.03.2014, 15:49. Показов 1597. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. к моему глубокому сожалению, просмотрев кучу теми макросов не нашёл нужного мне, не уверен в существовании его вовсе, но попробую сформулировать вопрос:
есть два файла, word и excel.
Необходим макрос который подставлял бы значения из excel в нужные места файла word, при этом не загоняя весь файл word в переменную, поскольку в тексе есть тоже таблица.
я нашёл похожий макрос тут:
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
Sub main()
 
Dim wdApp As Object
Dim wdDoc As Object
 
    HomeDir$ = ThisWorkbook.Path
    
    Set wdApp = CreateObject("Word.Application")
    
    ii% = 3
    
    Do
    
      If Cells(ii%, 1).Value = "" Then Exit Do
      
      IP$ = Cells(ii%, 1).Value
      Basket$ = Cells(ii%, 2).Value
      Position$ = Cells(ii%, 3).Value
      Adress$ = Cells(ii%, 4).Value
      NRI$ = Cells(ii%, 5).Value
      BS$ = Cells(ii%, 6).Value
      ID$ = Cells(ii%, 7).Value
      
      FileCopy HomeDir$ + "\SZ_Ericsson_Traffic_Node_Fish2.docx", HomeDir$ + "\SZ_Ericsson_Traffic_Node_" + Position$ + "_" + BS$ + ".docx"
 
      
      Set wdDoc = wdApp.Documents.Open(HomeDir$ + "\SZ_Ericsson_Traffic_Node_" + Position$ + "_" + BS$ + ".docx")
      
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&IP", IP$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&Basket", Basket$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&Position", Position$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&Adress", Adress$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&NRI", NRI$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&BS", BS$)
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&ID", ID$)
 
      wdDoc.Save
      wdDoc.Close
      
      ii% = ii% + 1
      
    Loop
      
    wdApp.Quit
 
    MsgBox "Готово"
 
End Sub
Но этот макрос, как я понял не заменяет конкретное значение в шаблоне, а полностью весь шаблон загоняет в переменную, в которой места нет существующей в шаблоне таблице.
Заранее спасибо, и прошу прощения если не увидел такой темы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2014, 15:49
Ответы с готовыми решениями:

Word + Excel, Импорт данных из Excel в шаблон Word с условиями
Здравствуйте! Помогите, пожалуйста. Есть файл Word с расставленными закладками-метками и файл...

Записать массивы в excel на вновь созданные листы
Здравствуйте! Мне необходимо записать массивы в excel на разные листы. Используя xlswrite я...

Вновь потоки и вновь я не знаю что делать
Привет! Есть 10 потоков, каждый из которых должен отправлять запрос Вот, как отправляю сам...

Как перейти на вновь созданный лист Excel по его имени
Создал лист Excel, присвоил ему имя. До этого момента всё работает. Созданный лист активен. На...

5
Ушел с CyberForum совсем!
873 / 182 / 25
Регистрация: 04.05.2011
Сообщений: 1,020
Записей в блоге: 110
25.03.2014, 16:37 2
Цитата Сообщение от zmalyushitskiy Посмотреть сообщение
Необходим макрос который подставлял бы значения из excel в нужные места файла word, при этом не загоняя весь файл word в переменную, поскольку в тексе есть тоже таблица.
ничего не понял
в кратце
1. тут в цикле создается копия файла из шаблона, который сохраняется с неким именем в соответствии со значением из определенного столбца. (см. строку 37-38)
2. открывается файл созданный в п. 1 (см. строку 27)
3. производится замена неких текстовых последовательностей на значения из соответствующих столбцов
таблицы эксель (см. строки 29-35)
4. Файл сохраняется и закрывается (см. строки 27)
5. И это будет повторяться пока в некоторой ячейке в первом столбце не будет пусто.
1
0 / 0 / 0
Регистрация: 24.03.2014
Сообщений: 3
25.03.2014, 16:42  [ТС] 3
Всё верно, но при этом файл шаблона содержит таблицу, которая после пункта 3. исчезает, все необходимые замены происходят, но форматирование шаблона полностью удаляется. Складывается впечатление, что весь файл становится одной большой переменной, в которой не может присутствовать таблица.
0
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
25.03.2014, 16:43 4
Лучший ответ Сообщение было отмечено zmalyushitskiy как решение

Решение

Замените
Visual Basic
1
wdDoc.Range.Text = Replace$(wdDoc.Range.Text, "&IP", IP$)
на
Visual Basic
1
wdDoc.Range.Find.Execute findtext:="&IP", replacewith:=IP$, Replace:=2
и так для всех замен ...
2
Модератор
Эксперт MS Access
12095 / 4955 / 791
Регистрация: 07.08.2010
Сообщений: 14,566
Записей в блоге: 4
25.03.2014, 16:49 5
на форумах обычно применяют для формирования ворд --документа из аксесс/ексель
--слияние
--замена
--закладки

недостатки
--надо указать версию WORD
--БОЛЬШИЕ СЛОЖНОСТИ, если надо занести в шаблон таблицу-две-три-четыре
--жесткая привязка к каталогу

я же 99 процентов отчетов из ворд-аксесс-ексель формирую программно в формате НТМ в стандартных тегах

достоинства
--один и тот же отчет можно открыть
=====броузер --только просмотр
--------ворд --печать с автоподгоном ширины таблицы и высоты строки
--------ексель---при необходимости
--свободно открывается вордом 2003 и новее(бе ругани), екселем с небольшой руганью
--для слабовидящих можно варьировать шрифтом при просмотре или формировании
--ОПЕН ОФИС тоже открывает

недостатки
--надо разобраться в методике описания таблиц
--надо понять 2 десятка тегов
1
0 / 0 / 0
Регистрация: 24.03.2014
Сообщений: 3
25.03.2014, 16:52  [ТС] 6
Step_UA, огромное, человеческое спасибо.
И вообще спасибо всем за участие. Действительно помогло.
0
25.03.2014, 16:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2014, 16:52
Помогаю со студенческими работами здесь

Касперский вновь и вновь находит вирус
Здравствуйте! Установлен Kaspersky Internet Security 2016. Находит вирус...

Из Excel в Word, как добавить или сохранить закладку в Word
Добрый день, уважаемые форумчане, надеюсь на вашу помощь. Переношу данные из Excel в шаблон...

Из Excel в Word / Задать количество листов для печати в Word
Добрый день многоуважаемые, надеюсь на ваш совет. Есть задание из Excel таблицы переносить...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании...

Из Excel в Word, как добавить/сохранить закладку в Word
Добрый день, уважаемые форумчане. Работаю над файлом по переносу данных из Excel в Word и по пути...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru