[Word][Macro VBA] Insérer image depuis scanner

Soyez le premier à donner votre avis sur cette source.

Vue 3 230 fois - Téléchargée 497 fois

Description

Bonjour,

je vous fais part d'une macro que j'ai créé pour pouvoir utiliser le scanner dans Office 2010 et +
Depuis Office 2010, il n'y a plus de commande/option pour insérer une image à partir d'un scanner, c'est regrettable :(

sur le net on trouve déjà des tutos pour une macro utilisant le pilote WIA.
ex: http://forum.pcastuces.com/scanner_directement_dans_word_2013-f23s34393.htm

seulement, voilà: certains scanners comme le mien ne peuvent pas être géré par WIA.
de plus, l'interface WIA de Microsoft est rudimentaire.

je me suis donc mis en tête de créer une macro utilisant les pilotes TWAIN, ce qui permet d'utiliser l'interface constructeur de nos scanners.
j'ai utilisé pour cela la librairie EZTwain, gratuite dans sa version classique: http://www.eztwain.com/eztwain1.htm

un tutoriel illustré est dans le zip fournit.

en résumé:

sous Word, Ajoutez l'onglet Développeur.
Créez ensuite une macro
Ajoutez la librairie EZTwainLibrary.dll dans le menu Outils, Références.

Collez ce bout de code:

Private Declare PtrSafe 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 length of the path, just as big as possible
  Dim FolderName As String ' Name of the folder
  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()

    Dim MyTwain As New EZTwain

    If MyTwain.IsAvailable = True Then
        MyTwain.SelectTwainsource (0)
        Result = MyTwain.AcquireToFileName(0, TempPath & "Scan.bmp")

        If Result = 0 Then
            Selection.InlineShapes.AddPicture TempPath & "Scan.bmp"
        End If
    End If

End Sub


Si vous avez une erreur sur la fonction GetTempPath, alors supprimez la partie avant Sub Scan() et remplacez TempPath & "Scan.bmp" par un chemin en dur comme "C:Scan.bmp" par exemple.

Enregistrez la macro.

sur Word, Personnalisez le Ruban
Ajoutez la commande de la nouvelle macro dans l'onglet de votre choix.

Vous pouvez maintenant importer directement une image à partir du scanner en utilisant le pilote TWAIN et l'interface de votre scanner.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.