Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2006.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Automatisieren Sie das Scannen von Dokumenten und ihre Speicherung.

Techniken

VBA, WIA-Bibliothek

Voraussetzungen

Office/Access 2003, Scanner mit WIA-Schnittstelle

Beispieldatei

Scannen.mdb (Achtung: Das Öffnen der Datenbank ohne vorheriges Installieren der WIA-Bibliothek [1] kann zu Problemen führen.

Shortlink

419

Dokumente scannen mit WIA

André Minhorst, Duisburg

Da einige Zeitgenossen immer noch an das papierlose Büro glauben, will Access im Unternehmen zumindest einen kleinen Teil zu diesem Traum beitragen. Dazu liefern wir Ihnen Know-how rund um das Scannen von Dokumenten per VBA – natürlich mit automatischer Konvertierung in den gewünschten Dateityp und Speicherung der Datei am von Ihnen vorgegebenen Ort.

Voraussetzungen

Das Scannen von Dokumenten und das Handling der so entstehenden Dateien erfolgt unter modernen Betriebssystemen (Windows XP SP1 und höher) mit der kostenlosen Windows Image Acquisition Automation Library v2.0 (WIA), die Sie unter [1] herunterladen können.

Diese Bibliothek setzt einen modernen Scanner mit WIA-Schnittstelle voraus. Informationen zu entsprechenden Techniken für ältere Betriebssysteme und Scanner finden Sie im Kasten Scannen mit älteren Betriebssystemen. Die WIA-Bibliothek offeriert noch weitere Möglichkeiten wie etwa das Einlesen von Bildern einer Digitalkamera. Dieser Beitrag beschränkt sich jedoch auf die Steuerung von Scannern.Nach dem Herunterladen müssen Sie die im Paket enthaltene DLL mit dem Befehl Regsvr32 <Dateiname> registrieren. Für den Einsatz in VBA richten Sie außerdem einen passenden Verweis auf diese Bibliothek ein (s. Abb. 1).

pic001.tif

Abb. 1: Das Steuern eines Scanners per VBA erfordert einen Verweis auf die WIA-Bibliothek.

Scannen auf die Schnelle

Wer will schon in die Tiefen einer Objektbibliothek einsteigen, wenn man auch mit einer kleinen Routine den ersten Scan von Access initiieren kann? Wenn Sie obige Vorbereitungen getroffen haben und ein funktionstüchtiger Scanner an Ihrem Rechner hängt, können Sie sofort mit der Routine aus Listing 1 loslegen.

Listing 1: Dokument scannen und speichern

Public Function ScannenUndSpeichern(strDateiname As String)

     Dim objCommonDialog As WIA.CommonDialog

     Dim objImage As WIA.ImageFile

     Set objCommonDialog = New WIA.CommonDialog

     Set objImage = objCommonDialog.ShowAcquireImage

     If Not objImage Is Nothing Then

         objImage.SaveFile strDateiname

         Set objImage = Nothing

     End If

     Set objCommonDialog = Nothing

End Function

Dabei lernen Sie auch direkt das Objekt kennen, von dem aus Sie alle notwendigen (und weniger notwendigen) Dialoge öffnen können. Der Dialog, den die Routine mit der Methode ShowAcquireImage anzeigt, sieht etwa wie in Abb. 2 aus.

pic002.tif

Abb. 2: Der per VBA geöffnete Dialog zum Steuern des Scanners

Dieser Dialog erlaubt die grundsätzlichen Einstellungen wie die Auswahl des Bildtyps und des zu scannenden Bereichs, wobei der Dialog bereits eine sinnvolle Vorauswahl trifft. Weitere Details stellen Sie mit dem Dialog aus Abb. 3 ein, den Sie über den Link Qualität des gescannten Bildes verbessern öffnen. Die Routine aus Listing 1 erwartet den Dateinamen der zu speichernden Datei als Parameter. Der Aufruf könnte dann etwa folgendermaßen lauten:

ScannenUndSpeichern „c:\Scan.bmp“

pic003.tif

Abb. 3: Feineinstellungen für das Scannen

Die wichtigste Eigenschaft dieses Dialogs ist, dass er ein Objekt des Typs ImageFile zurückgibt, das Sie anschließend per VBA weiterbearbeiten können - etwa, um es wie in diesem Fall zu speichern.

Dialoge über Dialoge

Neben diesem Dialog bietet WIA noch einige Dialoge mehr. Die Methode ShowDeviceProperties etwa öffnet den Dialog mit den Eigenschaften des ausgewählten Scanners (ist nur ein Scanner vorhanden, entfällt der Auswahldialog, den die Methode ShowAcquireImage in der gleichen Routine aufruft). Listing 2 zeigt eine Beispielroutine zum Aufrufen dieses Dialogs. Die Funktionen der übrigen Methoden des CommonDialog-Objekts sind in der Online-Hilfe dokumentiert.

Listing 2: Beispiel für die Anzeige der
Scanner-Eigenschaften

Public Function Scannereigenschaften()

     Dim objCommonDialog As WIA.CommonDialog

     Dim objDevice As WIA.Device

     Set objCommonDialog = New WIA.CommonDialog

     Set objDevice = objCommonDialog. _
ShowSelectDevice

     With objCommonDialog

         .ShowDeviceProperties objDevice

     End With

End Function

Komfortabel scannen

Für Access-Anwendungen wie etwa Rechnungs- oder Vertragsverwaltungen kann der Aufruf des Scanvorgangs von einem Formular aus und das anschließende Speichern des Scanergebnisses und des dazugehörenden Pfades sehr viel Arbeit sparen. In diesem Beitrag lernen Sie ein Formular kennen, mit dem Sie den Scanner auswählen, einen Dateinamen festlegen und den Scanvorgang starten können. Das fertige Formular sieht wie in Abb. 4 aus.

Viel interessanter ist jedoch das Modul, das für die vom Formular aus aufgerufenen Scanvorgänge verantwortlich ist. Dieses Modul heißt mdlScannen und enthält alle für das Scannen erforderlichen Routinen - welche das im Einzelnen sind, erfahren Sie in den folgenden Abschnitten.

Scanner auswählen

Das Kombinationsfeld zum Auswählen des Scanners wird mit der Funktion ScannerErmitteln (s. Listing 3) gespeist, und zwar beim Öffnen des Formulars. Die Routine erzeugt zunächst ein Objekt des Typs DeviceManager, der das Erzeugen einer Connection auf die enthaltenen Scanner ermöglicht. Die einzelnen Geräte kann man über die Auflistung DeviceInfos ansprechen, die eindeutige ID und die Bezeichnung erhält man über die passenden Properties eines Elements dieser Auflistung. Die Funktion ScannerErmitteln liefert eine Liste mit den durch Semikola getrennten IDs und den Bezeichnungen der Geräte. Damit das Kombinationsfeld cboScanner diesen Ausdruck vernünftig auswerten kann, stellen Sie die Eigenschaft Herkunftsart auf Wertliste, Spaltenanzahl auf 2 und Spaltenbreite auf 0cm ein.

Listing 3: Erstellen einer Liste der vorhandenen Scanner

Public Function ScannerErmitteln() As String

     Dim objDeviceManager As WIA.DeviceManager

     Dim i As Integer

     Dim strScannerliste As String

     Set objDeviceManager = New WIA.DeviceManager

     For i = 1 To objDeviceManager.DeviceInfos.Count

         Debug.Print objDeviceManager.DeviceInfos.Item(i).DeviceID

         strScannerliste = strScannerliste _
& objDeviceManager.DeviceInfos.Item(i).DeviceID & „;“ & objDeviceManager.DeviceInfos. _
Item(i).Properties(„Name“) & „;“

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.