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 стало гораздо удобнее.