Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Помогите пожалуйста написать макросс для Word

Ответить
Настройки темы
VBA - [решено] Помогите пожалуйста написать макросс для Word

Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vovchik1900
Дата: 07-05-2011
Здравствуйте.

Помогите пожалуйста решить задачку. Дело вот в чем:
Имеем *.doc или *.docx файл. В нем находится текст. Текст разделен на абзацы. Есть программа, которая может выделять текст по абзацам: выделила абзац, через некоторое время сняла выделение и выделила следующий, потом опять сняла и так пока документ не закончится. Программа внешняя.

Так вот задача в чем: нужно, чтобы после того как было снято выделение с первого абзаца появлялось окно в котором бы показывалась картинка. Картинка любая. Картинку можно выбрать заранее. Все картинки лежат где-нибудь в папке(или где-нибудь еще) и вызываются по порядку.

То есть примерно такой алгоритм:
выделился абзац---снялось выделение(появилось окно, в окне появилась картинка)---выделился следующий абзац---снялось выделение(в окне появилась другая картинка)---выделился третий абзац---снялось выделение(в окне появилась следующая картинка)

Помогите пожалуйста с кодом. если не трудно.

Отправлено: 07:14, 07-05-2011

 
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Предлагаю сделать так: внешний скрипт заменяет программу, которая выделяет абзацы.
Он открывает doc-файл и надеется что он окажется вордовским (точно знает только система). Затем выделяет пресловутые абзацы и вызывает внешнее приложение для показа картинок, например mspaint. Но можно любой браузер.
Код: Выделить весь код
// набросок скрипта (не проверен, только демонстрирует идею)

var doc = WScript.GetObject("my_doc.doc", "Word.Document"),
   shell = WScirpt.CreateObject("WScript.Shell");

doc.application.visible = true;

for(var i=1; i<=doc.paragraph.count; ++i) // надо бы подумать над условием
{
    doc.selection.range = doc.paragraph.item(i);
    WScript.Sleep(5000);
    doc.selection.range.clear();
    shell.run("mspaint " + i + ".jpg");
}
Подробное описание как чего делать с вордом есть в руководстве по использованию VBA в справочной системе Microsoft Office. Описание WScript и WshShell - в MSDN.
Можно открывать картинку при помощи GetObject, но возвращаемый объект будет определяться системой (точнее классом, под которым эта картинка зарегистрирована). В зависимости от настроек системы, может оказаться так, что откроется фотошоп (что ИМХО не подходящее средство просмотра). Ещё можно просить системы "показать", "распечатать", "редактировать", что вроде бы и гибкое, и предсказуемое решение. Если по пути найду как это сделать из скрипта - напишу.

Отправлено: 13:11, 07-05-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата pva:
Можно открывать картинку при помощи GetObject, но возвращаемый объект будет определяться системой (точнее классом, под которым эта картинка зарегистрирована). »
Не лучший способ, ибо нет никакой гарантии, что подобный объект будет наличествовать и будет зарегистрирован в системе.
Цитата pva:
Ещё можно просить системы "показать", "распечатать", "редактировать", что вроде бы и гибкое, и предсказуемое решение. »
Standard Canonical Verbs and Their Behaviors:
Код: Выделить весь код
…WScirpt.CreateObject("Shell.Application").NameSpace(<Folder>).Items(<FolderItem>).Verbs(<verb>).DoIt
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:13, 07-05-2011 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


у меня сейчас word 2010 под руками нет. Но ЕМНИП в нем можно записывать действия, что очень здорово облегает написание макроса.
Т.е. берем документ, открывает макросы, говорим "начать запись", выполняем ряд действий, говорим "прекратить запись" и получаем почти готовый шаблон. Чуть его подправить, и дело в шляпе.
Цитата Vovchik1900:
Программа внешняя. »
Т.е. вообще внешняя? И как она работает с Word? Через Office API?
Если так, то внимательно скуриваем документацию

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 22:00, 07-05-2011 | #4


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


pva,

Цитата pva:
Можно открывать картинку при помощи GetObject »
А как через эту функцию сделать? Про привязку изображения к программе я позабочусь.) Думаю, что хватит стандартного просмоторщика фото в виндовс (вин7).

Цитата pva:
Предлагаю сделать так: внешний скрипт заменяет программу, которая выделяет абзацы. »
Не никак. Нужно чтобы именно внешняя программа выделяла абзацы.

Цитата pva:
Ещё можно просить системы "показать", "распечатать", "редактировать", что вроде бы и гибкое, и предсказуемое решение. »
да ну. хватит только открыть.

lxa85,

Цитата lxa85:
ЕМНИП »
Это чего?

Цитата lxa85:
Т.е. вообще внешняя? И как она работает с Word? Через Office API? »
в ворд интегрируется как надстройка. вроде, COM интерфейс. В настройках ворда так показало.

Последний раз редактировалось Vovchik1900, 08-05-2011 в 07:09.


Отправлено: 06:59, 08-05-2011 | #5


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


ЕМНИП - Если Мне Не Изменяет Память
Цитата Vovchik1900:
в ворд интегрируется как надстройка. вроде, COM интерфейс. В настройках ворда так показало. »
а можно ее к сообщению прикрепить?

Отправлено: 09:34, 08-05-2011 | #6


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


lxa85,
Там вроде dll файл. Вы о нем?

Последний раз редактировалось Vovchik1900, 08-05-2011 в 12:56.


Отправлено: 12:41, 08-05-2011 | #7


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip Word.zip
(476.5 Kb, 1 просмотров)

Вот он.

Отправлено: 07:52, 09-05-2011 | #8

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Вот оно, о чём я говорил:
Код: Выделить весь код
var appli = WScript.CreateObject("Shell.Application");

appli.ShellExecute("d:\\photo\\test-1.jpg", null, null, "open", 1);
WScript.Sleep(5000);
appli.ShellExecute("d:\\photo\\ava12.jpg", null, null, "open", 1);
WScript.Sleep(5000);
Только не знаю, как закрыть потом окошки.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:33, 10-05-2011 | #9


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


ВСЕМ БОООЛЬШОЕ СПАСИБО!!!!!

Отправлено: 17:31, 11-05-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Помогите пожалуйста написать макросс для Word

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как написать Декларацию Независимости с помощью Word 2010 OSZone News Новости и события Microsoft 0 09-12-2010 16:30
Разное - [решено] Как открыть ссылку из WORD dodo110 Microsoft Office (Word, Excel, Outlook и т.д.) 5 16-06-2010 15:38
Ошибка - Как добавить ярлык программы в меню Открыть с помощью? Oleg-Sever Microsoft Windows 2000/XP 4 10-12-2008 22:58
Как почистить меню ОТКРЫТЬ С ПОМОЩЬЮ в вин98??? Andr Microsoft Windows 95/98/Me (архив) 8 05-04-2004 09:50
Как открыть базу Sybase с помощью Access? babubudu Программирование и базы данных 2 10-10-2003 12:05




 
Переход