|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.01.2016, 20:52 | #1 |
Пользователь
Регистрация: 15.01.2016
Сообщений: 24
|
Задать цикл
Здравствуйте, уважаемые. Макрос в Экселе связывает ячейки одной строки с закладками в шаблоне Ворд. Все просто, указываю строку, столбец потом закладку, связываю их. Но строк много и нужно чтобы они автоматически по такому же принципу формировали листы в том же документе (шаблон Ворд).
Sub FT_wd() Dim WordApp As Object Dim WordDoc As Object Dim wb As Workbook, ws As Worksheet Set wb = ActiveWorkbook Set ws = wb.Worksheets("FT") Set WordApp = CreateObject("Word.Application") Set WordDoc = WordApp.Documents.Open("...atx2.doc ") WordApp.Visible = True ws.Cells(3, 3).Copy WordDoc.Bookmarks("kontur").Range.P asteExcelTable True, False, True ws.Cells(3, 4).Copy WordDoc.Bookmarks("naim").Range.Pas teExcelTable True, False, True ws.Cells(3, 24).Copy WordDoc.Bookmarks("diapazon").Range .PasteExcelTable True, False, True End Sub Подскажите как правильно задать цикл, что бы можно было и шаг задавать, и все остальные строки, по типу 3-й, формировали один документ. |
29.01.2016, 21:24 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
шаг формируется через Step в операторе for
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
30.01.2016, 11:38 | #3 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
Имхо, не будет оно так работать. В документе должны быть только оригинальные закладки, то есть закладка naim может быть только на одном листе.
В цикле если запускать код Код:
Лучше и дальше разбираться как работает слияние или, как вариант, создать много файлов а тогда макросом собрать их в одну книгу
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
30.01.2016, 17:21 | #4 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Можете попробовать готовое решение
http://excelvba.ru/programmes/FillDocuments |
31.01.2016, 22:09 | #5 |
Пользователь
Регистрация: 15.01.2016
Сообщений: 24
|
Подскажите в каком месте указать лист "FT" в рабочей книге
Sub FT_wd() Dim WA As New Word.Application Dim WD As Word.Document, ra As Word.Range Dim wb As Workbook, ws As Worksheet Set wb = ThisWorkbook Set ws = wb.Worksheets("FT") Set WD = WA.Documents.Add(ThisWorkbook.Path & Application.PathSeparator & "atx2.dot") With WA.Selection .HomeKey Unit:=wdStory: .EndKey Unit:=wdStory, Extend:=wdExtend .Copy Set wb = ThisWorkbook Set ws = wb.Worksheets("FT") For i = 3 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row .Paste .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{дата;}", False, , , , , , , , Format(Now, "dd mmmm yyyy г"), True .EndKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{kon}", False, , , , , , , , ws.Cells(i, 3), True .EndKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{nai}", False, , , , , , , , ws.Cells(i, 4), True .EndKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{позиция}", False, , , , , , , , ws.Cells(i, 5), True .EndKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{диапазон}", False, , , , , , , , ws.Cells(i, 6), True .EndKey Unit:=wdStory Next i End With WD.SaveAs ThisWorkbook.Path & Application.PathSeparator & "yes2.doc" WD.Close False: WA.Quit False End Sub По всякому пробую, но не получается Последний раз редактировалось eemil; 31.01.2016 в 22:18. |
31.01.2016, 22:23 | #6 |
Пользователь
Регистрация: 15.01.2016
Сообщений: 24
|
Разобрался.. Все работает. Код (тот что выше) рабочий, формирует множество листов в Word из данных таблицы Excel. Может кому еще пригодится
Последний раз редактировалось eemil; 31.01.2016 в 22:26. |
01.02.2016, 21:36 | #7 |
Пользователь
Регистрация: 15.01.2016
Сообщений: 24
|
Подскажите пожалуйста, куда вставить const для закладок {zak1}..{zak6} и столбцов?
Sub FT_wd() Dim WA As Word.Application Dim WD As Word.Document, ra As Word.Range Dim wb As Workbook, ws As Worksheet Set wb = ThisWorkbook Set ws = wb.Worksheets("FT") Set WA = CreateObject("Word.Application") Set WD = WA.Documents.Open("D:\atx2.dot") WA.Visible = True With WA.Selection .HomeKey Unit:=wdStory: .EndKey Unit:=wdStory, Extend:=wdExtend .Copy Set wb = ThisWorkbook Set ws = wb.Worksheets("FT") For i = 3 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row Step 2 .Paste .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak1}", False, , , , , , , , ws.Cells(i, 3), True .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak2}", False, , , , , , , , ws.Cells(i, 4), True .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak3}", False, , , , , , , , ws.Cells(i, 7), True .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak4}", False, , , , , , , , ws.Cells(i, 10), True .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak5}", False, , , , , , , , ws.Cells(i, 11), True .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend .Find.Execute "{zak6}", False, , , , , , , , ws.Cells(i, 12), True .EndKey Unit:=wdStory Next i End With End Sub |
02.02.2016, 01:14 | #8 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как задать цикл по столбцам | umka777_89 | Microsoft Office Excel | 3 | 04.06.2013 00:22 |
не получается задать цикл | brutalis | Общие вопросы Delphi | 0 | 15.12.2011 20:20 |
Как правильно задать цикл? | BingoBongo | Общие вопросы Delphi | 12 | 07.05.2011 09:09 |
Задать цикл | Dagir | БД в Delphi | 1 | 01.09.2008 11:08 |
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) | Mr.User | Помощь студентам | 9 | 23.11.2007 01:34 |