Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 13:32   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Постоение отчета через COM. Как получить список выполненых Word'ом инструкций?

Доброго времени суток!

Мне нужно построить отчет вот по такой форме, программно, в среде разработки Delphi:


Я могу сам в форде такое нарисовать, как можно узнать какие команды и какие параметры, дергает форд?
Может этот как-то связано с макросом, может как-то с VBA?

Дайте какой-нибудь пищи для ума..
Человек_Борща вне форума Ответить с цитированием
Старый 10.03.2013, 17:55   #2
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Человек_Борща, первоначальная информация берётся с помощью макрорекордера, потому что знать все VBA-объекты программы "Word" можно, только если каждый день писать макросы для программы "Word".

Последний раз редактировалось Скрипт; 10.03.2013 в 18:03.
Скрипт вне форума Ответить с цитированием
Старый 10.03.2013, 17:58   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

В основном, здесь идёт работа с параметрами шрифта Bold для жирного текста и Underlined для подчёркнутого. Если ты можешь такое нарисовать сделать в ворде сам, то больших проблем возникнуть не должно. В качестве примера, первую строку можно сделать так:
Код:
    With Selection
        With .ParagraphFormat
            .Alignment = wdAlignParagraphCenter 'выравнивание по центру
            .Shading.BackgroundPatternColor = -603930625 ' фон абзаца
        End With
        .Font.Size = 12 'Размер шрифта
        .Font.Bold = True 'Жирность
        .TypeText "1 Группа FCI/ Group FCI 1" 'Текст
    End With
Пишу на VBA, т.к. в Delphi не силён, но принцип ты поймёшь.
Для такой разметки я бы использовать таблицу с невидимыми границами.
Может быть есть смысл сделать шаблон, задав форматирование для всех элементов и вставлять только текст?
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.03.2013, 03:58   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Человек_Борща, первоначальная информация берётся с помощью макрорекордера
Интересно. Это как?
1. Я запускаю запись макроса
2. Делаю что надо
3. Останавливаю запись
4. где-то смотрю "исходники" макроса?

Очень интересны пункты 1,3 и 4. где их искать/смотреть? Все объекты мне знать и не нужно, нужно знать, что дергается вордом чтобы нарисовать такой шаблон, а что к чему, я, опытным путем, пойму.

Цитата:
Для такой разметки я бы использовать таблицу с невидимыми границами.
Да, да. Я вообще предложил формировать сие в экселе, но заказчик уперся рогом и хочет ворд. как делать невидимые границы?(мб это выдергается макро-рекордером и действиями)...

Цитата:
Может быть есть смысл сделать шаблон, задав форматирование для всех элементов и вставлять только текст?
Ах если бы все было так просто =) В этом шаблоне статичны разе что шрифты и поля, остальное динамично.
Человек_Борща вне форума Ответить с цитированием
Старый 11.03.2013, 04:13   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Макрорекордер находится на вкладке "Разработчик" или в 2003 — меню "Макросы".

Нажимаешь, делаешь всё, что нужно, останавливаешь. Затем Alt+F11, откроется редактор VBA и слева в дереве ищешь папку Modules, где в модуле NewMacros и будет записано почти всё, что ты делал при записи макроса.
Таблица с невидимыми границами — это обычная таблица, только отображение границ у неё отключено. Выглядеть может так (включено отображение сетки таблицы, но сама сетка на печать не выводится):

если в окне "Границы" установить нужный тип:
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 11.03.2013, 07:52   #6
Скрипт
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 776
По умолчанию

Пункт 1

Цитата:
Человек_Борща: где-то смотрю "исходники" макроса?
язык программирования "VBA" имеет одну особенность от других языков программирования: программировать на языке "VBA" могут люди, вообще не связанные с программированием. Поэтому слово "исходники" в разделе "VBA" не используется, т.к. слово "исходники" - это терминт профессиональных программистов. Вместо слово "исходники" нужно писать "код", "макрос". Я, например, не знаю, что такое "исходник" и не собираюсь лезть в интернет и выяснять, что это слово означает.


Пункт 2

Код, полученный с помощью макрорекордера, всегда приходится переделывать (очень редко можно получить с помощью макрорекордера готовый код). Макрорекордер используют в основном, чтобы узнать имена VBA-Word-объектов, названия VBA-Word-команд. Если вы откроете встроенную VBA-справку и посмотрите объекты программы "Word", то вы вряд ли сможете выбрать нужный вам объект, т.к. объектов много, VBA-справка на английском языке.

Хотя иногда можно получить полностью код с помощью макрорекордера, но чуть-чуть всё-равно приходится изменять под свою задачу.

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

Последний раз редактировалось Скрипт; 11.03.2013 в 08:12.
Скрипт вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить список процессов через сокет niluser Работа с сетью в Delphi 9 12.08.2012 14:28
Как получить список именованных диапазонов листа через VBA myprog Microsoft Office Excel 1 14.05.2011 13:57
Как открыть файл отчета через Rave Reports masal77 Общие вопросы Delphi 0 10.04.2011 02:15
Получить список доступных баз данных через select. hk47 БД в Delphi 5 13.04.2010 13:31
Получить список пользователей работающих через удаленный рабочий стол AlexandrSid Общие вопросы Delphi 2 01.06.2009 18:55