Microsoft Office – одна из самых популярных программных систем, используемых во всем мире.
Трудно найти компьютер, на котором не был бы установлен текстовый редактор Word. Представляя собой систему приложений, тесно связанных друг с другом, MS Office открывает перед своими пользователями самый широкий спектр возможностей.
Мощнейшим средством создания приложений в MS Office стал язык Visual Basic for Application (VBA). Он пришел на смену языкам макропрограммирования, которые обычно включались в приложения.
Определение 2
VBA — высокоэффективное средство разработки приложений, поскольку принадлежит к объектно-ориентированным языкам программирования и обладает простотой макроязыков. Начинающие программировать в офисных пакетах пользователи могут записать свои действия с помощью макрорекордера и создавать макросы без изучения особенностей языка. Такая запись действий, а затем просмотр записанного кода являются простейшим способом для самостоятельного изучения VBA.
Как установить Microsoft Office Word по умолчанию в Windows 10
Сдай на права пока
учишься в ВУЗе
Вся теория в удобном приложении. Выбери инструктора и начни заниматься!
Замечание 1
Сейчас с помощью VBA можно легко и быстро создавать различные приложения, используя единую для всех офисных программ среду и язык. Разработчикам приложений очень пригодятся дополнительные возможности и средства VBA для управления пользовательским интерфейсом, оперирования событиями, обработки ошибок и другие средства, которые позволят создавать эффективные приложения с дружеским интерфейсом.
Остановимся на вопросах разработки VBA-приложений для MS Word. С помощью VBA вы можете автоматизировать любые операции, выполняемые в Word интерактивно (то есть вручную): создание документов, добавление в них текста или других графических элементов, форматирование, редактирование, сохранение и т.д. VBA выполнит все эти операции быстрее, точнее и с меньшими затратами, чем человек.
В MS Word создается много документов типа справка, расписка, докладная записка и так далее. Эти документы имеют постоянную и переменную части. Создание таких документов можно упростить, используя язык программирования VBA.
«Создание приложений на языке VBA для MS WORD»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы
Создание текстового документа
Рассмотрим пример создания справки в MS Word 2007.
Замечание 2
В случае отсутствия на ленте вкладки Разработчик создайте её с помощью команды — Параметры Word-Личная настройка. В группе Основные параметры работы с Word установите флажок в пункте Показать вкладку Разработчик на ленте.
Создать макрос1 с помощью макрорекордера. Макрос1 создает текст документа «СПРАВКА»:
Проверить работу макроса запустив его на исполнение командой: Разработчик, Макросы, Макрос1, Выполнить.
Как сделать буклет в Microsoft Word | How to make a booklet in Microsoft Word
Создадим Макрос2 с помощью макрорекордера. Макрос2 выполняет очистку содержимого документа (Выделить все $$, клавиша Delete).
Для этого необходимо:
- выбрать пункт меню Параметры Word-Настройка;
- в окне Настройка панели быстрого доступа и сочетаний клавиш на вкладке Выбрать команду из выбрать пункт Макросы, а на вкладке Настройка панели быстрого доступа выбрать пункт Для Spravka;
- в том же диалоговом окне команд Макросы выделить команду Макрос1 и добавить в панель быстрого доступа для документа Spravka. Аналогично добавить команду Макрос2;
- изменить надпись или значок на кнопке, назначенной макросу Изменить…, изменить кнопку и отображаемое имя (например, Справка), выбрать новый значок для кнопки, несколько изменить его и назначить макрос (Макрос1) этой кнопке;
- аналогично изменить надпись и кнопку для вызова еще одного макроса (Макрос2), например Очистка документа.
Выполнить макросы, используя кнопки панели быстрого доступа для Spravka.
Для выхода из Word выберите из меню Выход из Word.
Использование VBA при решении задач в Word
VBA поддерживает набор объектов, соответствующих элементам Word. Используя свойства и методы этих объектов можно автоматизировать все операции в Word. Однако целесообразно автоматизировать выполнение тех операций, для реализации которых нет стандартных средств в Word или их выполнение стандартными средствами является трудоемкой или рутинной работой. Рассмотрим наиболее важные объекты.
Объект Document представляет собой новый или созданный ранее открытый документ.
Основными свойствами объекта Document являются:
- Count — количество открытых в данный момент документов;
- ActiveDocument — активный документ.
Некоторые методы объекта Document и коллекции Documents:
- Open — открывает файл, содержащий существующий документ и автоматически добавляет его в коллекцию;
- Add — добавляет новый пустой документ;
- Save — сохраняет изменения в существующем документе без закрытия;
- Save As (только для объекта) — сохраняет активный вновь созданный документ в текущей папке;
- Item — позволяет получить доступ к элементу коллекции;
- Activate (только для объекта) — активизирует открытый документ;
- PrintOut (только для объекта) — печать документа;
- Close — закрывает документ.
Объекты Character (символ), Word (слово), Sentence (предложение), Paragraph (абзац), Section (раздел документа) задают структуризацию текста документа.
Все эти объекты имеют свойства:
- Count — свойство возвращает количество элементов в коллекции;
- First — свойство возвращает объект, являющийся первым элементом коллекции;
- Last — свойство возвращает объект, являющийся последним элементом.
Коллекции Characters, Words, Sentences имеют единственный метод Item(Index).
Коллекция Paragraphs имеет все вышеперечисленные для данной группы коллекций свойства и множество свойств, значения которых определяют формат абзаца.
Формат абзаца может быть определен и с помощью методов. Приведем некоторые методы коллекции Paragraphs:
- Item — определяет элемент коллекции;
- Add — добавляет новый пустой абзац (параметр метода указывает точку вставки, задается объектом Range);
- InsertParagraph, InsertParagraphAfter, InsertParagraphBefore — осуществляют вставку пустого абзаца вместо текста или после, или перед текстом, задаваемым объектом Selection или Range;
- Reset — удаляет форматирование, сделанное вручную, применяя к абзацу формат, заданный стилем абзаца;
- Indent, Outdent — увеличивают, уменьшают отступ абзаца от края листа;
- TabHangingIndent(Count), TabIndent(Count) — увеличивают (Count>0), уменьшают (Count
- Space1, Space2, Space15 — устанавливают межстрочный интервал (одинарный, двойной, полуторный).
Объекты Range (диапазон) и Selection (выделение) представляют части документа.
Определение 3
Объект Range позволяет задать произвольный диапазон, представляющий собой последовательность индексированных элементов и может быть получен через метод Range или свойство Range других объектов.
Свойствами объекта Range являются:
- Start — начальная символьная позиция диапазона;
- End — конечная символьная позиция диапазона;
- Text — позволяет получить или изменить содержимое объекта.
Определение 4
Объект Selection задает выделенную в документе область (фрагмент). Выделенный в документе фрагмент задает непрерывную область элементов, но не является диапазоном, заданным своим началом и концом. Выделить можно только один фрагмент, поэтому один объект Selection может быть активен в данный момент времени, он может быть получен с помощью свойства Selection или метода Select других объектов.
Ниже приведены некоторые методы присущие объектам Selection и Range:
- Move — метод перемещения точки вставки;
- MoveStart, MoveEND — методы изменения значения свойств Start и End;
- Collapse — сворачивает диапазон к его началу или концу;
- Next — метод получения ссылки на очередной элемент коллекции объектов в диапазоне или выделенном фрагменте;
- Delete — удаляет текст, входящий в диапазон;
- InsertAfter , InsertBefore вставляет текст до или после текста, входящего в диапазон.
- Copy — копирует объект в буфер обмена;
- Cut — перемещает объект в буфер обмена;
- Paste — позволяет поместить содержимое буфера в область, заданную объектом Range или Selection.
Источник: spravochnick.ru
8. Создание приложений для ms word
Структура проекта Word в целом похожа на структуру проекта Excel. Непосредственно после создания пустого документа проект содержит два объекта: объект Document, представляющий собственно документ, и ссылку на шаблон Normal. В дальнейшем в проект, как обычно, могут быть добавлены другие модули и формы.
8.2. ОбъектApplication
Представляет собой собственно приложение Word. Структура его во многом повторяет структуру приложения Excel, особенности связаны с такими возможностями Word, как проверка орфографии, возможности автозамены и т.п., которыми удобнее пользоваться при помощи пользовательского интерфейса.
8.3. Работа с документами
Подобно приложению Excel, для работы с документами объектная модель Word предусматривает коллекцию Documents, содержащую объекты Document, представляющие собой любой открытый документ Word.
Рассмотрим методы коллекции Documents.
Метод Add(Template, NewTemplate) используется для добавления нового пустого документа к коллекции открытых документов. Template определяет имя шаблона, используемого для создаваемого документа, а при присвоении параметру NewTemplate значения True создается не обычный документ, а шаблон.
Метод Close (SaveChanges, OriginalFormat) закрывает один или несколько документов. При присвоении параметру SaveChanges значений wdDoNotSaveChanges, wdPromptSaveChanges или wdSaveChanges документ будет либо не сохранен, либо будет выдан запрос на сохранение, либо документ будет сохранен. Значение параметра OriginalFormat определяет формат сохраняемого документа.
Метод Open(FileName) имеет множество параметров. Первый из них (FileName) определяет полный путь и имя открываемого документа. Допускается открытие сразу нескольких документов, при этом их имена должны быть введены через пробел.
Метод Save позволяет сохранить все документы, являющиеся элементами коллекции.
К отдельному открытому документу можно получить доступ, например, через коллекцию Documents. Рассмотрим свойства и методы объекта Document приведены в табл. 13.
Свойства и методы объекта Document
Определяет, была ли запущена проверка орфографии для данного документа
Возвращает коллекциюProofreadingErrors, которая включает предложения, содержащие грамматические ошибки
Определяет имя файла на диске, в котором хранится документ. Атрибут только для чтения
Возвращает коллекцию, содержащую все абзацы в заданном документе, диапазоне или выделении
True, если документ открыт только для чтения
Если файл был сохранен, то имеет значение True
В значении Trueустанавливает режим подчеркивания слов с грамматическими ошибками
Задает режим подчеркивания во время ввода текста в документ
Возвращает коллекцию, содержащую все стили в заданном документе
Возвращает коллекцию, содержащую все таблицы в заданном документе, диапазоне или выделении
Возвращает коллекцию, содержащую все оглавления в заданном документе
Возвращает тип документа: обычный документ (wdTypeDocument) или шаблон (wdTypeTemplate)
Возвращает коллекцию, содержащую все окна в заданном документе
При активации этого метода в случае обнаружения ошибок он выводит окно диалога Правописание
Переключает Wordв режим предварительного просмотра документа
Range (Start, End)
Возвращает объект Range, который определяется позициями двух символов фрагмента текста: начального и конечного. ЭлементыStartиEndимеют типLongи задают позицию первого и последнего символа в диапазоне
Отменят последнее из отмененных до этого действий или целую последовательность действий. Timesопределяет количество отменяемых действий
Сохраняет документ. Не имеет параметров
Позволяет выполнить действия, аналогичные команде Файл|Сохранить как
Отменяет последнее выполненное действие или их последовательность
Копирует все стили из присоединенного шаблона в документ
Источник: studfile.net
Как сделать программу для заполнения данных в Word?
Просьба помочь в решении вопроса по созданию программы, задача которой заполнение двух-трех разных типов анкет —> генерация сформированного файла в формате Word или PDF —> Отправка файла на определенный почтовый адрес.
- — анкета для абитуриента
- — анкета для студента
- — анкета для преподавателя
- — ФИО
- — Факультет (должность)
- — Номер телефона
Ранее просмотрел вариант с Windows Forms и C++, но что то не то. Других дельных описаний в сети не нашел. Буду признателен в помощи, правильном направлении в решении данной задачи. Может у кого имеется нечто подобное.
- Вопрос задан более трёх лет назад
- 1992 просмотра
10 комментариев
Простой 10 комментариев
Это все из коробки умеет офис. Нужно только «пару кликов мышкой» и немного терпения при работе с ихним бейсиком.
UPD:
https://support.office.com/ru-ru/article/Часто-зад.
Хм, насколько понимаю вам главное чтобы работало на Windows или обязательно WinForms решение?
Foggy Finder, Нет условий совершенно нет! Просто дали задачу сделать такую форму, любым способом — главное чтобы работало.
Спасибо, за дельные советы касательно Microsoft Forms и форм в Adobe. Но с каким вариантом проще будет чайнику? Сдаваться нужно до праздников. В каком из способов можно прикрепить две разные формы?
LuckyRuS, Поля ввода для каждого типа (абитуриент, студент, преподаватель) как и шаблоны pdf-файла свои?
Foggy Finder, поля такие же ФИО номер телефона и тд. Просто для абитуриента будет еще доп. поле, например, дополнительные факультеты. Да и это не важно, так как даже 3 одинаковые по начинке формы связать в одной программе не могу!
LuckyRuS, шаблон pdf/word готовый или его нужно/можно составлять программно?
поля такие же ФИО номер телефона и тд. Просто для абитуриента будет еще доп. поле, например, дополнительные факультеты.
я спрашиваю так как хотел бы попробовать написать пример (в последний раз Word шаблон программно составлял довольно давно) для PDF формата и чем точнее будет описан вопрос тем лучше.
Впрочем, если такая возможность есть в стандартном офисе, то, это, вероятно, самый простой способ.
Foggy Finder, к сожалению подобного в офисе не нашел. Есть три готовых шаблона Ворд (можно и пдф, без разницы), каждый из которых для определенного лица (студента, преподавателя и абитуриента). Пусть даже просто голая текстовая оболочка, остальное не принципиально. Главное сам функционал показать. Для одной анкеты это можно сделать вышеописанными средствами.
Но нужна одна программа, которая будет иметь в себе сразу несколько вариантов анкет. Т.е. 1 программа на раб. столе, которая будет актуальна для разных людей. Ведь вопрос от наших педагогов встанет следующий: «А как быть если появится еще несколько видов анкет?». То есть на будущее тоже заглядывают. P.S.
Понять не могу зачем электротехнику программирование? Совсем не в том направлении работаю
В общем несколько 3-4-5 разных бланков анкет, должны быть совмещены в этой программе. Как это делается понять не могу.
LuckyRuS, написал ответ с примером, прошу прощения за грамматические ошибки — спешил. Но, надеюсь, теперь стало немного понятнее от чего отталкиваться.
Решения вопроса 1
Не ясно почему были убрана метка «Программирование» из вопроса. Получается ответ в некотором роде будет оффтопом.
Теперь по существу:
Не знаю если такая возможность в Word, но если есть, то лучше (быстрее) будет воспользоваться именно ей.
Но если нужна именно программа, то я бы начал с составления ТЗ (технического задания), в котором было бы подробное описание требуемого функционала.
Пока описание в вопросе довольно расплывчатое, но вот набросок который на скорую руку написал за пару часов на языке программирования F#:
Примечание: Возможно F# не самый лучший выбор для данной задачи, но так как для своих персональных программ использую его, то и код привожу на нем.
1. Определяются основные объекты (Студент, Преподаватель, Абитуриент) для которых в виде свойств перечисляются характеристики для заполнения:
module Model type Student =
Отдельно, для удобства, представляем наши записи в виде размеченного объединения:
[] type AccountType = | Student of Student | Enrollee of Enrollee | Teacher of Teacher
Создаем модуль Defaults в котором будут находится значения по умолчанию для объектов (будет нужно для отображения):
[] module Defaults = let student:Student =
Следующий шаг — создание или редактирование / заполнение готового Word или Pdf шаблона данными.
Есть несколько вариантов (библиотек) для работы и с тем и с другим форматом. Для Pdf есть очень известная библиотека:
Есть и другие, как например,
Документация в которой оставляет желать лучшего, но по крайней мере понятно что у нее нет проблем с отображением символов кириллицы.
Простейший вывод в виде таблицы может выглядеть так:
[] module PdfReport open Model open PdfSharp.Drawing open SharpLayout let private defaultSettings = PageSettings( TopMargin=Util.Cm(1.2), BottomMargin=Util.Cm(1.0), LeftMargin=Util.Cm(2.0), RightMargin=Util.Cm(1.0)) let private createReportForTeacher teacher = let document = Document() let section = document.Add(Section(defaultSettings)) let font = Font(«Times New Roman», 10.0, XFontStyle.Regular, XPdfFontOptions.UnicodeDefault) |> Option section.Add(Paragraph().Add(«Информация об преподователе», font.Value).Alignment(HorizontalAlign.Center.AsOption().ToNullable())) |> ignore let table = section.AddTable().Font font let c1 = table.AddColumn(Util.Px(600.0)) let c2 = table.AddColumn(Util.Px(600.0)) let r1 = table.AddRow() let r2 = table.AddRow() let r3 = table.AddRow() let r4 = table.AddRow() let r5 = table.AddRow() r1.[c1].Add(Paragraph().Add(«Имя:»)) |> ignore r1.[c2].Add(Paragraph().Add(teacher.Name)) |> ignore r2.[c1].Add(Paragraph().Add(«Фамилия:»)) |> ignore r2.[c2].Add(Paragraph().Add(teacher.LastName)) |> ignore r3.[c1].Add(Paragraph().Add(«Отчество:»)) |> ignore r3.[c2].Add(Paragraph().Add(teacher.Surname)) |> ignore r4.[c1].Add(Paragraph().Add(«Телефон:»)) |> ignore r4.[c2].Add(Paragraph().Add(teacher.Phone)) |> ignore r5.[c1].Add(Paragraph().Add(«Факультет:»)) |> ignore r5.[c2].Add(Paragraph().Add(teacher.Faculty)) |> ignore document
Теперь что касается отображения, мне удобнее использовать WPF, ссылка на руководство и библиотеку
Gjallarhorn.Bindable.
Для каждого типа создаем свой UserControl который будет отвечать за ввод данных.
Каждое отображение определим в виде навигационного состояния:
[] type NavMessages = | Student | Teacher | Enrollee
работу с каждым типом вынесем в отдельные дочерние компоненты (StudentComponent, . ). Для каждого свойства можно определить собственное правило проверки корректности.
let appComp = Component.create [ |> Bind.comp (fun m -> m.Student) studentComp fst |> Bind.comp (fun m -> m.Enrollee) enrolleeComp fst |> Bind.comp (fun m -> m.Teacher) teacherComp fst |> Bind.comp (fun m -> m.Menu) menuComponent fst |> Bind.cmd ]
Команда SendReport будет отвечать за созданием отчета и отправку его на почту. Кнопка будет активна только в том случае, если все поля заполнены без ошибок.
Остается определить функцию обновления модели приложения:
Для работы с почтой вам нужно будет указать данные с которых вы хотите отправлять письмо. Как это сделать написано тут.
Теперь, чтобы добавить новый тип нужно будет сделать следующее:
1. Определить запись для нового объекта, описывающую его свойства.
2. Создать функцию генерирующую отчет для этого типа.
3. Создать компонент.
4. Создать пользовательский элемент управления для отображения.
5. Добавить его в общую модель программы.
В итоге получилось следующее:
Как только отчет был отправлен, запись сбрасывается до значения по умолчанию.
Для демонстрации что формы могут быть произвольными выводил сообщение с короткой информацией данные о ком заполняются в текущий момент.
В данном примере был записан такой pdf:
Весь код не приводил, так как он довольно объемный, если такой вариант интересует, то могу выложить на гитхаб.
Только учтите, что набросок можно сделать за пару часов, а довести до ума будет занимать намного больше времени.
Источник: qna.habr.com