Скачиваний:
1
Добавлен:
27.08.2024
Размер:
712.91 Кб
Скачать

Цель работы: Изучение принципов работы с текстовыми файлами программными средствами Excel.

Индивидуально задание: Вариант 117

Ход работы:

1) Разработка уникального шаблона текстового документа в среде Word. Выполнение слияние с данными из Журнала учета

Рисунок 1 – Данные из журнала учета

Рисунок 2 – Форма письма

Далее выбираем наш файл Excel, журнал учёта (рис. 1) и список получателей (рис.3),

которые будут применяться к нашей форма письма.

Рисунок 3 – Список получателей

Рисунок 4 – Шаблон письма

Кроме того, можно указать специальные правила рассылки. В моём письме присутствует условие if-else. Если поле Стоимость имеет значение больше 10000, то в письме приписывается прилагательное к обращению «Любимый Клиент», иначе «Клиент». Примеры писем можно увидеть на рисунке 5 и 6.

Рисунок 5 – Любимый клиент

Рисунок 6 – Обычный клиент

Далее, реализуется данных из Excel в несколько документов Word. Для этого на листе Журнал учета создается текст сообщения и кнопка для генерации письма.

Рисунок 7 – Кнопка для генерации писем и текст сообщения

После этого пишется макрос для генерации писем на основании данных из Журнала учета.

Код макроса:

Option Explicit

Sub Генерация_писем()

' Генерация_писем Макрос

Dim WordApp As Object

Dim Data As Range, Message As String

Dim Records As Integer, i As Integer

Dim Company As String, Detal As String, FinPrice As String

Dim SaveAsName As String

On Error GoTo ErrorCode

' Создаем объект приложения Word

Set WordApp = VBA.CreateObject("Word.Application")

' Сохраняем информацию с листа

Set Data = Application.ThisWorkbook.Sheets("Журнал учета").Range("A1")

Message = Application.ThisWorkbook.Sheets("Журнал учета").Range("ТекстСообщения")

' Подсчет количества записей на листе Sales

Records = Application.WorksheetFunction.CountA(ThisWorkbook.Sheets("Журнал учета").Range("A:A"))

' Цикл по всем записям на листе Sales

For i = 1 To Records

' Обновление сообщения в строке состояния

Application.StatusBar = "Обрабатывается запись " & i

' Присвоение текущих значений переменным

Company = Data.Cells(i, 5).Value

Detal = Data.Cells(i, 2).Value

FinPrice = Data.Cells(i, 9).Value

' Создание полного имени файла

SaveAsName = Application.DefaultFilePath & "\" & i & ".docx"

' Направление команд в Word

' Изначально код этого фрагмента был получен

' путем записи макроса в Word и затем отредактирован

' с учетом того, что работаем в VBA Excel

' Поскольку используем позднее связывание

' приходится заменять встроенные константы Word

' типа wdAlignParagraphCenter на их значения

With WordApp

.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, "dd/mm/yyyy")

.TypeParagraph

.TypeText Text:="КОМУ:" & vbTab & " Директору " & Company

.TypeParagraph

.TypeText Text:="ОТ КОГО:" & vbTab & Application.UserName

.TypeParagraph

.TypeParagraph

.TypeText Message

.TypeParagraph

.TypeText Text:="Название заказа:" & vbTab & Detal

.TypeParagraph

.TypeText Text:="Стоимость:" & vbTab & vbTab & FinPrice

End With

.ActiveDocument.SaveAs Filename:=SaveAsName

End With

Next i

MsgBox "Создано документов Word " & Records & " и сохранено в " & Application.DefaultFilePath

' Сброс сообщения в строке состояния

Application.StatusBar = ""

' Закрываем приложение Word

WordApp.Quit

' Удаляем объект

Set WordApp = Nothing

' Открытие папки

VBA.Shell "explorer.exe " & Application.DefaultFilePath, vbNormalFocus

Exit Sub

