Das neue Office 2013 bzw. Office 365 wird von Microsoft ja mit vielen Neuerungen angepriesen, Cloud und so – aber dann das: Word hat noch nicht mal eine Scan-Funktion – man müsste in OneNote rein, dort Scannen und das Ganze per Zwischenablage in das Word-Dokument reinfummeln. Kann nicht sein, da muss eine Lösung her.
Irgendwie werde ich den Eindruck nicht los, dass Microsofts Entwicklern an manchen Stellen etwas das Gefühl für die Erfordernisse der Anwender fehlt. So z.B. beim Umstand, das OneNote eine Scan-Integration besitzt, während diese bei Word 2013 fehlt. Als ich hier auf das alte Word-Scan-Problem gestoßen bin, hat es mich doch gejuckt, mal zu testen, ob meine VBA-Fähigkeiten schon gänzlich verkümmert sind. Denn mir war nach kurzer Recherche klar, das die von mir für frühere Office-Versionen zusammen getragene Lösung nicht mehr tut. Da ich gerade am zweiten Büchlein zu Microsoft Office 2013 schreibe, habe ich mal zwei Stunden geopfert und eine Lösung entwickelt.
So soll die Lösung aussehen
Um halbwegs komfortabel bei der Sache weiter zu kommen, stelle ich mir vor, dass eine Schaltfläche Scannen im Menüband auf der Registerkarte Einfügen des Word-Fensters zu finden ist.
Wählt der Benutzer diese Schaltfläche an, zeigt Windows als erstes das Auswahldialogfeld für die verfügbaren WIA-Geräte (hier iPad, Digicam und Scanner).
Wählt der Benutzer ein Gerät und dann die OK-Schaltfläche, soll das WIA-Dialogfeld zur Scanner-Steuerung erscheinen.
Über die Scannen-Schaltfläche wird das Bild erfasst und nach einer temporären Zwischenspeicherung an der aktuellen Stelle im Word-Dokument eingefügt. Fertig.
Voraussetzung ist daher natürlich, dass das Ganze über WIA-Treiber durch Windows unterstützt wird.
Kleines Makro zur WIA-Steuerung gefällig
Und ab diesem Zeitpunkt waren ein paar Fingerübungen zum Testen, ob ich noch scripten kann, fällig. Aber wo frickelt man in Word 2013 eigentlich ein Makro ein?
Nach ein wenig Sucherei stand fest: Auf der Registerkarte Ansicht des Menübands gibt es die im obigen Screenshot gezeigte Menüschaltfläche Makros. Also fix den Befehl zur Makrobearbeitung aufgerufen, einen Makronamen eingetippt und auf Erstellen geklickt. In der VBA-Entwicklungsumgebung ging es dann zur Sache: Meine erste Idee, war, im (hier sichtbaren) Objektkatalog nach einem Word-Objekt zum Scannen zu suchen.##
Aber ich wurde nicht fündig. Dann habe ich kurz die betreffenden OneNote-Methoden zum Aufrufen der Scan-Schaltfläche abgegrast aber auch da bin ich auf die Schnelle gescheitertet. Ich habe einfach keine entsprechende Methode gefunden.
Also bin ich über das Menü Extras und den Befehl Verweise in das oben im Screenshot im Vordergrund sichtbare Dialogfeld gegangen und habe mir die Bibliotheken angesehen. Und da gab es eine “Windows Image Acquisition Library” Typ-Bibliothek, über die ich auf die WIA-Schnittstelle zugreifen konnte. Diese Bibliothek muss (wie im Bild sichtbar) über ein markiertes Kontrollkästchen als Referenz eingebunden sein.
Und damit war das Ganze klar, ein paar VBA-Befehle und das Ganze in Word sauber als Schaltfläche einbauen. Wie das funktioniert, beschreibe ich in Teil 2.
Artikel
a: Scannen in Word 2013 – Teil 1
b: Scannen in Word 2013 – Teil 2
c: Scannen unter Word 2007/2010
Scanfunktion in Word 2013/2016 nachrüsten – Teil 1
Scanfunktion in Word 2013/2016 nachrüsten – Teil 2
Danke, das werde ich mir die nächsten Tage mal anschauen (+einbauen)
Beachtet meinen Kommentar in Teil 2
Funktioniert wunderbar Danke für die Info.
Ist schon der Hammer das MS sowas nicht mehr impletiert.
Danke
Sehr gute Idee. Bei dem Hinweis auf OneNote ist mir gleich eingefallen, dass dort die umfangreichen Zeichentools fehlen, die es in Word gibt.
Danke für den guten Tipp.
Ich habe ihren blog versucht in mein Word 2013 mit 64 bit zu integrieren und Windows 8 pro x64
leider kommt beim testen immer wieder die Fehlermeldung bei folgender stelle
Dim objCommonDialog As WIA.CommonDialog
Bewnutzerdefinierter typ kann nicht Definiert werden …
weiß nicht was ich machen soll
Dann ist vermutlich keine Referenz auf die betreffende Bibliothek in der VBA-Entwicklungsumgebung definiert worden. Die Vorgehensweise ist im Artikel beschrieben. Bitte nochmals prüfen.
Ich habe die 2 Dateien in den Startup- bzw. Addin – Ordner kopiert und ausgeführt.
In Exel 2013 funktioniert der Scan einwandfrei.
Beim ausführen wir das Makro erkannt und ich muss aktivieren anklicken.
In Word 2013 kommt dann die Fehlermeldung: Makro wurde nicht gefunden.
Was mache ich falsch?
Hallo zusammen und vielen Dank für die Hinweise!
Bei mir klappte es irgendwie nicht mit Deinem Makro. Entweder kam nach dem Scan der Hinweis:“Ein Fehler ist aufgetreten.Möglicherweise ist kein WIA-fähiges Gedrät angeschlossen“ (was nicht stimmte) oder dass das Makro nicht gefunden wurde.
Unter https://web.archive.org/web/20151228084937/http://www.gmayor.com:80/scan_into_word_2007.htm habe ich dann ein Script gefunden was auf Deinem basiert und bei mir sehr gut mit Word 2013 funktioniert.
Hallo,
habe vor ein paar Tagen auf meinem neuen Rechner Word 2013 installiert und schon viel Zeit nach dem Scanner-Button gesucht. Nun weiß ich, dass er fehlt. Danke für die Info und die anderen Hinweise.
Als Laie weiß ich aber nicht, ob ich Visual Basic auf meinem Lenovo-Rechner habe. (Die Suchfunktion führt nicht dahin.) Ist das üblicherweise installiert?
Viele Grüße
Palewolf
Es ist Visual Basic for Application (VBA) und nicht Visual Basic. Und VBA ist Bestandteil von Word, Excel etc..
Habe zwar nun den Button „Scannen“ unter der Registrierkarte „Einfügen“ bei Word 2013, dennoch kommt aber stets diese Fehlermeldung – siehe Bild-Link.
http://www.fastpic.info/image/20150323/54916a37f6.jpg
Macros sind unter Optionen aktiviert!
Wissen Sie, warum das SCAN-Macro bei mir nicht funktioniert?
Kann dir WG. Unfall nur nicht helfen – s. Akt. Blog-Beitrag.
Hallo Herr Born,
sehr schön, Ihr Makro (Scan01.bas) hat auf Anhieb in Word und PowerPoint 2013 funktioniert.
Beim Publisher gelang mir mit gleicher Vorgehensweise dies nicht. Hier kommt die Meldung „Fehler beim kompilieren, Methode oder Datenobjekt nicht gefunden“ und „InlineShapes“ wird markiert.
Haben Sie eine Idee wie man es auch beim Puplisher hinbekommen kann?
Würde mich über einen Lösung freuen.
Rudolf
Hallo Günter,
Danke für den Code!
Kleine Ergänzung: anstatt die „gebastelte“ TempPath Funktion kann man das aktuelle Temp-Verzeichnis auch einfach per Environ(„temp“) ermitteln.
Also
strDateiname = TempPath & „Scan.jpg“ ‚ set temporary file
durch
strDateiname = Environ(„temp“) & „Scan.jpg“ ‚ set temporary file ersetzen.
Gruß
Fabian
Hallo Herr Born,
vielen Dank für die Bereitstellung dieser Anleitung und des Codes. Und ebenfalls vielen Dank an Fabian Schlieper für den Tip wodurch vieles von Code überflüssig und einfacher geworden ist.
Der folgende Code funktioniert bei mir mit Word 2016, 64bit ohne Probleme:
‚ Author: Günter Born http://www.borncity.de blog.borncity.com
‚ Implements a Scan function in Word
Sub Scan()
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 = Environ(„temp“) & „\Scan.jpg“ ‚ set temporary file ersetzen.
If Not objImage Is Nothing Then
Kill strDateiname
objImage.SaveFile strDateiname ‚ save into temp file
Selection.InlineShapes.AddPicture strDateiname ‚ insert into document
Set objImage = Nothing
End If
Set objCommonDialog = Nothing
‚ MsgBox strDateiname ‚ test output
End Sub
Leider scheint es zwischen Word und Outlook einen Unterschied zu geben. Ich habe in Outlook folgende Schritte unternommen:
Outlook starten -> Tastenkombination [ALT] + [F11] gedrückt
Menü -|Extras|-|Verweise| angeklickt und wie gehabt „Microsoft Windows Image Acquisition Libary v2.0“ ausgewählt.
Danach bin ich zu „Project1 (VbaProject.OTM)“ -> „Microsoft Outlokk Objeckte“ -> „ThisOutlookSession“ gewechselt und habe den Code eingegeben.
Die Schaltfläche habe ich wie von Ihnen beschrieben ebenfalls in Outlook angelegt. Beim klicken auf diese öffnet sich auch das Scanfenster wo ich den entsprechenden Scanner auswähle und dann auf scannen klicke. Er scannt das Dokument aber es wird nicht in die Mail eingefügt.
Achso, unter [Datei] -> [Optionen] -> [Trust Center] > [Einstellungen für das Trust Center…] -> [Makroeinstellungen] habe ich „Alle Makros aktivieren…“ ausgewählt.
Hätte hierfür jemand eventuell eine Lösung parat?
Vielen Dank
Matthias
Hallo,
bei mir kommt diese Meldung:
Fehler beim Kompilieren:
Mehrdeutiger Name: Scan
Word: 2013, Windows 10, 64 Bit Rechner
Danke vorab für Deinen Artikel.
HG
Raimund
Kannst du mir bitte weiterhelfen!
Das Scannen von einer Seite über das Flachbett funktioniert, aber über den Papiereinzug wird nur die erste Seite eingescannt.
Es laufen allen 10 Seiten durch den Papiereinzug aber im Word Dokument wird immer nur eine die 1. Seite angezeigt.
Vielleicht hast du eine Lösung ich, bräuchte dies dringend! Unter ALT E G S hat das einwandfrei funktioniert mit dem neuen 365 nicht.
Wäre auch bereit die Kosten für eine Lösung zu übernehmen, da alles andere viel mehr Zeitaufwand ist und wir bei der ‚Arbeit eingeschränkt sind.
Danke im Voraus.
LG. Gerhard
Die Lösung unterstützt nur das, was der WIA 2.0-Treiber bereitstellt. Papiereinzug gehört imho nicht dazu. Ergo kann ich da auch nichts ändern. Das muss über spezielle Lösungen für die jeweiligen Geräte implementiert werden. Das ist aber nicht meine Baustelle.