Microsoft по какой-то причине убрала возможность сканировать напрямую из Word еще в версии Office 2010 (убрали вместе с полезной утилитой MODI — Microsoft Office Document). В более новых версиях Word 2013 и Word 2016 также нет кнопки сканирования напрямую из документа Word. Чтобы вставить изображение со сканера в Word приходится отсканированное изображение в графический файл на диск с помощью диалога утилиты сканирования от производителя сканера, а потом вставлять в документ Word сохраненный файл рисунка. Все это очень неудобно, особенно, когда приходится сканировать и вставлять в документы Word десятки изображений в день.
В этой статье мы рассмотрим способ добавления собственной кнопки запуска мастера сканирования в Word и код небольшого VBA макроса, позволяющий автоматически сканировать и вставлять изображения со сканера напрямую в Word. Данная инструкция применима к Word 2016, 2013 и 2010 (учитывайте различия в интерфейсе).
Итак, добавим новый макрос сканирования в наш Word 2016.
- Перейдите на вкладку Вид и выберите Макросы -> Макросы.
- В выпадающем списке Макросы из выберите Normal.dotm (общего шаблона). Укажите имя макроса WIA_Scan и нажмите кнопку Создать.
- В появившемся окне редактора Visual Basic выберите меню Tools -> References.
- В списке подключается библиотек выберите Microsoft Windows Image Acquisition Library v2.0. Данная библиотека Windows полволяет получать доступ к сканерам из кода VBA. Поддерживаются только драйвера сканеров с поддержкой WIA (Windows Imaging Architecture). Тем самым мы сможем использовать классы библиотеки сканирования WIA (wiaaut.dll) в VBA коде.
- Вставьте в редактор Visual Basic следующий VBA код:
Sub WIA_Scan()
'
' WIA_Scan макрос для MS Office 2016/2013
'
'
On Error Resume Next
Dim objWIADialog As WIA.CommonDialog
Dim objScanImage As WIA.ImageFile
Dim strDate
' инициализация объектов WIA
Set objWIADialog = New WIA.CommonDialog
Set objScanImage = objWIADialog.ShowAcquireImage
' путь к временному файлу
strDate = Environ("temp") & "\Scan.jpg"
If Not objScanImage Is Nothing Then
'удаляем старый файл
Kill strDate
' сохраняем скан во временный файл
objScanImage.SaveFile strDate
' вставляем файл Scan.jpg в документ Word
Selection.InlineShapes.AddPicture strDate
Set objScanImage = Nothing
End If
Set objWIADialog = Nothing
End SubСовет. В Word 2010 достаточно указать следующий код (однако в Word 2016 и 2013 он не работает, т.к. функция WordBasic.InsertImagerScan в Office 2010 была удалена).
Sub WIA_Scan ()
On Error Resume Next
WordBasic.InsertImagerScan
End Sub - Теперь осталось добавить в ленту Word новый раздел и добавить в него наш макрос (я добавил кнопку сканирования на вкладку Вставка). Перейдите в настройки ленты, добавьте новую группу, в которую поместите макрос (вы можете изменить иконку кнопки).
Попробуйте теперь нажать на новую кнопку сканирования.
VBA макрос позволяет вызвать стандартное диалоговое окно интерфейса WIA. Если в системе имеется несколько источников WIA, вам будет предложено выбрать устройство, с которого нужно получить изображение.
После того, как вы выбрали устройство WIA, появится стандартное диалоговое окно сканера с настройками сканирования и окном предпросмотра.
После того, как вы выбрали настройки сканирования, нажмите кнопку Scan и дождитесь окончания сканирования.
Макрос автоматически сохранит отсканированное изображение во временный jpg файл и вставит его в открытый документ Word. В документе Word вы можете изменить размер и положение вставленной сканированной картинки.
Как вы видите, теперь вставлять изображение со сканера в документ Word стало гораздо удобнее.
+
спасибо!
Отлично! Сканирование из Word 2016 работает, нужно разрешить выполнение макроса или подписать его.
а как в 2010 офисе подписать этот макрос, чтобы ворд не ругался на него?
selfcert запускал, макрос получал, вроде как в редакторе в меню Tools макрос сканера подписывал этим сертификатом, а оно все равно не работает как будто макрос неподписанный.
Макросы MS Office можно подписать с помощью утититы SelfCert.exe (входит в компект поставки Office). Либо понижать уровень защиты от макросов в настройках.
согласен с каждым словом критики в адрес компоновки офиса «от мелкософта» (даже если они не были напечатаны 🙂 )
за те бабки которые они хотят — убирать эту функцию было крайней степенью свинства (хотя виной тому, скорее всего, антимонопольный комитет — файнридер без работы остался бы..)
спасибо за макрос
не выходит…..
пишет неопределённый тип
Dim objWIADialog As WIA.CommonDialog
У меня тоже тип Dim objWIADialog As WIA.CommonDialog не определен. в чем проблема?
У меня все пошло, Супер! Спасибо!
Добрый день. Мне 79 лет и я совсем юный осваиватель компьютерных премудростей.Но мне надо научиться сканировать вордовские документы для больницы. Жене сделал снимки больных ног при копировании получаются не очень приглядные снимки,без необходимых тонкостей,на что необходимо врачам обратить внимание. В связи с этим и столкнулся с такой необходимостью. У меня Ворд 2013 и я все выполнил по предложенной инструкции,но вот концовку настройку ленты не смог довести до логического результата. Помогите!!! С почтением Леонид Георгиевич.
Доброго дня!
У вас не получается вытащить значок сканирования на верхний Ribbon (Ленту) в Office?
Не совсем понятно, как вставлять код. Для программистов, может, это как алфавит, но для рядовых пользователей нужно более подробное описание. Скопировать и вставить? А как вставить? В открывающемся окне макроса есть какой-то текст. Его нужно удалять при вставке кода? Или добавлять в продолжение строки?
Программистам всегда кажется, что их все должны понимать. Но как нам, чайникам, вставить енту нужную функцию? Можно по подробнее о вставке кода?