ErrorCode:

MsgBox "Что-то пошло не так..." & vbNewLine & Err.Description

' Проверяем, было ли создан объект WordApp

If Not WordApp Is Nothing Then

' Закрываем приложение Word (его не видно, но оно открыто)

' Для проверки можно сделать его видимым

WordApp.Visible = True

MsgBox "Приложение Word действительно запущено"

' У метода Quit Word есть 3 необязательных параметра.

' Задаем один из них: не сохранять изменения.

' Константы Word использовать не можем,

' поэтому значение 0, а не wdDoNotSaveChanges

WordApp.Quit SaveChanges:=0

' Удаляем объект

Set WordApp = Nothing

End If

End Sub

Далее, выполняется макрос и появляется следующее сообщение от Excel.

Рисунок 8 – Сообщение о создании документов

В сообщении указан путь, где появились письма для отправки. На рис.9 показан пример одного из такого письма.

Рисунок 9 – Пример письма

Все готово, макрос назначается на кнопку в Журнале учета для дальнейшего использования.

Затем я начал работу с различными текстовыми файлами и импортом их в Excel.

Импорт каждого файла я делал с записью макросов. В качестве примера я использовал журнал учета, использованный на рисунке 1.

После я начал работу с текстовым файлом формата prn. Особенность данного файла в том, чтобы каждая запись между столбцами была на равном расстоянии друг от друга. Следовательно, во время импортирования таких данных мы выбираем в формате данных 30 «фиксированной ширины» (рис. 10). Сразу после происходит редактирование ширины столбцов.

Рисунок 10 – Указание формата данных для импорта файла prn

Затем я редактирую типы данных в столбцах (рис. 11). Заголовки немного съехали, но можно поправить.

Рисунок 11 – Указание формата данных столбцов

Получившаяся таблица после импорта данных показана на рисунке 12. Названия заголовком съехали, но целостность данных таблицы сохранены.

Рисунок 12 – Итог импорта данных

Рисунок 13 – Код макроса для открытия файла PRN

Затем, я начал работу с открытием файла формата txt. Важно то, что разделителем являются знаки табуляции в данном случае.

Рисунок 14 – Выбор символов разделителей для данных формата txt

Выполняем указание формата данных столбцов (рис. 14) и завершаем импортирование. Результат данного импорта почти ничем не отличается от предыдущего, но результат также можно посмотреть на рисунке 15.

Рисунок 15 – Итог импорта данных txt

Рисунок 16 – Код макроса для открытия файла txt

Последним я импортировал файл формата cvs. Особенность данного файла в том, что разделителем является запятая, реже точка с запятой.

Выбираем формат данных «с разделителями» (рис. 17) и указываем символ-разделителем запятую и знак табуляции (рис. 18).

Рисунок 17 – Выбор формата данных файла cvs

в

Рисунок 18 – Выбор символов-разделителей для данных формата cvs

Рисунок 19 – Итог импорта данных cvs

Рисунок 20 – Код макроса импорта данных cvs

Вывод:

В результате проведенной работы, я научился использовать различные данные в некоторых средах. Так, я научился экспортировать данные из Excel в Word, получая автоматические письма для печати. Также, я научился импортировать данные из текстовых файлов разных форматов (prn, txt, CVS), в Excel. Импорт данных в Excel важная функция, так как имеется огромное количество устройств, которые физически не могут экспортировать данные напрямую в Excel, а могут сохранить их в текстовом формате. Excel позволяет легко импортировать данные, и сразу их редактировать, и использовать. Во время проведения работы я столкнулся с проблемой неправильного распределения данных по столбцам при открытии файлов, так как неправильно был записан файл изначально из-за чего приходилось вручную редактировать файл так, чтобы он подходил под условия задачи.

Список использованных ресурсов:

1) https://pro.guap.ru/get-task/1634e9b492a7ca55e00669ede5b87ee4

Соседние файлы в папке лаб6