Книга: Excel. Трюки и эффекты
Автоматическое создание документов Word на основе табличных данных Excel
Автоматическое создание документов Word на основе табличных данных Excel
В данном разделе мы рассмотрим трюк, с помощью которого можно автоматически создавать текстовые документы Word на основе данных, хранящихся в таблице Excel. Это бывает необходимо, например, для быстрого формирования текстовых отчетов, в которых должны фигурировать табличные данные. Использование этого приема мы рассмотрим на конкретном примере.
Предположим, что у нас есть следующие данные о продажах по регионам (рис. 3.31).
Внимание!
При изучении данного раздела следует обращать внимание на расположение данных на рабочем листе (то есть на координаты задействованных ячеек).
Для автоматического создания отчетов на основании приведенных данных следует в стандартном модуле редактора VBA написать код, приведенный в листинге 3.85.
Рис. 3.31. Данные о продажах
Листинг 3.85. Создание документов Word на основе таблицы Excel
Sub ReportToWord()
Dim intReportCount As Integer ' Количество сообщений
Dim strForWho As String ' Получатель сообщения
Dim strSum As String ' Сумма за товар
Dim strProduct As String ' Название товара
Dim strOutFileName As String ' Имя файла для сохранения
сообщения
Dim strMessage As String ' Текст дополнительного сообщения
Dim rgData As Range ' Обрабатываемые ячейки
Dim objWord As Object
Dim i As Integer
' Создание объекта Word
Set objWord = CreateObject(«Word.Application»)
' Информация с рабочего листа
Set rgData = Range(«A1»)
strMessage = Range(«E6»)
' Просмотр записей на листе Лист1
intReportCount = Application.CountA(Range(«A:A»))
For i = 1 To intReportCount
' Динамические сообщения в строке состояния
Application.StatusBar = "Создание сообщения " & i
' Назначение данных переменным
strForWho = rgData.Cells(i, 1).Value
strProduct = rgData.Cells(i, 2).Value
strSum = Format(rgData.Cells(i, 3).Value, «#,000»)
' Имя файла для сохранения отчета
strOutFileName = ThisWorkbook.path & "" & strForWho &
«.doc»
' Передача команд в Word
With objWord
.Documents.Add
With .Selection
' Заголовок сообщения
.Font.Size = 14
.Font.Bold = True
.ParagraphFormat.Alignment = 1
.TypeText Text:="О Т Ч Е Т"
' Дата
.TypeParagraph
.TypeParagraph
.Font.Size = 12
.ParagraphFormat.Alignment = 0
.Font.Bold = False
.TypeText Text:="Дата:" & vbTab & _
Format(Date, «mmmm d, yyyy»)
' Получатель сообщения
.TypeParagraph
.TypeText Text:=»Кому: менеджеру " & vbTab &
strForWho
' Отправитель
.TypeParagraph
.TypeText Text:="От:" & vbTab &
Application.UserName
' Сообщение
.TypeParagraph
.TypeParagraph
.TypeText strMessage
.TypeParagraph
.TypeParagraph
' Название товара
.TypeText Text:="Продано товара:" & vbTab &
strProduct
.TypeParagraph
' Сумма за товар
.TypeText Text:="На сумму:" & vbTab & _
Format(strSum, «$#,##0»)
End With
' Сохранение документа
.ActiveDocument.SaveAs FileName:=strOutFileName
End With
Next i
' Удаление объекта Word
objWord.Quit
Set objWord = Nothing
' Обновление строки состояния
Application.StatusBar = False
' Вывод на экран информационного сообщения
MsgBox intReportCount & " заметки создано и сохранено в папке " _
& ThisWorkbook.path
End Sub
В результате написания кода в окне выбора макросов станет доступным макрос ReportToWord. После его запуска начнется формирование отчетов (информация о состоянии процесса будет отображаться в строке состояния). По окончании процесса на экране отобразится окно с сообщением о том, что документы сформированы и помещены в ту папку, в которой хранится текущая рабочая книга. В рассматриваемом примере будут созданы три документа с именами Магазин 1.doc, Магазин 2.doc и Магазин 3.doc. Содержимое документа Магазин 1. doc показано на рис. 3.32 (другие документы выглядят аналогичным образом).
В рассматриваемом примере Lesha – это имя пользователя, который создал документ. Очевидно, что в результате внесения соответствующих изменений в код макроса форму создаваемого отчета можно корректировать по своему усмотрению.
Рис. 3.32. Документ Word, созданный на основе данных таблицы Excel
- Подсчет количества открытий файла
- Получение «закрытой» информации
- Произвольный текст в строке состояния
- Быстрое изменение заголовка окна
- Ввод данных с помощью диалогового окна
- Применение функции без ввода ее в ячейку
- Скрытие строк и столбцов от посторонних
- Быстрое выделение ячеек, расположенных через интервал
- Определение количества ячеек в диапазоне и суммы их значений
- Подсчет именованных объектов
- Быстрый поиск курсора
- Поиск начала и окончания диапазона, содержащего данные
- Трюки с примечаниями
- Дополнение панели инструментов
- Примеры создания панелей инструментов
- Формирование пользовательского меню
- Проверка наличия файла по указанному пути
- Автоматизация удаления файлов
- Перечень имен листов в виде гиперссылок
- Удаление пустых строк на рабочем листе
- Запись текущих данных в текстовый файл
- Экспорт и импорт данных
- Одновременное умножение всех данных диапазона
- Преобразование таблицы Excel в HTML-формат
- Поиск данных нештатными средствами
- Включение автофильтра с помощью макроса
- Трюки с форматированием
- Вывод информации о текущем документе
- Вывод результата расчетов в отдельном окне
- Вывод разрешения монитора
- Что открыто в данный момент?
- Создание бегущей строки
- Мигающая ячейка
- Вращающиеся автофигуры
- Вызов таблицы цветов
- Создание калькулятора
- Еще о создании пользовательских меню
- Склонение фамилии, имени и отчества
- Получение информации об используемом принтере
- Вывод текущей даты и времени
- Автоматическое создание документов Word на основе табличных данных Excel
- Создание списка панелей инструментов и контекстных меню
- Создание списка пунктов главного меню Excel
- Создание списка пунктов контекстных меню
- Отображение панели инструментов при определенном условии
- Скрытие и отображение панелей инструментов
- Создание меню на основе данных рабочего листа
- Создание контекстного меню
- Просмотр содержимого папки
- Получение информации о состоянии дисков
- Расчет среднего арифметического
- Вывод списка доступных шрифтов
- Создание раскрывающегося списка
- Добавление команды на вкладку
- Рис. 176. Создание списка.
- Резервное копирование базы данных InterBase
- Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Владелец базы данных
- ЧАСТЬ IV. База данных и ее объекты.
- Перевод базы данных InterBase 6.x на 3-й диалект
- Типы данных для работы с датой и временем
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Обзор основных причин повреждения базы данных
- Ошибки проектирования базы данных