Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 15:17:23

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Word и VBA
| | |-+  Перехват команды Вставка рисунка Word
Страниц: [1]   Вниз
Печать
Автор Тема: Перехват команды Вставка рисунка Word  (Прочитано 6581 раз)
0 Пользователей и 1 Гость смотрят эту тему.
samart4
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« : 21.12.2015, 15:12:07 »

Появилась необходимость перехватывать событие открытия окна вставки изображения в документ Word.
При нажатии на кнопку в центре в Word 2010 (и 2007) открывается окно выбора изображения (скриншот 1 и 2). Можно ли как-то перехватить эту команду?

Начал копаться в командах Word, вроде бы нашел похожие по названию команды (InsertPicture и InsertPicture3), но их события не перехватываются. Команда вставки шаблона выбора изображения перехватывается (поместил в модуль ThisDocument):

Код: (vb)

Sub ContentControlPicture()
    MsgBox "ContentControlPicture"
End Sub


Все остальные команды не перехватываются при попытке вставить изображение (если нажать кнопку "Место для рисунка"):

Код: (vb)

Sub EditPaste()
    MsgBox "EditPaste"
End Sub
 
Sub InsertPicture()
    MsgBox "InsertPicture"
End Sub
 
Sub InsertPicture3()
    MsgBox "InsertPicture3"
End Sub
 
Sub DrawInsertWordPicture()
    MsgBox "DrawInsertWordPicture"
End Sub
 
Sub DrawPictureInline()
    MsgBox "DrawPictureInline"
End Sub
 
Sub DrawToggleSelectObjectMode()
    MsgBox "DrawToggleSelectObjectMode"
End Sub
 
Sub EditObject()
    MsgBox "EditObject"
End Sub
 
Sub EditLinks()
    MsgBox "EditLinks"
End Sub
 
Sub EditPictureEdit()
    MsgBox "EditPictureEdit"
End Sub
 
Sub EditSource()
    MsgBox "EditSource"
End Sub
 
Sub PasteAsPicture()
    MsgBox "PasteAsPicture"
End Sub
 
Sub EditAutoText()
    MsgBox "EditAutoText"
End Sub
 
Sub EditObjectText()
    MsgBox "EditObjectText"
End Sub


Зачем все это нужно: В Word 2016 (возможно еще в Word 2013, не проверял) окно вставки рисунка позволяет не только вставлять локальные файлы, но также и вставлять картинки из интернета с помощью Bing и аккаунтов (OneDrive и т. д.). Но это окно открывается долго, хотелось бы вместо него сразу открывать окно выбора локального файла (как это делается в 2007 и 2010). Реально ли такое сделать с помощью макросов?
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 21.12.2015, 17:54:07 »

А для чего это вообще необходимо? В VBA очень скудны возможности работы с объектами в принципе, а по части их событий - вообще печаль. Ну а событий для отслеживания стандартных диалогов вообще не видал. Поэтому надо знать цель - возможно появится решение не через отслеживание событий.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
samart4
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« Ответ #2 : 21.12.2015, 18:47:54 »

Цитировать
Зачем все это нужно: В Word 2016 (возможно еще в Word 2013, не проверял) окно вставки рисунка позволяет не только вставлять локальные файлы, но также и вставлять картинки из интернета с помощью Bing и аккаунтов (OneDrive и т. д.). Но это окно открывается долго, хотелось бы вместо него сразу открывать окно выбора локального файла (как это делается в 2007 и 2010)

Но я поясню. В Word 2007 и 2010 при нажатии на центральную кнопку (которая 'Место для рисунка') сразу открывается окно выбора локального файла. В Word 2016 при нажатии на центральную кнопку открывается примерно такое окно (здесь не видно, но еще там обычно есть опция выбора локального файла):


Но это окно открывается довольно долго, видимо подгружает аккаунты и т.д. Нужно же избавиться от него, чтобы открывалось сразу окно выбора локального файла.
У меня была идея заменить эти InlineShape'ы кнопками и клацать на них. То есть программно пробежаться по всем InlineShape'ам-рисункам и заменить их кнопками, а на клики кнопок навесить уже диалоги выбора файлов... Но не получилось, вываливались ошибки (пытался через метод AddOLEControl). При этом через классы создавать кнопки на форме получилось, но это не то, что нужно.

Идея в том, чтобы иметь в определенных местах документа контрол (что это будет, кнопка, рисунок, прямоугольник или иконка, неважно) по нажатию на который я мог создать окно выбора изображения и вставки. То есть аналог "Вставки изображения", но только такой, как в Word 2007 или 2010.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru