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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2012, 14:07   #1
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию Макрос импорта из Excel to Word

Здравствуйте, прошу помощи, тема не раз обсуждалась, но тем не менее.
Суть такова, существует база данных со списком людей прошедших обучение (xls), и файл сертификата (doc).
Необходимо макросом создавать документ с набором готовых к печати сертификатов (одним файлом), То есть берется информация из таблицы в экселе и переносится в заданные места в шаблоне сертификата.
Прошу помощи в написании макроса.

(Допустим мы нажимаем на кнопку Пожарные, и создается документ с сертификатами для пожарных, при нажатии на кнопку для Охранников, из той-же БД формируется Документ с сертификатами для охранников.

Была похожая тема с письмами, но тот макрос почему-то не работает.

В архиве БД и шаблоны для 2х сертификатов.
Можно сделать что-то на подобие {фио} {должность} в нужных полях.помечены желтым )
Спасибо.
Вложения
Тип файла: zip Сер.zip (35.9 Кб, 48 просмотров)
groder911 вне форума Ответить с цитированием
Старый 01.08.2012, 15:16   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Эта надстройка для Excel вам поможет:
http://excelvba.ru/programmes/FillDocuments

Цитата:
Надстройка предназначена для формирования (подготовки) документов по шаблонам, с заполнением созданных файлов данными из текущей книги Excel.

В качестве шаблонов могут выступать следующие типы файлов:
  • документы Word (расширения DOC, DOCX, DOCM)
  • шаблоны Word (расширения DOT, DOTX, DOTM)
  • книги Excel (расширения XLS, XLSX, XLSM, XLSB)
  • шаблоны Excel (расширения XLT, XLTX, XLTM)
  • текстовые документы (расширения TXT, DAT, XML и т.д.)

В качестве исходных данных для заполнения, используется открытый в Excel файл (с таблицей, содержащей строку заголовка)
Одно нажатие кнопки - и будут созданы заполненные файлы Word (по 2 для каждой из выделенных строк)

Последний раз редактировалось EducatedFool; 01.08.2012 в 15:19.
EducatedFool вне форума Ответить с цитированием
Старый 01.08.2012, 16:13   #3
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Эта надстройка для Excel вам поможет:
http://excelvba.ru/programmes/FillDocuments



Одно нажатие кнопки - и будут созданы заполненные файлы Word (по 2 для каждой из выделенных строк)
К сожалению нет, необходим более простой и конкретный вариант.
Здесь надстройка, а мне нужен макрос (именно код), который я бы мог сам докрутить в случае надобности. Если кто-то может привести пример кода из надстройки, буду благодарен, так как сам посмотреть я не смог

Последний раз редактировалось groder911; 01.08.2012 в 16:14. Причина: Ошибка
groder911 вне форума Ответить с цитированием
Старый 06.08.2012, 10:22   #4
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию

