Visitas

viernes, 2 de enero de 2015

Escanea directamente en Word 2013

Todo lo dicho hasta ahora para las versiones 2007 y 2010 ha dejado de ser operativo en la versión de 2013, ya que han inhabilitado las sentencias WordBasic que permitían hacer esta operación (otra “perla” con la que nos obsequió Microsoft).

Por fortuna, el Sr. Günter Borns, ha desarrollado una metodología a través de WIA que permite seguir escaneando directamente en Word 2013. Desde aquí mi más sincero agradecimiento y, dado el interés que tiene tal codificación para cada vez más usuarios, me limitaré a hacerme eco de su trabajo. Puedes acceder a su blog desde aquí.

El código que el Sr. Günter ha insertado en su página funciona correctamente en español, al menos en la codificación para España, pero creo que lo será para todas las variantes de español. Tan solo hay que advertir que él emplea la comilla curvada -supongo que por el teclado en alemán- y no la recta que empleamos en España ('), lo que hace que nuestro Office no lo reconozca correctamente y dé error.

Importante: sigue los pasos que indica Günter en su blog y, cuando llegues a la codificación VBA, copia y pega las siguientes líneas de código tal cual:

' Scan for Word 2013
' Author: Günter Born www.borncity.de blog.borncity.com
' Implements a Scan function in Word 2013

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Function TempPath() As String
Const MaxPathLen = 256 ' Max path length
Dim FolderName As String ' Folder name
Dim ReturnVar As Long ' Return Value
FolderName = String(MaxPathLen, 0)
ReturnVar = GetTempPath(MaxPathLen, FolderName)
If ReturnVar <> 0 Then
TempPath = Left(FolderName, InStr(FolderName, Chr(0)) - 1)
Else
TempPath = vbNullString
End If
End Function

Sub Scan()
'
' Scan Macro, to be invoked in Word
'
On Error Resume Next
Dim objCommonDialog As WIA.CommonDialog
Dim objImage As WIA.ImageFile
Dim strDateiname
' instantiate Scan WIA objects
Set objCommonDialog = New WIA.CommonDialog
Set objImage = objCommonDialog.ShowAcquireImage
strDateiname = TempPath & "Scan.jpg" ' set temporary file
If Not objImage Is Nothing Then
Kill strDateiname
objImage.SaveFile strDateiname ' save into temp file
Selection.InlineShapes.AddPicture strDateiname ' insert in doc
Set objImage = Nothing
End If
Set objCommonDialog = Nothing
'MsgBox strDateiname  'test output
End Sub