Создать классы наследники для документов ms word pdf ms excel txt html

0 / 0 / 0

Регистрация: 01.12.2021

Сообщений: 9

1

Создать класс для хранения информации об электронном документе и классы-наследники

14.11.2022, 11:12. Показов 249. Ответов 1


Студворк — интернет-сервис помощи студентам

Задали задание, но при этом ничего не объяснили, вот само задание, буду очень благодарен, кто сделает.

ООП на С#

Создать класс для хранения информации об электронном документе (имя, автор, ключевые слова, тематика, путь к файлу).
Создать классы-наследники для документов MS Word, PDF, MS Excel, TXT, HTML.
Переопределить методы получения информации о документе.
Создать консольное приложение, использующее класс на основе паттерна Singleton, реализующий меню для вывода информации о документе.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.11.2022, 11:12

Ответы с готовыми решениями:

Создать класс для хранения информации об электронном документе и классы-наследники
Задали задание, но при этом ничего не объяснили, вот само задание, буду очень благодарен, кто…

Создать класс для хранения информации об электронном документе
Создать класс для хранения информации об электронном документе (имя, автор, ключевые слова,…

Создать класс Robot и классы-наследники от него
Создать класс Robot от которого следует унаследовать CoffeRobot, RobotDancer, RobotCoocker. В Robot…

Создать класс «Дичь» для хранения информации о размере добычи
напишите кто может, пожалуйста
Создать класс «Дичь» для хранения информации о размере добычи….

1

iLinks

515 / 340 / 197

Регистрация: 03.01.2017

Сообщений: 938

14.11.2022, 16:21

2

Как вариант части реализации

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        public abstract class ElDoc
        {
            public string Name { get; set; }
            public string Authors { get; set; }
            public string Keywords { get; set; }
            public string Theme { get; set; }
            public string PathToFile { get; set; }
            private List<NameValue> NameValues { get; set; } = new List<NameValue>();
            protected virtual void GetInformatioin()
            {
                var shellAppType = Type.GetTypeFromProgID("Shell.Application");
                dynamic shell = Activator.CreateInstance(shellAppType);
                var folder = shell.NameSpace(Path.GetDirectoryName(PathToFile));
                var namesDict = Enumerable.Range(0, short.MaxValue)
                    .Select(r => new { idx = r, key = folder.GetDetailsOf(null, r) })
                    .Where(r => !string.IsNullOrEmpty(r.key))
                    .ToDictionary(p => p.idx, p => p.key);
                NameValues = namesDict.OrderBy(d => d.Key)
                    .Select(d => new NameValue { Name = namesDict[d.Key], Value = (string)folder.GetDetailsOf(folder.ParseName(Path.GetFileName(PathToFile)), d.Key) })
                    .Where(d => !string.IsNullOrEmpty(d.Value)).ToList();
                Name = GetValueByName("Имя");
                Authors = GetValueByName("Авторы");
                Keywords = GetValueByName("Теги");
                Theme = GetValueByName("Тема");
            }
            protected string GetValueByName(string name) => NameValues.Where(n => n.Name.Equals(name)).Select(n => n.Value).FirstOrDefault();
            public class NameValue
            {
                public string Name { get; set; }
                public string Value { get; set; }
            }
        }
        public class MSWord : ElDoc
        {
            //Тут можно объявить уникальные свойства для определенного типа например
            public string NumberOfPages { get; set; }
            public new void GetInformatioin()
            {
                base.GetInformatioin();
                NumberOfPages = base.GetValueByName("Число страниц");
            }
        }



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

14.11.2022, 16:21

Помогаю со студенческими работами здесь

Создать класс который может быть использован для хранения информации и студентах
создать класс который может быть использован для хранения информации и студентах

Программа, работа с классами. Создать класс TMan для хранения информации о человеке с полями: имя, возраст, пол
Создать класс TMan для хранения информации о человеке с полями: имя, возраст,
пол. Реализовать…

Написать абстрактный класс и классы-наследники
Имеется набор формул, которые необходимо рассчитать. Результатом формул являются либо числа типа…

Создать класс HomeLibary. Предусмотреть возможность хранения о книгах следующей информации:
Создать класс HomeLibrary (Домашняя библиотека). Предусмотреть возможность хранения о книгах…

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад
Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения…

Класс для хранения персональной информации
Из 5 пунктов должна получится программа. (можно с#)

1. Объявите класс CPerson, используемый…

Базовый класс с виртуальными методами и классы наследники. Динамическое приведение типов
Доброго времени суток. Помогите указать на ошибки и, по возможности, исправить) Необходимо создать…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

2

Выполнив задания
этой темы, вы научитесь:

  • Технологии создания интегрированного документа;
  • Присваивать тип к используемым данным;
  • Использовать технологию OLE.

Краткие теоретические сведения

Текстовый редактор – это программа, которая
позволяет создавать, редактировать, форматиро­вать, сохранять и печатать
документы.

Графический редактор – это программа,
предназначенная для создания, редактирования и про­смотра графических
изображений.

Электронная таблица – это программа для
обработки и хранения числовых данных, которая работает в режиме диалога с
пользователем.

Система управления базами данных (СУБД) –
программа, которая позволяет создавать базы данных и обеспечивает обработку,
сортировку и поиск данных.

Основное назначение технологии OLE (Object Linking and Embedding)
– создание связи между разнотипными объектами
Windows.

Практические
задания

Задание 1. Набрать по образцу следующий текст в MS WORD и
сохранить под именем Статистика на рабочем столе в папке под своей
фамилией и группой. Начертания шрифтов определить самостоятельно:

Крупнейшие нефтяные компании России

В России добычу нефти осуществляют 9 крупных
вертикально-интегрированных нефтяных компании (ВИНК). А также около 150 малых и
средних добывающих компаний. На долю ВИНК приходится порядка 90% всей
добычи нефти
. Примерно 2,5% нефти добывает крупнейшая российская
газодобывающая компания Газпром. И остальное добывают независимые
добывающие предприятия.

Вертикальная интеграция в нефтяном бизнесе — это
объединение различных звеньев технологической цепочки добычи и переработки
углеводородов («от скважины до бензоколонки»):

ü разведка запасов нефти, бурение и обустройство
месторождений;

ü добыча нефти и ее транспортировка;

ü переработка нефти и транспортировка
нефтепродуктов;

ü сбыт (маркетинг) нефтепродуктов.

Вертикальная
интеграция позволяет достичь следующих конкурентных преимуществ:

ü обеспечение гарантированных условий поставок
сырья и сбыта продукции

ü снижение рисков, связанных с изменениями
рыночной конъюнктуры

ü снижение затрат на выпуск единицы продукции

Лидерами нефтяной отрасли в России по добыче нефти являются Роснефть и Лукойл.

Задание 2. Построить в MS Excel следующую таблицу и сохранить под
именем Добыча нефти на рабочем столе в папке под своей фамилией и
группой: 

Добыча нефти и газового конденсата
крупнейшими нефтяными компаниями России, млн. тонн

Компания

2008 г.

2009г.

2010г.

2011г.

Роснефть

106,1

108,9

115,8

122,6

Лукойл

95,2

97,6

95,9

96,0

ТНК-ВР

68,8

70,2

71,7

71,3

Сургутнефтегаз

61,7

59,6

59,5

60,8

Газпромнефть

30,7

29,9

29,8

35,3

Татнефть

26,1

26,1

26,1

26,1

Славнефть

19,6

18,9

18,4

18,1

Башнефть

11,7

12,2

14,1

15,1

Русснефть

14,2

12,7

13,0

13,6

1)  
Используя
мастер функции н
айти по годам: максимальное,
минимальное, среднее, суммарное значения Добычи нефти.

