Главная страница

Теоретический материал 4. Автоматизация офиса. Организация совместной


Скачать 2.16 Mb.
НазваниеАвтоматизация офиса. Организация совместной
Дата27.04.2022
Размер2.16 Mb.
Формат файлаpdf
Имя файлаТеоретический материал 4.pdf
ТипДокументы
#501672
страница4 из 4
1   2   3   4
Пример. Копирование материалов нескольких документов в один
Предположим, у вас есть несколько документов, материалы которых вы хотели бы скопировать в новый документ. Ядром этой задачи можно сделать описанную выше программу для конверсии файлов. Но здесь мы поступим по-другому. Предположим, что вы открыли все эти файлы и хотите быстро сбросить их содержимое в новый файл.
Для решения этой задачи напишем макрос, который должен храниться в глобальном шаблоне. При запуске макроса будет создаваться новый документ, в который будут скопированы материалы всех остальных открытых документов. Эту операцию можно реализовать множеством способов, мы избрали копирование материалов через буфер обмена Windows
Здесь мы создаем новый документ, в который копируем содержимое остальных открытых документов. Цикл обхода всех объектов коллекции
Documents, то есть открытых документов, позволяет получить доступ к каждому открытому документу. Однако, здесь не обойтись без проверки - мы
должны обработать все открытые документы кроме того, в который копируем данные. Для этого прежде чем начать обработку, сравниваем имя целевого и текущего документа.
Пример. Разбиение одного документа на несколько
Задача, противоположная предыдущей. Один открытый документ нужно разбить на несколько, руководствуясь каким-либо признаком, после чего сохранить все документы, дав им соответствующие имена, в папку, заданную пользователем.
Разобъем активный документ на части, по 10 абзацев каждая, и сохраним каждую из частей в отдельном документеЗдесь мы работаем с исходным документом, поабзацно копируя его содержимое в новый документ. В программе использована пара переменных-счетчиков. Одна служит для подсчета количества обработанных абзацев - она используется как индикатор для сохранения или создания очередного файла, а вторая выступает счетчиком номеров созданных файлов и участвует в создании имени файла
Особенности программирования для MS Excel
Microsoft Office Excel - это популярные электронные таблицы. Обычно, программируя для этой программы, преследуют такие цели:
Автоматизация вычислений.
Автоматизация ввода и обработки информации.
Работа с базами данных - вывод, ввод, анализ, визуализация информации.
Анализ финансовой и другой информации.
Создание систем для организации автоматизированного ввода данных
Математическое моделирование.
В общем виде программирование в Excel похоже на работу с Microsoft
Word. Однако одно из главных отличий заключается в том, что в Excel рабочая область листа разбита на ячейки, каждая из которых имеет собственное имя. Имена ячеек могут быть двух видов.
Первый вид (стиль A1) - это имя, состоящее из буквенного имени столбца и номера строки. Например, A1 - ячейка, находящаяся на пересечении столбца А (первого) и первой строки.
Другой вид - это индексы ячеек (стиль именования R1C1 ). Для адресации ячейки в таком стиле указывают номер строки (R - Row - строка) и номер столбца (C - Column - столбец), на пересечении которых расположена ячейка. Строки изначально пронумерованы, а номера столбцов начинаются с
1 - первому столбцу соответствует столбец A, второму - В и т.д. Например,
(2, 3) - это адрес ячейки, находящийся на пересечении второй строки и третьего столбца, то есть, если переложить это на стиль A1 - получим ячейку
С2Для выполнения большинства операций в MS Excel применяются следующие объекты.
Excel.Application (Приложение) - объект, представляющий приложение
Microsoft Excel, аналогичен Word.Application.

Workbook (Рабочая книга) - представляет рабочую книгу - аналог документа Microsoft Word. Однако, в Word мы работаем с данными, расположенными в документе, а в Excel на пути к данным есть еще один объект - рабочий лист.
Worksheet (Рабочий лист) - книга в MS Excel разбита на рабочие листы.
Именно на листе расположены ячейки, которые могут хранить информацию и формулы.
Range (Диапазон) - может быть представлен в виде одной ячейки или группы ячеек. Этот объект заменяет множество объектов для работы с элементами документов ( character, word и т.д.), которые применяются в
Microsoft Word. В результате работа с листом становится очень четкой и удобной - чтобы работать с какой-либо ячейкой, надо знать лишь ее имя (в формате A1) или адрес ( R1C1 ).
QueryTable (Таблица запросов) - этот объект используют для импорта в
Microsoft Excel информации из баз данных. Подключение к базе данных, запрос информации и т.д. производятся средствами объекта, а итоги запроса выгружаются на лист MS Excel в виде обычной таблицы.
PivotTable (Сводная таблица) - это особый вид электронной таблицы
Excel - она позволяет в интерактивном режиме обобщать и анализировать большие объемы информации, в частности, взятой из базы данных.
Chart (Диаграмма) - представляет собой диаграмму. Обычно их используют для визуализации данных. Работа с MS Excel из MS Word и наоборотДавайте рассмотрим взаимодействие различных приложений друг с другом. Сначала, мы займемся переносом данных из книги Microsoft Excel в документ Microsoft Word, затем - переносом данных в обратном направлении и использованием ресурсов Excel для проведения расчетов.
Напомню, что для такого взаимодействия нам понадобится подключить соответствующую объектную модель в редакторе VBA с помощью средства
Tools o References.
Работа с MS Excel из MS Word и наоборот
Напишем макрос в MS Excel, который копирует содержимое выделенного диапазона в Microsoft Word, причем каждая строка диапазона собирается в одну текстовую строку, части которой, представляющие собой содержимое отдельных ячеек, разделяются запятыми и пробелами, а отдельные текстовые строки разделяются знаками перевода строки. Перед данными из таблицы выводится строка, содержащая информацию об имени книги и имени листа, откуда взята информация 'Переменная для хранения ссылки 'на экземпляр MS Word
Dim obj_Word As Word.Application
'Для хранения ссылки на документ 'MS Word
Dim obj_WDoc As Word.Document
'Для хранения ссылки на лист 'книги Excel
Dim obj_ESheet As Worksheet

'Для хранения ссылки на 'выделеный диапазон
Dim obj_Range As Range
'Для хранения ссылки на 'книгу MS Excel
Dim obj_Excel As Workbook
'Для строки формирования вывода
Dim str_Str As String
'Записываем в переменные 'ссылки на соответствующие им 'объекты
Set obj_Range = Selection
Set obj_ESheet = ActiveSheet
Set obj_Excel = ActiveWorkbook
'Запускаем экземпляр MS Word
Set obj_Word = New Word.Application
'Делаем его видимым obj_Word.Visible = True
'Создаем новый документ
Set obj_WDoc = obj_Word.Documents.Add
'Активируем документ obj_WDoc.Activate
'Собираем строку для вывода информации 'об имени книги и листа str_Str = "Скопировано из книги " + _ obj_Excel.Name + ", с листа " + _ obj_ESheet.Name
'Выводим строку в документ obj_Word.Selection.TypeText (str_Str) obj_Word.Selection.TypeParagraph
'Очищаем строку str_Str = ""
'Цикл для построчного прохода 'выделенного диапазона и сбора 'строк для вывода
For i = 1 To obj_Range.Rows.Count
For j = 1 To obj_Range.Columns.Count str_Str = str_Str & obj_Range.Cells(i, j) & ", "
Next j
'Удаляем из строки последних 2 символа str_Str = Mid(str_Str, 1, Len(str_Str) - 2)
'Активируем документ Word obj_WDoc.Activate
'Выводим текст и очищаем переменную obj_Word.Selection.TypeText (str_Str) obj_Word.Selection.TypeParagraph str_Str = ""
Next i
Теперь напишем макрос в MS Word, выполняющий заявленные выше функции. Мы перенесем на лист MS Excel выделенный текст, разбив его на слова, после чего вычислим сумму нескольких чисел, используя ресурсы MS
Excel. При этом слова будут скопированы каждое в отдельную ячейку, а весь
этот материал будет размещен в таблице шириной 10 ячеек и высотой, которая зависит от количества слов в выделенном тексте 'Объектные переменные для MS Excel
Dim obj_Excel As Excel.Application
'Для книги
Dim obj_Workbook As Excel.Workbook
'Для листа
Dim obj_Worksheet As Excel.Worksheet
'Для текста в MS Word
Dim obj_Range As Word.Range
'Для цикла, выгружающего слова на 'лист
Dim num_Counter
'Для подсчета номера очередного слова
Dim num_Words
'Присваиваем переменной ссылку 'на выделенную область
Set obj_Range = Selection.Range
'Запустим MS Excel
Set obj_Excel = New Excel.Application
'Добавим в Excel новую книгу
Set obj_Workbook = obj_Excel.Workbooks.Add
'Присвоим переменной ссылку на первый лист книги
Set obj_Worksheet = obj_Workbook.Worksheets(1)
'Вычислим результат от деления количества слов 'нацело - то есть - сколько полных строк 'по 10 слов удастся выделить из нашего текста num_Counter = obj_Range.Words.Count \ 10
'Цикл выгрузки
For i = 1 To num_Counter
For j = 1 To 10
'Увеличиваем на 1 номер 'выводимого слова num_Words = num_Words + 1
'выводим это слово на лист obj_Worksheet.Cells(i, j) = _ obj_Range.Words.Item(num_Words)
Next j
Next i
'Помимо полных строк по 10 слов 'может оказаться так, что некоторые 'слова образуют неполную строку 'вычислим ее длину num_Counter = obj_Range.Words.Count - _
(obj_Range.Words.Count \ 10) * 10
'Цикл выгрузки последних слов
For j = 1 To num_Counter num_Words = num_Words + 1 obj_Worksheet.Cells(i, j) = _ obj_Range.Words.Item(num_Words)
Next j
'Настроим ширину столбцов, содержащих 'выгруженные слова
obj_Worksheet.Columns("A:J").AutoFit
'Теперь - вычисления
MsgBox ("Сумма чисел 1,2,3,4 равна " & _ obj_Excel.WorksheetFunction.Sum(1, 2, 3, 4))
MsgBox ("Данные выгружены в книгу " + _ obj_Workbook.Name)
'В конце работы отобразим 'MS Excel, до этого скрытый obj_Excel.Visible = True
Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощённая реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac
OS), а также во многие другие программные пакеты, такие как AutoCAD,
SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS.
1   2   3   4


написать администратору сайта