Была подобная тема, там EducatedFool помогал девушке с программой для составления писем.
Так вот, там написан макрос, но почему-то он при копировании в другой документ не работает.
Объясните почему?
Код:
Sub CreateDocs()
    Dim WA As New Word.Application
    Dim WD As Word.Document, ra As Word.Range
    Set WD = WA.Documents.Add(ThisWorkbook.Path & Application.PathSeparator & "øàáëîí.dot")
    With WA.Selection
        .HomeKey Unit:=wdStory: .EndKey Unit:=wdStory, Extend:=wdExtend
        .Copy
        For i = 2 To Cells(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 "{фио}", False, , , , , , , , Cells(i, 1), True
            .EndKey Unit:=wdStory, Extend:=wdExtend
            .Find.Execute "{должность}", False, , , , , , , , Cells(i, 2), True
            .EndKey Unit:=wdStory, Extend:=wdExtend
            .Find.Execute "{отделение}", False, , , , , , , , Cells(i, 3), True
            .EndKey Unit:=wdStory, Extend:=wdExtend
            .Find.Execute "{оклад}", False, , , , , , , , Cells(i, 4), True
            .EndKey Unit:=wdStory
        Next i
    End With
    WD.SaveAs ThisWorkbook.Path & Application.PathSeparator & "ïèñüìà.doc"
    WD.Close False: WA.Quit False
End Sub
если изменять исходные файлы, то все работает.
Помогите пожалуйста новичку разобраться в коде
groder911 вне форума Ответить с цитированием
Старый 06.08.2012, 10:49   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Код:
Set WD = WA.Documents.Add(ThisWorkbook.Path & Application.PathSeparator & "øàáëîí.dot")
В этой строке прописывается шаблон документа: путь + имя файла который нужно открыть. Если в указанном месте (рядом с таблицей) такого файла не будет, то и работать не будет)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 06.08.2012, 14:58   #6
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
В этой строке прописывается шаблон документа: путь + имя файла который нужно открыть. Если в указанном месте (рядом с таблицей) такого файла не будет, то и работать не будет)
Допустим, есть xls файл, в нем первая строчка заполнена ФИО людей, есть шаблон .dot в котором написано: {фио}.
Макрос который заполнит шаблон ФИО из экселевского файла и сохранит в новом документе как будет выглядеть, так?
Код:
Sub CreateDocs1()
    Dim WA As New Word.Application
    Dim WD As Word.Document, ra As Word.Range
    Set WD = WA.Documents.Add(ThisWorkbook.Path & Application.PathSeparator & "шаблон.dot")
    With WA.Selection
        .HomeKey Unit:=wdStory: .EndKey Unit:=wdStory, Extend:=wdExtend
        .Copy
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            .Paste
            .EndKey Unit:=wdStory: .HomeKey Unit:=wdStory, Extend:=wdExtend
            .Find.Execute "{фио}", False, , , , , , , , Cells(i, 1), True
            .EndKey Unit:=wdStory, 
                    Next i
    End With
    WD.SaveAs ThisWorkbook.Path & Application.PathSeparator & "документ.doc"
    WD.Close False: WA.Quit False
End Sub
Так будет? Помогите разобраться пожалуйста!
groder911 вне форума Ответить с цитированием
Старый 06.08.2012, 15:13   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Так будет?
У меня процедура заработала.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 06.08.2012, 15:42   #8
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
У меня процедура заработала.
Да, у меня тоже, спасибо, подскажите пожалуйста, почему макрос принебрегает форматированием шаблона, проще говоря се слепляет, хотя я, чтобы каждая новая страница былп отдельно в шаблоне сделал пустой лист
groder911 вне форума Ответить с цитированием
Старый 06.08.2012, 16:35   #9
groder911
 
Регистрация: 30.07.2012
Сообщений: 7
По умолчанию

Все прекрасно заработало, спасибо. Если кому-то понадобится макрос, напишите на мыло groder911@gmail.com
groder911 вне форума Ответить с цитированием
Старый 06.08.2012, 16:38   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Суть такова, существует база данных со списком людей прошедших обучение (xls), и файл сертификата (doc). 
Необходимо макросом создавать документ с набором готовых к печати сертификатов (одним файлом), То есть берется информация из таблицы в экселе и переносится в заданные места в шаблоне сертификата.
Дело в том, что в МСофисе есть готовое средство под Вашу задачу, не требующее ни каких макросов, ключевая слово для поиска "слияние", в 2007 офисе можете посмотреть раздел "Применение слияния для создания и печати писем и других документов", там все пошагово обьяснено

удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для импорта в excel данных из текстового файла с разделителем "табуляция" Androgen13 Microsoft Office Excel 11 17.03.2019 19:40
макрос для слияния из excel в word coriace Microsoft Office Excel 3 20.04.2012 00:12
Макрос преобразовывающий таблицу из Word в Excel Alisya Microsoft Office Excel 20 15.10.2011 13:16
Макрос для одновременной работы с word и excel Virtour Microsoft Office Excel 1 20.07.2010 09:29
Макрос для импорта или копирования из Word barbus Microsoft Office Excel 4 08.05.2010 21:46