2)  
Построить линейчатую диаграмму,
отображающую изменение добычи нефти.

Задание 3. Построить в MS Visio крестовую схему фонтанной арматуры АФК3 – 6521 и сохранить под именем Схема фонтанной арматуры на
рабочем столе в папке под своей фамилией и группой.

где 1 – крестовина
колонной головки; 2 – трубная головка; 3 – тройник; 4 – задвижка; 5 – манометр;
6 –дроссельное устройство.

Задание 4. Создать БД в MS Aссеss,
состоящую из одной таблицы с помощью мастера таблиц с полями: Код мастера,
Фамилия, Имя, Отчество, Номер бригады. Типы полей, количество записей в таблице
определите самостоятельно. Сохранить под именем База данных.

Задание 5. В документ Статистика вставьте внедренный
объект из приложений
MS Visio, MS Excel, MS Access:

ü
меню Вставка ® Объект ®вкладка
Создание из файла
® поставьте флажок Связь с файлом.

ü
с помощью кнопки Обзор
выбрать один из созданных вами файлов и нажать ОК.

ü
другие созданные вами
файлы внедрить аналогично.

ü
сохранить и закрыть файл Статистика.

Задание 6. Откройте выполненный в MS Visio файл Схема фонтанной арматуры и выполните следующие изменения: удалите две детали схемы. Сохранить под тем же
именем.

Задание 7. Откройте выполненный  в  MS Excel
файл Добыча нефти
и
выполните следующие изменения

удалить строку «Татнефть». Сохранить под тем же именем.

Задание 8. Откройте файл Статистика. Какие изменения вы видите?

Отчет

1.       
Результаты выполнения
сдать с экрана.

2.       
Ответить на вопросы:

а.       
Что происходит в
процессе редактирования текста?

б.       
Что происходит в
процессе форматирования текста, графического изображения и электронной таблицы?

в.       
Перечислите типы
данных, используемых в СУБД MS ACCESS.

г.        
Для чего используется
процедура внедрения объектов?

Использованный
материал:
 

1. Статистические
данные по добыче нефти —  http://vseonefti.ru/upstream/.

2. Оборудование
фонтанных скважин —
http://oilgaz.h14.ru/1-2.shtml

Автоматизация Microsoft Word с помощью Visual Basic для создания нового документа

Сводка

В этой статье описывается создание нового документа в Word с помощью автоматизации из Visual Basic.

Пример кода

В примере кода в этой статье показано, как выполнить следующие действия:

  • Вставка абзацев с текстом и форматированием.
  • Просмотр и изменение различных диапазонов в документе.
  • Вставка таблиц, форматирование таблиц и заполнение таблиц данными.
  • Добавление диаграммы.

Чтобы создать новый документ Word с помощью автоматизации из Visual Basic, выполните следующие действия:

В Visual Basic создайте новый стандартный проект EXE. По умолчанию создается форма Form1.

В меню проект выберите пунктссылки, выберите один из следующих параметров и нажмите кнопку ОК:

  • Для Office Word 2007 щелкните объектная Библиотека Microsoft Word 12,0.
  • В Word 2003 щелкните объектная Библиотека Microsoft word 11,0.
  • В Word 2002 щелкните объектная Библиотека Microsoft word 10,0.
  • В Word 2000 щелкните объектная Библиотека Microsoft word 9,0.

Добавление элемента управления CommandButton в форму Form1.

Добавьте следующий код в событие Click для Command1:

Нажмите клавишу F5, чтобы запустить программу, а затем выберите Command1.

После завершения кода проверьте созданный документ. Документ содержит две страницы форматированных абзацев, таблиц и диаграмм.

Использование шаблона

Если вы используете автоматизацию для создания документов, отформатированных в общем формате, можно воспользоваться новым документом, основанным на предварительно отформатированном шаблоне. Использование шаблона с клиентом автоматизации Word имеет два существенных преимущества по сравнению с созданием документа из ничего:

  • Вы можете больше управлять форматированием и размещением объектов в документах.
  • Вы можете создавать документы с меньшим количеством кода.

С помощью шаблона можно выполнить точную настройку размещения таблиц, абзацев и других объектов в документе, а также включить форматирование для этих объектов. С помощью автоматизации можно создать новый документ на основе шаблона, используя следующий код:

В шаблоне можно определить закладки, чтобы клиент автоматизации мог заполнять переменный текст в определенном месте документа, как показано ниже:

Еще одно преимущество использования шаблона состоит в том, что вы можете создавать и сохранять стили форматирования, которые вы хотите применить во время выполнения, следующим образом:

Ссылки

Для получения дополнительных сведений щелкните номера статей, приведенные ниже, чтобы просмотреть статьи базы знаний Майкрософт:

285332 как автоматизировать Word 2002 с помощью Visual Basic для создания слияния почты

(c) корпорация Майкрософт (Microsoft Corporation) 2001, все права защищены. Вклады Лори B. Турнер, корпорация Майкрософт.

10.4.2 Свойства и методы коллекции Documents

Коллекция Word.Documents, методы Add(), Open(), Item(), программное создание и открытие документов Word в VBA

Коллекция Documents, как уже говорилось, представляет все документы Word, открытые в настоящий момент. Начинается нумерация документов в коллекции с 1. Из свойств этой коллекции интерес может представлять только свойство Count — количество открытых документов. Гораздо важнее методы этой коллекции. Про некоторые из них мы уже говорили в предыдущем разделе, но здесь для справки при приведем информацию о них еще раз:

  • Add() — этот метод позволяет создать и сразу же открыть новый документ (и вернуть ссылку на его объект). Это — наиболее распространенный способ создания новых документов в Word. Полный синтаксис этого метода выглядит как

