Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/398: Рейтинг темы: голосов - 398, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 05.10.2012
Сообщений: 3

Вставка текста из Excel в Word

05.10.2012, 18:42. Показов 87290. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, ув. форумчане. Помогите начинающему. У меня есть экселевский файл с реквизитами клиентов. могу ли я сделать, чтобы по нажатию какой-нибудь кнопки(или по запуску макроса) создавался договор по определенному контрагенту из шаблона word?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2012, 18:42
Ответы с готовыми решениями:

Вставка текста в Word
Возникла такая проблема: на форме имеется компонент ComboBox, я из него считываю текст и заношу его в Word. Мне нужно, чтобы при щелчке...

Вставка текста в Word
Подскажите пожалуйста, как в готовый документ Word вставлять в определенные места из VB-программы текст.

Вставка значений и в excel и в word
Приветствую... Вопрос следующий... У меня есть форма, на ней пользователь вводит свои значения, по нажатию на кнопку эти значения...

64
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 5
21.08.2013, 22:04
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от shanemac51 Посмотреть сообщение
не тянет wdDoc.Range.Text = Replace$(wdDoc.Range.Text,
Это почти то, что нужно, но как быть с матрицей из размеров-цветов-количеств-частот замен и стоимостей ("...необходимо, помимо текста договора, автозаполнение таблицы в вордовском документе с использованием значений соответствующих ячеек в файле эксель, т.е. нескольких строк (данные столбцов: Q, R, S, T нужно как-то зациклить, допустим, до 26-й строки и поместить в таблицу ворд)). Плюс, если можно, поясните, как убрать лишние вводы в ячейках итогового файла?

Спасибо.
С уважением,
Nosce te ipsum

Добавлено через 3 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
Хорошо, завтра я все детально рассмотрю.
Спасибо, Борис.
С уважением,
Nosce te ipsum
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
21.08.2013, 22:42
Nosce te ipsum что за данные в строках 29-31 и для чего используются?
лист "исходные данные для реквизитов" всегда содержит данные только для 1 договора?
зачем информация о расположении (в таблице шаблона) разбита на 3 строки? - судя из данных, расположение для всех пунктов будет одинаково
мне кажется что у вас много лишней информации (производной от имеющейся), столбцы Z, AA ...
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
22.08.2013, 08:18
вариант 2---с под-таблицей
Вложения
Тип файла: zip Договор-МАКРО-рабочий21.zip (27.0 Кб, 272 просмотров)
0
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 5
22.08.2013, 10:14
Цитата Сообщение от Step_UA Посмотреть сообщение
Nosce te ipsum что за данные в строках 29-31 и для чего используются?
лист "исходные данные для реквизитов" всегда содержит данные только для 1 договора?
зачем информация о расположении (в таблице шаблона) разбита на 3 строки? - судя из данных, расположение для всех пунктов будет одинаково
мне кажется что у вас много лишней информации (производной от имеющейся), столбцы Z, AA ...
Здравствуйте, Step_UA.
Вы правы, эти данные (в строках 29-31) - вспомогательные. И, да - лист "исходные данные для реквизитов" всегда содержит данные только для 1 договора, т.е. задача заключается в том, чтобы перенести данные из реквизитов, присланные от Заказчика в экселевскую форму и макросом создать из них договор в ворде. Далее буду думать, как ПРОВЕСТИ эти данные так, чтобы часть из них: наименование Заказчика, адрес поставки, наименование поставщика и все данные из таблицы копировались с сохранением, положим, на следующий лист - в отчёт, а данные формы - очищались для следующего Заказчика.
Что же касается "информации о расположении (в таблице шаблона), разбитой на 3 строки", точнее столбца, то данные в первых двух, т.е. юр. адрес и фактич. адрес - копируются в реквизиты (2 лист вордовского договора), а адрес поставки, который зачастую не совпадает с ними - в таблицу, т.е. - является КЛЮЧЕВЫМ реквизитом для поставки.

Спасибо Всем форумчанам за участие, Вы уже намного облегчили мне жизнь.

С уважением,
Nosce te ipsum
0
0 / 0 / 0
Регистрация: 21.08.2013
Сообщений: 5
26.08.2013, 23:55
Цитата Сообщение от shanemac51 Посмотреть сообщение
вариант 2---с под-таблицей
Здравствуйте, shanemac51. Хотел поблагодарить Вас за "вариант 2---с под-таблицей". Немного подредактировал - проблема решена. Задачу со знаками "конец абзаца" в ячейках решил предварительно встроенным в шаблон вордовским макросом, запускаемым из моего экселевского. Если кому-то будет интересно, код - ниже:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub TablesRemovePilcrons()
Dim oTbl As Table
Dim oCll As Cell
For Each oTbl In ActiveDocument.Tables
For Each oCll In oTbl.Range.Cells
While oCll.Range.Characters.Last.Previous = Chr(13)
oCll.Range.Characters.Last.Previous = ""
Wend
Next
Next
End Sub
Он удаляет лишние вводы ТОЛЬКО в ячейках вордовских таблиц.

Ещё раз, спасибо ВСЕМ.
0
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 10
31.03.2015, 13:33
Catstail, ,большое вам спасибо очень выручили.
0
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 9
18.04.2015, 08:16
Добрый день.
Мне надо формировать документ по реквизитам в первых строках и заполнять отдельно таблицу по диапазону из excel. Помогите пожалуйста.
Вложения
Тип файла: zip 111.zip (73.9 Кб, 30 просмотров)
0
0 / 0 / 0
Регистрация: 10.04.2015
Сообщений: 9
18.04.2015, 20:40
Собрал код, но не работает как надо.
Строка 58 - строки не добавляются.
Строка 64 - тоже ошибка


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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Sub СформироватьДоговоры()
    ПутьШаблона = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, ИмяФайлаШаблона)
    НоваяПапка = NewFolderName & Application.PathSeparator
    Dim row As Range, pi As New ProgressIndicator
    r = Cells(Rows.Count, "A").End(xlUp).row: rc = r - 2
    If rc < 1 Then MsgBox "Строк для обработки не найдено", vbCritical: Exit Sub
 
    pi.Show "Формирование договоров": pi.ShowPercents = True: s1 = 10: s2 = 90: p = s1: a = (s2 - s1) / rc
    pi.StartNewAction , s1, "Запуск приложения Microsoft Word"
 
    ' Dim WA As Word.Application, WD As Word.Document: Set WA = New Word.Application    ' c подключением библиотеки Word
    Dim WA As Object, WD As Object: Set WA = CreateObject("Word.Application")    ' без подключения библиотеки Word
 
    For Each row In ActiveSheet.Rows("3:" & r)
        With row
            ФИО = Trim$(.Cells(1)) & " " & Trim$(.Cells(3)) & " " & Get_Now
            Filename = НоваяПапка & ФИО & РасширениеСоздаваемыхФайлов
 
            pi.StartNewAction p, p + a / 3, "Создание нового файла на основании шаблона", ФИО
            Set WD = WA.Documents.Add(ПутьШаблона): DoEvents
            
            pi.StartNewAction p + a / 3, p + a * 2 / 3, "Замена данных ...", ФИО
            For i = 1 To КоличествоОбрабатываемыхСтолбцов
                FindText = Cells(1, i): ReplaceText = Trim$(.Cells(i))
 
                ' так почему-то заменяет не всё (не затрагивает таблицу)
                'WA.Selection.Find.Execute FindText, , , , , , , wdFindContinue, False, ReplaceText, True
 
                pi.line3 = "Заменяется поле " & FindText
                With WD.Range.Find
                    .Text = FindText
                    .Replacement.Text = ReplaceText
                    .Forward = True
                    .Wrap = 1
                    .Format = False: .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                    .Execute Replace:=2
                End With
                DoEvents
            Next i
            
        With ThisWorkbook.Worksheets("Мероприятия") ' специально(!) именно ТАК, а не ActiveSheet
        r = .Cells(.Rows.Count, 1).End(xlUp).row
        If r > 1 Then
 
   
            ' копируем в буфер обмена сразу все данные, для заполнения таблицы Word
            .Cells(2, 2).Resize(r - 1, 6).Copy
            
            With WD.Tables(1)
                n = .Rows.Count
                If n < r Then
                    ' добавляем в таблицу недостающее кол-во строк
                    .Cell(n, 1).Select
                    WA.Selection.InsertRowsBelow r - n
                ElseIf n > r Then
                    ' удаляем из таблицы лишние строки
                    WD.Range(.Rows(r + 1).Range.Start, .Rows(n).Range.End).Rows.Delete
                End If
                ' вставляем из буфера
                WD.Range(.Cell(2, 2).Range.Start, .Cell(r, 7).Range.End).Paste
                ' проставляем порядковые номера
                For n = 2 To r
                    .Cell(n, 1).Range.Text = n - 1
                Next
            End With
            'WD.Save ' сохраняем заполненный документ Word, если нужно
            Application.CutCopyMode = False
        Else
            MsgBox "Нет данных для копирования в Word", vbExclamation, ThisWorkbook.Name
        End If
    End With
            
            pi.StartNewAction p + a * 2 / 3, p + a, "Сохранение файла ...", ФИО, " "
            WD.SaveAs Filename: WD.Close False: DoEvents
            p = p + a
                       
        End With
   
    Next row
    
    pi.StartNewAction s2, , "Завершение работы приложения Microsoft Word", " ", " "
    WA.Quit False: pi.Hide
    msg = "Сформировано " & rc & " договоров. Все они находятся в папке" & vbNewLine & НоваяПапка
    MsgBox msg, vbInformation, "Готово"
End Sub
Вложения
Тип файла: zip 111.zip (64.8 Кб, 73 просмотров)
0
1 / 1 / 0
Регистрация: 21.04.2015
Сообщений: 19
25.09.2015, 16:58
подскажите, а кто нибудь решил проблему вылезающих знаков абзаца и кавычек при вставке обычного текста из ячейки Exel??? пробовал переводить xlsm в htm и с тем же успехом.
0
 Аватар для vadi61
1 / 1 / 0
Регистрация: 11.03.2013
Сообщений: 56
08.11.2015, 00:15
Подскажите, а как вставить один документ Word (целиком) в другой.
У меня заполняются данные в Excel-файл. Из него я передаю их в Word-документ, но в нескольких местах (в зависимости от заполненных данных) надо вставлять не данные, а один из заранее подготовленных docx-файлов (текст + картинки + форматирование). Вот такая задача...
0
1 / 1 / 0
Регистрация: 06.12.2015
Сообщений: 98
05.04.2018, 13:29
Классная тема. Спасибо за примеры.
А подскажите пожалуйста еще такой момент (пример 57а), в шаблоне создана таблица и в сию таблицу вставлена вкладка, но при открытии вновь сформированного документа таблица отсутствует.
Подскажите как значения из определенных ячеек excel, в необходимые ячейки таблицы word. Таблица нестандартная, в ней присутствуют объеденные ячейки.
Спасибо.
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
22.05.2018, 13:42
Всем привет.
я пользуюсь вот таким способом заполнения документов:

 Комментарий модератора 
вопрос в чужой теме

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim WA As Object, WD As Object
papka = ThisWorkbook.Path & "\шаблоны\"
dt = ThisWorkbook.Path & "\" & Replace(TextBox2, """", "")
If Len(Dir(dt, vbDirectory)) = 0 Then MkDir dt
    Set WA = CreateObject("Word.Application")
    Set WD = WA.Documents.Open(papka & "\Участники сделки.docx") ' путь ворд
WD.Range.Find.Execute FindText:="#ФИО", ReplaceWith:=TextBox9, Replace:=2 
WD.Range.Find.Execute FindText:="#ДМрожедения", ReplaceWith:=(TextBox10 & ", " & TextBox11), Replace:=2
WD.Range.Find.Execute FindText:="#МестоРождения", ReplaceWith:=TextBox11, Replace:=2
WD.Range.Find.Execute FindText:="#Гражданство", ReplaceWith:=TextBox12, Replace:=2
' и т.д.
WA.Visible = True
Application.DisplayAlerts = False
WD.SaveAs Filename:=dt & "\" & "Участники сделки.docx"
WA.Quit
'Set WA = Nothing
Application.DisplayAlerts = True
MsgBox "Документы сформированы", , "Результат {-_-}"
Но иногда возникает потребность несколько раз повторить первый блок заполнения.
На форме эксель данные вносятся в полном объёме (в зависимости от кол-ва участников сделки , 1-4 человека).
Как в шаблоне word повторить данный блок? или как вариант: удалить лишние 2-3 таблицы с метками замены?
спасибо.
Вложения
Тип файла: docx Участники сделки.docx (13.6 Кб, 37 просмотров)
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
22.05.2018, 19:13
Так цикл не?
Visual Basic
1
2
3
4
for i=1 to 3
WD.Range.Find.Execute FindText:="#ФИО" & i, ReplaceWith:=split(TextBox9, разделитель)(i-1), Replace:=2 
...
next
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
23.05.2018, 09:38
Hugo121, возможно я не очень корректно написал вопрос. сорри(
по экселю определяется сколько участников сделки, а в ворде нужно удалить кусок лишней таблицы с метками. просто замена меток на пустые значения не подходит.
или определив кол-во участников, повторить в ворде первый кусок таблицы с увеличенными индексами меток, +1.
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
23.05.2018, 20:50
eritik, копируете таблицу, для второго и последующих после таблицы производите вставку скопированного из буфера и заполняете ...
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
23.05.2018, 21:20
Step_UA, эээээ.... я вроде тоже самое написал.
Вопрос, как это сделать программно!?
0
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
23.05.2018, 21:38
В шаблоне таблица для одного участника
Visual Basic
1
2
3
4
5
6
7
8
9
10
WD.Tables(1).Range.Copy ' копируем первую таблицу в буфер обмена до начала заполнения
for i=1 to количество_участников
if i>1 then
    ' вставка после таблицы из буфера - "приклеится", будет одной таблицей
    with WD.tables(1).tange
        WD.range(.end, .end).paste
    end with
end if
.... ' заполняем
next
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
28.05.2018, 15:19
Step_UA, спасибо. с одной простой таблицей это работает. если же таблица сложная, то начинаются наложения.

можете показать на моем примере. (приложил свои файлы).

- возможно есть вариант пометить нужную часть таблицы метками и копировать ее целиком?
- или как вариант все таки создать четыре нужных блока, а потом в зависимости от потребности удалить их.?
Вложения
Тип файла: docx testoviy.docx (51.0 Кб, 35 просмотров)
0
 Аватар для eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 104
28.05.2018, 15:21
...
Вложения
Тип файла: xls общая.xls (51.0 Кб, 44 просмотров)
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12512 / 5086 / 814
Регистрация: 07.08.2010
Сообщений: 14,972
Записей в блоге: 4
28.05.2018, 16:41
я вы видимо в первую очередь сделала список людей таблицей, без всяких вкладок
вкладок всегда не хватит, сколько не делай

у меня в задаче Счета фактуры было 7 позиций под материалы(вернее мне она досталась в таком виде)
через некоторое время понадобилась 8 и 9
подумав, я переделала под столбик (в строке наименование, количество,цена,сумма....)

и правильно сделала --через некоторое время пошли счета по 20-30 позиций, а затем и по 100-200

--конечно мне было проще --у меня был аксесс

Добавлено через 14 минут
второе замечание:
--набила например 5 человек
--может распечатала
--нашла ошибки
--вошла снова --а форма пустая ---НАНОВО НАБИВАТЬ --КИСЛО
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2018, 16:41

Вставка данных из excel в word
Всем привет! Подскажите пожалуйста решение следующей проблемы. В Excel имеется столбец значений. Так же есть word файл. Он является...

Вставка данных из Excel в шаблон WORD
Проблема такая: Есть файл Excel из которогоданные вставляются в шаблон word? Все вставляется куда нужно, только вот в шаблоне есть например...

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

Вставка текста или таблицы в WORD
Здравствуйте, уважаемые специалисты! У меня есть задача: необходимо в определенных случаях вставлять небольшой текст или таблицу либо в...

Вставка в Word текста из TextBox с форматированием
Не подскажите, как сделать так, чтобы текст из textbox вставлялся в Word, сохраняя при этом форматирование (шрифт, начертание и т.п.),...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru