mediamatik.joshua
Goto Top

Word-Marko: ein Bild aus einem festgelegten Ordner in ein Dokument einbinden

Hallo zusammen,

Ich hoffe ihr könnt mir bei meinem Problem helfen. Es sieht folgender massen aus:


Die Ingenieure bei uns im Geschäft haben eine Webcam mit der sie immer ein Produktaufkleber fotografieren. Dieses Foto(.jpg), so habe ich es eingestellt, landet immer im gleichen Ordner und zwar immer unter anderem Namen "Image1 , Image2, Image3, Image4, ...".

Im Moment noch fügen Sie das entstandene Foto manuell in eine erstellte Wordvorlage (immer die gleiche) ein und formatieren es entsprechend (etwa 5cm von oberem Rand und 3 cm von dem unteren Rand). Das Bild wird nach dem Einfügen in das Worddokument wieder von ihnen aus dem "Webcamordner" gelöscht, sodass man sicher ist das man immer das richtige Foto verwendet und zwar dass, das man fotografiert hat.

Da nun immer nur ein Bild auf dem "Webcamordner" vorhanden ist, habe ich mir gedacht, dass man ein Makro in die Wordvorlage/-dokument einbettet. Und zwar dass das Makro bei der Aktivierung sofort das eine Bild aus dem "Webcamordner" ausschneidet und es mit dem oben genannten Abstand in das Dokument einfügt.

Ich wäre extrem froh wenn ich von ein paar Experten ein paar nützliche Antworten bekommen könnte.

Danke schon einmal im voraus.

Gruss
Joshua

Content-Key: 226975

Url: https://administrator.de/contentid/226975

Printed on: April 19, 2024 at 11:04 o'clock

Member: colinardo
Solution colinardo Jan 17, 2014, updated at Jan 24, 2014 at 16:02:36 (UTC)
Goto Top
Hallo Joshua, lust auf ein Spiel face-wink
Das was du möchtest ist kein Problem. Du erstellst in Word eine Vorlage (*.dotm), und fügst folgenden Code im VBA-Editor in ThisDocument im Vorlage-Dokument ein:
Private Sub InsertWebCamImage()
    strPath = "E:\webcam-bilder"  
    strImage = Dir(strPath & "\*.jpg")  
    If strImage <> "" Then  
        Dim shpCanvas As Shape
        imagePath = strPath & "\" & strImage  
        posLeftMM = 20
        posTopMM = 50
        wCanvasMM = 200
        hCanvasMM = 150
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvasMM), mmToPoint(hCanvasMM))
        shpCanvas.WrapFormat.Type = wdWrapSquare
        shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height
        'Bild im Verzeichnis löschen  
        Kill imagePath
    End If
End Sub

Private Sub Document_New()
    InsertWebCamImage
End Sub

Private Function mmToPoint(ByVal length As Double)
    pointInMM = 0.352777778
    mmToPoint = Round(length / pointInMM, 0)
End Function
Dann musst du noch den Pfad zum Ordner in dem das WebCam-Bild liegt in Zeile 2 des Codes anpassen (ohne Backslash am Ende). Im Script gehe ich davon aus das dein WebCam-Bild die Endung *.jpg besitzt (Zeile 3). Dann das ganze speichern. Wenn man jetzt auf diese Vorlage einen Doppelklick im Explorer macht, wird automatisch ein neues Dokument von der Vorlage erstellt, das WebCam-Bild eingefügt und im WebCam-Ordner gelöscht. Leider geht aus deiner Beschreibung kann nicht genau hervor wie das Bild positioniert sein soll (Seite Quer- oder Hochformat?, Größe des Bildes?); habs mal grob positioniert und eine Größe festgelegt (s.Code)

Grüße Uwe
Member: Mediamatik.Joshua
Mediamatik.Joshua Jan 20, 2014 at 06:51:11 (UTC)
Goto Top
Hallo Uwe,

DANKE DANKE DANKE!! Tolle Antwort! face-smile

Ich bin leider erst wieder ab Mittwoch im Geschäft. Aber ich werde dir natürlich sofort bescheid sagen ob es funktioniert hat.

Nochmal danke und Gruss
Joshua
Member: Mediamatik.Joshua
Mediamatik.Joshua Jan 24, 2014 at 14:20:47 (UTC)
Goto Top
Hallo Uwe,

Nochmal danke für die tolle Antwort. Es hat wunderbar funktioniert!!! Ich habe das Bild im Code gut formatieren können und alles hat wunderbar geklappt.

Es gibt jetzt nur ein Problem und ich hoff du kannst mir helfen. Ich habe in das Dokument noch ein paar Steuerelemente in die Vorlage eingebaut. Ich habe dann das Dokument so geschützt, das man die Steuerelemente gut bedienen konnte.

Nur funktioniert aufgrund des Schutzes, dass Makro nichtmehr. face-sad

Wenn ich auf Debuggen klicke hebt es mir die Zeile 12 (shpCanvas.WrapFormat...) gelb hervor.

Hättest du eine Lösung für dieses Problem ?

Danke Danke für die Antwort und Gruss
Josh
Member: colinardo
Solution colinardo Jan 24, 2014 updated at 16:02:34 (UTC)
Goto Top
Hallo Josh,
kein Problem, dazu musst du für das Dokument im Code vor dem Einfügen des Bilder kurzzeitig den Schutz ausschalten und danach wieder einschalten: (Im Code wird jetzt davon ausgegangen das du kein Kennwort für den Schutz angelegt hast)
Sub InsertWebCamImage()

    ' Hier wird der Dokumentenschutz aufgehoben falls er eingeschaltet ist  
    If ActiveDocument.ProtectionType <> wdNoProtection Then
        ActiveDocument.Unprotect
    End If

    strPath = "E:\webcam-bilder"  
    strImage = Dir(strPath & "\*.jpg")  
    If strImage <> "" Then  
        Dim shpCanvas As Shape
        imagePath = strPath & "\" & strImage  
        posLeftMM = 20
        posTopMM = 50
        wCanvas = 200
        hCanvas = 150
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvas), mmToPoint(hCanvas))
        'shpCanvas.WrapFormat.Type = wdWrapSquare  
        shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height
        'Bild im Verzeichnis löschen  
        Kill imagePath
    End If

    ' Hier wird der Schutz wieder eingeschaltet und nur das Ausfüllen von Formularfeldern erlaubt  
    ActiveDocument.Protect wdAllowOnlyFormFields

End Sub
Grüße Uwe
Member: Mediamatik.Joshua
Mediamatik.Joshua Jan 24, 2014 at 14:43:59 (UTC)
Goto Top
Hallo,

Doch ich musste das Passwort 123 einsetzen.

Bis jetzt sieht mein Code folgendermassen aus:

Private Sub InsertWebCamImage()
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

strPath = "T:\Informatik\Uebungsordner\bilder"
strImage = Dir(strPath & "\*.jpg")
If strImage <> "" Then
Dim shpCanvas As Shape
imagePath = strPath & "\" & strImage
posLeftMM = 120
posTopMM = 40
wCanvasMM = 60
hCanvasMM = 45
Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvasMM), mmToPoint(hCanvasMM))
shpCanvas.WrapFormat.Type = wdWrapFront
shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height
'Bild im Verzeichnis löschen
Kill imagePath
End If
ActiveDocument.Protect wdAllowOnlyFormFields
End Sub

Private Sub Document_New()
InsertWebCamImage
End Sub

Private Function mmToPoint(ByVal length As Double)
pointInMM = 0.352777778
mmToPoint = Round(length / pointInMM, 0)
End Function


> wo muss ich jetzt das PW einschreiben?

Danke für deine Geduld face-smile
Member: colinardo
Solution colinardo Jan 24, 2014 updated at 16:02:31 (UTC)
Goto Top
hier:
ActiveDocument.Unprotect "123"
und hier fürs erneute schützen mit dem selben Password hier:
ActiveDocument.Protect wdAllowOnlyFormFields, Password:="123"
sei dir aber bewusst das wenn einer den Code einsieht das Passwort sehen kann, außer du verpasst dem VBA-Projekt zusätzlich ein Password.
Member: Mediamatik.Joshua
Mediamatik.Joshua Jan 24, 2014 at 15:56:19 (UTC)
Goto Top
Da wird niemand ins VBA-Projekt schauen face-smile Ist auch kein Dokument von strengster Geheimhaltung.

OK !! Ich kann dir garnicht genug danken! Das war eine echte Hilfe!!!

Freundliche Grüsse
Josh
Member: colinardo
Solution colinardo Jan 24, 2014 updated at 16:11:32 (UTC)
Goto Top
Keine Ursache.
Beitrag bitte noch auf gelöst setzen. Merci.

Viel Erfolg weiterhin...
Grüße Uwe
Member: EddyCurrent
EddyCurrent Jun 01, 2017 at 17:17:36 (UTC)
Goto Top
Hallo,
ich stehe momentan vor einem ganz ähnlichen Problem, wie oben beschrieben. Der Code den ihr hier stehen habt funktioniert soweit einwandfrei. Das Problem ist nur, wenn ich weitere Bilder über meinen Button einfüge, werden die alten nur überlappt und die Datei immer größer. Was muss ich machen dass das vorhergehende Bild aus meinem Dokument entfernt wird, bevor ein neues Bild eingefügt wird. Hab leider Null Erfahrung was VBA betrifft und wäre sehr dankbar für eure Hilfe.

Gruß
Member: colinardo
colinardo Jun 02, 2017 updated at 08:02:43 (UTC)
Goto Top
Zitat von @EddyCurrent:

Hallo,
ich stehe momentan vor einem ganz ähnlichen Problem, wie oben beschrieben. Der Code den ihr hier stehen habt funktioniert soweit einwandfrei. Das Problem ist nur, wenn ich weitere Bilder über meinen Button einfüge, werden die alten nur überlappt und die Datei immer größer. Was muss ich machen dass das vorhergehende Bild aus meinem Dokument entfernt wird, bevor ein neues Bild eingefügt wird. Hab leider Null Erfahrung was VBA betrifft und wäre sehr dankbar für eure Hilfe.
Servus @EddyCurrent, willkommen auf Administrator.de.
Das nächste mal kontktiere mich direkt via PM oder mach für sowas einen neuen Thread auf. Fremde Fragen-Threads zu übernehmen sehen wir hier nicht so gerne. Merci.
Private Sub InsertWebCamImage()
    strPath = "A:\images"  
    strImage = Dir(strPath & "\*.jpg")  
    If strImage <> "" Then  
        Dim shpCanvas As Shape
        imagePath = strPath & "\" & strImage  
        posLeftMM = 20
        posTopMM = 50
        wCanvasMM = 200
        hCanvasMM = 150
        For Each shp In ActiveDocument.Shapes
            If shp.Title = "mytag" Then  
                shp.Delete
                Exit For
            End If
        Next
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvasMM), mmToPoint(hCanvasMM))
            shpCanvas.Title = "mytag"  
        shpCanvas.WrapFormat.Type = wdWrapSquare
        shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height
        'Bild im Verzeichnis löschen  
        Kill imagePath
    End If
End Sub
Grüße Uwe
Member: EddyCurrent
EddyCurrent Jun 02, 2017 at 08:26:50 (UTC)
Goto Top
Hey, erstmal danke für die herzliche Begrüßung und natürlich auch für die schnelle Hilfestellung.

Upps, das wusste ich nicht.. Sorry.. Ich werde es beim nächsten mal beherzigen.

Grüße