Add(Template, NewTemplate, DocumentType, Visible)

Template — это шаблон для создания нового документа, NewTemplate (true/false ) — делать ли новый документ шаблоном, DocumentType — варианты: wdNewBlankDocument , wdNewEmailMessage, wdNewFrameset или wdNewWebPage (по умолчанию — новый чистый документ ), Visible — будет ли новый документ видимым (по умолчанию ) или невидимым .

  • Open() — этот еще один важнейший метод коллекции Documents позволяет открыть документ с диска и добавить его в коллекцию. Этот метод принимает множество параметров, из которых обязательным является только один — имя документа (вместе с путем к нему). Самый простой вариант применения этого метода выглядит так:

Dim oDoc1 As Document

Set oDoc1 = Documents.Open(«c:doc1.doc»)

  • метод Item() позволяет найти нужный документ в коллекции по его индексу. Но обычно для получения ссылки на нужный документ используется конструкция For..Next с проверкой значения какого-либо свойства документа через If. Чаще всего это свойство — Name:

Dim oDoc1 As Document

For i = 1 To Documents.Count

Set oDoc1 = Documents.Item(i)

If oDoc1.Name = «doc1.doc» Then

Set oDoc1 = Nothing

Эта конструкция возвращает ссылку в виде переменной oDoc1 на документ doc1.doc, если он точно есть в коллекции. Если его нет, то во избежание ошибок нужно реализовывать дополнительные проверки. На практике можно было бы подумать, не нужно ли вам перед сравнением привести имя документа doc1.doc в нижний регистр — если учитывать регистр букв при поиске вам не нужно.

Через свойство Item можно получить доступ к объекту документа напрямую. Например, в этом примере мы получаем имя первого документа в коллекции Documents:

  • методы Save() и Close() — позволяют сохранить и закрыть все документы в коллекции соответственно.
  • методы CanCheckOut() (можно ли «забрать» документ в монопольный доступ) и CheckOut() (забрать документ в монопольный доступ) можно применять, если документ находится в документной библиотеке в базе данных SharePoint Portal Server.

Макрос создания документов Word по данным таблицы Excel

Макрос предназначен для программного создания документов Word на основе шаблона

(без использования функции слияния в Word)

В прикреплённом к статье архиве находятся 2 файла:

  • шаблон договора в формате Microsoft Word (расширение .dot)
  • файл Excel с макросом

Настройки макроса задаются в коде:

Const ИмяФайлаШаблона = «шаблон.dot»
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = «.doc»

При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста («кода поля») из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)

Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)

Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc

PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, — так что код недостаточно универсален.

Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))

Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.

В надстройке — много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.

Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.

Вложение Размер Загрузки Последняя загрузка
CreateWordDocuments2.zip 139.71 КБ 34 5 лет 47 недель назад
  • 160324 просмотра

Комментарии

Спасибо, за макрос, не могли бы подсказать что в нем изменить что бы обрабатывалась только та строка в которой выделенная ячейка?

Спасибо за макрос. Очень помог в работе.

Этот макрос уже не поддерживается.
Используйте новую (расширенную) версию программы, — там все работает без ошибок.

Макрос выдает ошибку (Type mismatch (Error 13)) при обработке ячейки с формулой, подскажите пожалуйста как решить эту проблему?

Здравствуйте. Спасибо вам за этот макрос, который помог мне в работе.
Не могли бы вы еще подсказать как сделать чтоб в шаблон Word прописывались данные из нескольких (разных) строк Excel?
Заранее спасибо.

Подскажите. а можно сделать чтобы макрос обрабатывал только те строки в которых стоит номер договора, а если пусто пропускал?

Ознакомился с программой. Серьезный труд. Снимаю шляпу. Но мне понравился именно этот макрос. С колонтитулами я разобрался — оказалось ничего сложного, да и сам макрос оброс уже кучей доработок. Затянуло, знаете ли ))

Евгений, воспользуйтесь универсальной программой для заполнения документов Word — там реализована подстановка значений в колонтитулы

Добрый день! Макрос очень помог в работе. Доделал его немного под свои нужды: вывод в разные шаблоны документов word при разных значениях в excel. Остался один вопрос — в сам документ word текст вставляется отлично, а вот в колнтитулы — нет 🙁 Подскажите, пожалуйста, как это исправить?

Вова, если нет денег на заказ, есть только 2 варианта:
1) разобраться в этих макросах, и сделать самому (благо, примеров подобных макросов в интернете предостаточно)
2) обратиться за помощью на любой из форумов по Excel (но, опять же, если с вашей стороны никаких наработок нет, вряд ли кто сделает всю работу за вас)

А если в етом макросе сделать так чтоби он заменял дание сначла с строки активной ячейки а потом если одна из ячеек следующей строки = ячейке из предедущей строкии снова вставлял в ворд документ заменяемие поля и снова делел замену, и так до момента когда одна из ячеек не будеть раван ячеике из следуищей, строки тогад макрос по ектому условию не вставляет заменяемие поля а просто сохраняет ворд документ. То есь допустим мне нужно создать документ ворд по одному из людей дание по которому есть в нескольких строках. Пожалста помогите очень нужно, просто нет денег на заказ.

Вова, в этом случае универсальное решение сделать не получится — уж слишком много возможных вариантов расположения данных в Excel, и способов заполнения документов Word.
Оформляйте заказ на сайте — сделаю для вас макрос под ваши требования.

Подскажите пожалуйста, как сделать так, чтобы макрос формировал один документ ворд на основании данных из нескольких строк Excel?

А как реализовать те же возможности, только используя функцию слияния в Word. Чтобы каждый новый раз не формировался новый документ а запись делалась на новой странице?

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

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

Количество файлов-шаблонов (Word, Excel, TXT) неограничено.

Бесплатно скачать и протестировать программу можно по этой ссылке:
http://excelvba.ru/programmes/FillDocuments

Замечательно. Я, долгое время искал нечто подобное. Но к счасливой случайности вышел на Ваш сайт. Установил панели для VBA. И ещё коу-что. Практически разобрался в работе данного макроса. В VBA я, недавно. Но поставил перед собой задачу изучить его. Для этого я, решил составить программу для заполнения бланков аттестатов о среднем образовании и бланков дипломов об окончании ПТУ. До этого они заполнялись вручную. Задачу в Excel, я, программно решил, не безВашего в ней участия, некоторые фрагменты кода. У меня база заполняется посредством форм в виде развёрнутого аттестата. А, вот транспортировка данных в Word с листов — разворот и последняя страница. Как-то чуть-чуть не вяжется с общим видом программы. Нельзя-ли макрос транспортировки «засунуть» под форму? Если можно, то не смогли бы Вы посоветовать мне как это сделать. Делаю эту программу потому, что на Украине все мучаются с авторизованым заполнением бланков об окончании учебных заведений. А, так я бы мог бесплатно, это моё безусловное кредо, предоставить программу желающим. Заранее Вам благодарен. Помогая мне Вы помогаете и до того замордованым классным руководителям школ Украины.

можно ли по каждой записи сформировать 2 документа word?

Создание документа Word из Excel

Visual Basic

при этом создаёт таблицу

если создаю документ при помощи

Visual Basic
Visual Basic
Visual Basic
Visual Basic
30.12.2012, 18:13

Создание документа Word по шаблону из Excel
Пытаюсь создать документ Word из шаблона. Необходимо в шаблон добавить текст. Добавляю но шаблон.

Создание документа Word из таблицы Excel
Доброе время суток! Не отправляйте, пожалуйста, в поиск, прочитав название темы. В тексте я.

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании.

Сохранение документа Word из макроса Excel
Макросом Excel формирую в рабочей книге в ячейке B3 имя для документа Word (типа itogi_050914.doc).

30.12.2012, 18:48 2

bizard, в программе Word свойство Selection относится к объекту Window. У объекта Document нет свойства Selection.

Чтобы проще было писать код, в программе Excel в VBA нужно подлючить библиотеку:
ToolsReferences..Microsoft Word Object Library.

В этом случае, когда ставите точку, то будут всплывающие подсказки.

Переменные в этом случае можно так создавать:

Visual Basic
Visual Basic
30.12.2012, 19:30 [ТС] 3

сделал как вы сказали
это он проглотил
застопорился на .Font.Size = 11
убрал пока эту строчку
пошёл выполнять Call ШАПКА

и тут затык на .TypeText Text:= _


что ему ещё надо ведь со строчкой .Documents.Add DocumentType:=wdNewBlankDocument
всё работало и создавало кроме таблицы

Visual Basic
30.12.2012, 19:38 4
Visual Basic
31.12.2012, 06:46 [ТС] 5

Большое спасибо, вроде дошло на ночь глядя.
С наступающим Новым годом! Всего самого наилучшего вам в новом году.

Добавлено через 10 часов 59 минут
ещё пару вопросов
ActiveDocument.Content.Font.Size = 11 не хотит работать
.Content.Font.Size = 11 так работает

Теперь ругается на .TypeParagraph
как правильно написать
.Content.TypeParagraph не подходит
ActiveDocument.TypeParagraph тоже

Visual Basic
31.12.2012, 08:37 6

bizard, сначала делайте код в программе Word.
Когда ставите точку, то появляются члены, которые есть у объекта. Если среди членов нет нужного, значит у объекта нет этого члена. Есть случаи, что не все члены появляются после того, как поставишь точку, но такое редко бывает.

TypeParagraph — является членом объекта Selection. Если вы перейдёте в программу Word, октроете программу VBA, введёте ActiveDocument и поставите точку, то во всплывающей подсказке не будет TypeParagraph. Это означает, что у объекта ActiveDocument нет члена TypeParagraph (могут быть исключения — член не появляется, но есть, но это бывает редко).

голоса

Рейтинг статьи

Оценка статьи:

2 звезды3 звезды4 звезды5 звезд5 звезд

Загрузка…

Похожие публикации

Adblock
detector

  • Документы Word
  • Создание файлов
  • Работа с файлами

Таблица Excel с исходными данными для создания документов Word

Макрос предназначен для программного создания документов Word на основе шаблона

(без использования функции слияния в Word)

В прикреплённом к статье архиве находятся 2 файла:

  • шаблон договора в формате Microsoft Word (расширение .dot)
  • файл Excel с макросом

Настройки макроса задаются в коде:

Const ИмяФайлаШаблона = «шаблон.dot»
Const КоличествоОбрабатываемыхСтолбцов = 8
Const РасширениеСоздаваемыхФайлов = «.doc»

При нажатии кнопки запуска макрос на основе шаблона dot создаёт очередной файл, и в этом документе производит замену текста («кода поля») из первой строки файла Excel на значение поля (из очередной строки с данными файла Excel)

Папка для сформированных документов создаётся автоматически, и содержит в имени текущую дату и время
(например, созданная папка будет называться Договоры, сформированные 01-05-2011 в 15-03-24)

Имена создаваемых файлов формируются объединением полей фамилия, имя и отчество, с добавлением расширения doc

PS: Макрос был написан достаточно давно, когда я только начинал изучать VBA, — так что код недостаточно универсален.

Но, в качестве примера, пожалуй, подойдёт (если вам нужен более функциональный макрос, воспользуйтесь универсальной надстройкой (см. ниже))

Ознакомьтесь также с универсальной надстройкой формирования документов по шаблонам,
которая может делать всё тоже самое, что и эта программа,
только в качестве шаблонов могут выступать, помимо документов Word, ещё текстовые файлы, и книги Excel.

В надстройке — много возможностей, и полезных дополнений: склонение ФИО в родительный и дательный падежи, автоматический вывод на печать (с заданным количеством копий), размещение созданных файлов в разных папках, создание и рассылка писем со вложениями, и множество других полезных функций.

По вышеприведённой ссылке программа заполнения документов Word из Excel доступна для бесплатного скачивания.

Внимание: просьбы о доработке макроса, описанного в этой статье, не принимаются.

Есть новая (универсальная) версия, — в которой уже есть практически всё, что может понадобиться.

  • 197135 просмотров

Не получается применить макрос? Не удаётся изменить код под свои нужды?

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

      Большинству операций, выполняемых программным способом, есть эквиваленты в пользовательском интерфейсе (UI), доступные как команды в меню и на панелях инструментов. Также существует нижележащая архитектура, обеспечивающая поддержку команд, выбираемых из UI. Всякий раз, когда вы создаете новый документ Word, он базируется на каком-либо шаблоне; расширение файлов шаблонов «.dot», а файлы документов – «.doc». Шаблон Word может содержать текст, код, стили, панели инструментов, элементы автотекста, комбинации клавиш для быстрого доступа к командам. Новый документ связывается с шаблоном и получает полный доступ к его элементам. Если вы не указываете конкретный шаблон, новый документ создается на основе стандартного шаблона «Normal.dot», который устанавливается при установке Word).

      Шаблон Normal.dot является глобальным, он доступен любому документу, который вы создаете. Вы могли бы при желании поместить весь свой код в Normal.dot и создавать все документы в своей среде на основе собственного шаблона Normal (Обычный). Но тогда его файл мог бы стать чрезмерно большим, поэтому более эффективное решение для многих разработчиков — создание собственных шаблонов для конкретных приложений. В документах, создаваемых на основе вашего шаблона, код из стандартного шаблона Normal по-прежнему будет доступен. При необходимости можно связывать документ с несколькими шаблонами в дополнение к шаблону Normal.

      Для работы с приложением Microsoft Word в .NET, используется объект Application, который является предком всех остальных объектов. Получив на него ссылку, вы можете работать с его методами и свойствами. Этот объект предоставляет большой набор методов и свойств, позволяющих программным путем управлять Microsoft Word. Код инициализации нового объекта Application, представлен ниже.

