Deprecated: RegularLabs\Library\ArrayHelper::implode(): Implicitly marking parameter $last_glue as nullable is deprecated, the explicit nullable type must be used instead in /homepages/10/d550841420/htdocs/libraries/regularlabs/src/ArrayHelper.php on line 225
Peut-on scanner directement depuis Word ?

Recherche

Autrefois, il était possible de numériser directement un document depuis Word. Cette fonctionnalité a disparu des versions récentes d'Office, mais il reste possible de piloter certains scanners à l'aide de VBA grâce à la technologie WIA (Windows Image Acquisition).

Principe

Le fonctionnement est simple :

  1. L'utilisateur lance la macro.
  2. Word lance la numérisation.
  3. Le scanner produit une image.
  4. L'image est enregistrée sur le disque.
  5. Elle peut éventuellement être insérée automatiquement dans le document.

Cette méthode fonctionne également depuis PowerPoint ou Excel.

Préparer l'environnement VBA

Ouvrez l'éditeur VBA :

  1. Dans le menu Outils > Références.
  2. Cochez : Microsoft Windows Image Acquisition Library v2.0

 

Premier exemple : lancer un scan

Sub ScannerDocument()
Dim dlg As New WIA.CommonDialog
Dim img As WIA.ImageFile
Set img = dlg.ShowAcquireImage
img.SaveFile "C:\Temp\Scan.jpg"
MsgBox "Numérisation terminée."
End Sub

Lorsque la macro est exécutée, Windows affiche la boîte de dialogue de numérisation. Une fois le scan terminé, l'image est enregistrée dans le dossier C:\Temp.

Insérer automatiquement l'image dans Word

Une fois l'image créée, il est possible de l'insérer directement dans le document :

Selection.InlineShapes.AddPicture FileName:="C:\Temp\Scan.jpg"

L'image apparaît alors à l'emplacement du curseur.

Exemple complet

Sub ScannerEtInserer()

    Dim dlg As New WIA.CommonDialog
    Dim img As WIA.ImageFile
    Dim NomFichier As String

    NomFichier = "C:\Temp\Scan.jpg"

    Set img = dlg.ShowAcquireImage
    img.SaveFile NomFichier

    Selection.InlineShapes.AddPicture _
        FileName:=NomFichier
End Sub
 

Éviter les références manquantes

Si le document doit être distribué à plusieurs utilisateurs, il peut être préférable d'utiliser le Late Binding :

Sub ScannerDocument()

End Sub
Dim dlg As Object
Dim img As Object
Set dlg = CreateObject("WIA.CommonDialog")
Set img = dlg.ShowAcquireImage
img.SaveFile "C:\Temp\Scan.jpg"
End Sub

Cette technique évite certains problèmes de références VBA manquantes.

Limitations

Tous les scanners ne prennent pas en charge WIA.

Selon les modèles :

  • certains fonctionnent immédiatement ;
  • d'autres nécessitent le pilote du fabricant ;
  • certains anciens modèles utilisent uniquement TWAIN ;
  • quelques périphériques multifonctions ne proposent aucune interface compatible.

En cas d'échec, il faut généralement utiliser le logiciel fourni avec le scanner puis insérer manuellement l'image dans Word.

 

Peut-on accéder aux scanners sans VBA ?

Les versions actuelles de Word permettent toujours d'insérer une image provenant :

  • du disque dur ;
  • d'une clé USB ;
  • d'un smartphone connecté ;
  • d'un lecteur réseau.

En revanche, la communication directe avec un scanner nécessite désormais l'utilisation de VBA ou du logiciel du constructeur.

Conclusion

Même si Word ne propose plus de fonction de numérisation intégrée, VBA associé à WIA permet encore d'automatiser cette tâche sur de nombreux scanners compatibles.

La difficulté principale ne vient généralement pas du code lui-même, mais de la compatibilité du pilote installé sur la machine.

Statistiques

France 70,6% France
Chine 5,5% Chine
Canada 4,9% Canada

Total:

163

Pays
018502704
Aujourd'hui: 426
Hier: 452
Cette semaine: 878
Semaine dernière: 2.469
Ce mois: 5.719