Microsoft.Office.Interop.Word.Application winword = 
  new Microsoft.Office.Interop.Word.Application();

Чтобы открыть существующий документ или создать новый, необходимо создать новый объект Document.

object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document document =
     winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);

      Выполняя какую-либо операцию в пользовательском интерфейсе Word (например, добавляя верхний колонтитул), вы выделяете соответствующую секцию, используя объект «Selection», определяющий текущую позицию «невидимого» курсора и применяете к ней новый параметр форматирования с использованием объекта «Range». Данный объект представляет область в документе и может включать в себя все что угодно — от пары символов, до таблиц, закладок и много другого. Вы не ограничены одним объектом «Range» — в одном документе можно определить сразу несколько таких объектов.

//Добавление верхнего колонтитула
foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)
{                   
    Microsoft.Office.Interop.Word.Range headerRange = 
    section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    headerRange.Fields.Add(headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);
    headerRange.ParagraphFormat.Alignment = 
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    headerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
    headerRange.Font.Size = 10;
    headerRange.Text = "Верхний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
}

//Добавление нижнего колонтитула
foreach (Microsoft.Office.Interop.Word.Section wordSection in document.Sections)
{                   
    Microsoft.Office.Interop.Word.Range footerRange =
   wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    
    footerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;
    footerRange.Font.Size = 10;
    footerRange.ParagraphFormat.Alignment = 
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    footerRange.Text = "Нижний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
}

Чтобы добавить текст в документ, необходимо указать позицию для вставки и сам текст.

//Добавление текста в документ
document.Content.SetRange(0, 0);
document.Content.Text = "www.CSharpCoderR.com" + Environment.NewLine;

Так же вы можете применить к тексту определенный стиль.

//Добавление текста со стилем Заголовок 1
Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
object styleHeading1 = "Заголовок 1";
para1.Range.set_Style(styleHeading1);
para1.Range.Text = "Исходники по языку программирования CSharp";
para1.Range.InsertParagraphAfter();

      В классе Microsoft.Office.Interop.Word.Document, присутствует коллекция «Tables», которая позволяет добавить таблицу в документ с использованием метода Add.

//Создание таблицы 5х5
Table firstTable = document.Tables.Add(para1.Range, 5, 5, ref missing, ref missing);

firstTable.Borders.Enable = 1;
foreach (Row row in firstTable.Rows)
{
    foreach (Cell cell in row.Cells)
    {
        //Заголовок таблицы
        if (cell.RowIndex == 1)
        {
            cell.Range.Text = "Колонка " + cell.ColumnIndex.ToString();
            cell.Range.Font.Bold = 1;
            //Задаем шрифт и размер текста
            cell.Range.Font.Name = "verdana";
            cell.Range.Font.Size = 10;                                                     
            cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
            //Выравнивание текста в заголовках столбцов по центру
            cell.VerticalAlignment = 
                 WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            cell.Range.ParagraphFormat.Alignment = 
                 WdParagraphAlignment.wdAlignParagraphCenter;
        }
        //Значения ячеек
        else
        {
            cell.Range.Text = (cell.RowIndex - 2 + cell.ColumnIndex).ToString();
        }
    }
}

       Для функционирования описанного выше кода, необходимо добавить к текущему проекту объектную библиотеку MS Word. Перейдите в меню «Проект» и выберете команду «Добавить ссылку» или в обозревателе решений, найдите пункт «Ссылки» и сделайте клик правой клавишей мыши по нему, из появившегося контекстного меню выберете соответствующий пункт.

      В открывшемся окне «Добавить ссылку», перейдите на вкладку «COM» и выберете «Microsoft Word 14.0 Object Library» из предложенного списка библиотек.

В обозревателе решений у вас появится ссылка на данную библиотеку.

      Перейдите в конструктор главной формы и добавьте из панели элементов, командную кнопку «Button». Данный элемент необходим для запуска процесса создания документа и вызов MS Word для отображения.

      Сделайте двойной клик левой клавишей мыши по элементу «Button» и вы перейдете в автоматически созданный метод события «button1_Click». Добавьте в него приведенный ниже код.

try
{               
    Microsoft.Office.Interop.Word.Application winword = 
        new Microsoft.Office.Interop.Word.Application();
    
    winword.Visible = false;

    //Заголовок документа
    winword.Documents.Application.Caption = "www.CSharpCoderR.com";

    object missing = System.Reflection.Missing.Value;

    //Создание нового документа
    Microsoft.Office.Interop.Word.Document document =
        winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);

    //добавление новой страницы
    //winword.Selection.InsertNewPage();

    //Добавление верхнего колонтитула
    foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)
    {                   
        Microsoft.Office.Interop.Word.Range headerRange = section.Headers[
        Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
        headerRange.Fields.Add(
       headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);
        headerRange.ParagraphFormat.Alignment = 
       Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
        headerRange.Font.ColorIndex = 
       Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
        headerRange.Font.Size = 10;
        headerRange.Text = "Верхний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
    }

    //Добавление нижнего колонтитула
    foreach (Microsoft.Office.Interop.Word.Section wordSection in document.Sections)
    { 
        //
        Microsoft.Office.Interop.Word.Range footerRange =
wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
        //Установка цвета текста
        footerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;
        //Размер
        footerRange.Font.Size = 10;
        //Установка расположения по центру
        footerRange.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
        //Установка текста для вывода в нижнем колонтитуле
        footerRange.Text = "Нижний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
    }

    //Добавление текста в документ
    document.Content.SetRange(0, 0);
    document.Content.Text = "www.CSharpCoderR.com" + Environment.NewLine;

    //Добавление текста со стилем Заголовок 1
    Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
    object styleHeading1 = "Заголовок 1";
    para1.Range.set_Style(styleHeading1);
    para1.Range.Text = "Исходники по языку программирования CSharp";
    para1.Range.InsertParagraphAfter();

    //Создание таблицы 5х5
    Table firstTable = document.Tables.Add(para1.Range, 5, 5, ref missing, ref missing);

    firstTable.Borders.Enable = 1;
    foreach (Row row in firstTable.Rows)
    {
        foreach (Cell cell in row.Cells)
        {
            //Заголовок таблицы
            if (cell.RowIndex == 1)
            {
                cell.Range.Text = "Колонка " + cell.ColumnIndex.ToString();
                cell.Range.Font.Bold = 1;
                //Задаем шрифт и размер текста
                cell.Range.Font.Name = "verdana";
                cell.Range.Font.Size = 10;                                                     
                cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
                //Выравнивание текста в заголовках столбцов по центру
                cell.VerticalAlignment =
                WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                cell.Range.ParagraphFormat.Alignment = 
                WdParagraphAlignment.wdAlignParagraphCenter;
            }
            //Значения ячеек
            else
            {
                cell.Range.Text = (cell.RowIndex - 2 + cell.ColumnIndex).ToString();
            }
        }
    }
    winword.Visible = true;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

      Запустите ваш проект, нажав на клавиатуре, клавишу «F5». Нажмите на единственную кнопку, расположенную на главной форме вашего проекта. У вас автоматически откроется документ Microsoft Word с заполненным верхним и нижним колонтитулом, обычным и с применением стиля текстом, а так же заполненной таблицей.

      Для сохранения документа в определенной директории, добавьте приведенный ниже код, после строки «winword.Visible = true;».

//Сохранение документа
object filename = @"d:temp1.docx";
document.SaveAs(ref filename);
//Закрытие текущего документа
document.Close(ref missing, ref missing, ref missing);
document = null;
//Закрытие приложения Word
winword.Quit(ref missing, ref missing, ref missing);
winword = null;

      При работе с приложением Word в памяти компьютера создается отдельный процесс, если его не закрыть или не вывести созданный документ на экран, то он будет работать до выключения компьютера. Так же при постоянной работе с такими документами, их процессы будут накапливаться незаметно для пользователя, что может привести к зависанию компьютера или другим последствиям.

Понравилась статья? Поделить с друзьями:
  • Создать квитанцию в excel
  • Создать каталог документов word
  • Создать карточку в excel
  • Создать календарь на текущий месяц в word
  • Создать календарь в excel одной строкой