Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung

Mitglied: Mediamatik.Joshua

Mediamatik.Joshua (Level 1) - Jetzt verbinden

17.01.2014, aktualisiert 24.01.2014, 2516 Aufrufe, 8 Kommentare

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

Mitglied: colinardo
LÖSUNG 17.01.2014, aktualisiert 24.01.2014
Hallo Joshua, lust auf ein Spiel
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:
01.
Private Sub InsertWebCamImage() 
02.
    strPath = "E:\webcam-bilder" 
03.
    strImage = Dir(strPath & "\*.jpg") 
04.
    If strImage <> "" Then 
05.
        Dim shpCanvas As Shape 
06.
        imagePath = strPath & "\" & strImage 
07.
        posLeftMM = 20 
08.
        posTopMM = 50 
09.
        wCanvasMM = 200 
10.
        hCanvasMM = 150 
11.
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvasMM), mmToPoint(hCanvasMM)) 
12.
        shpCanvas.WrapFormat.Type = wdWrapSquare 
13.
        shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height 
14.
        'Bild im Verzeichnis löschen 
15.
        Kill imagePath 
16.
    End If 
17.
End Sub 
18.
 
19.
Private Sub Document_New() 
20.
    InsertWebCamImage 
21.
End Sub 
22.
 
23.
Private Function mmToPoint(ByVal length As Double) 
24.
    pointInMM = 0.352777778 
25.
    mmToPoint = Round(length / pointInMM, 0) 
26.
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
Bitte warten ..
Mitglied: Mediamatik.Joshua
20.01.2014 um 07:51 Uhr
Hallo Uwe,

DANKE DANKE DANKE!! Tolle Antwort!

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
Bitte warten ..
Mitglied: Mediamatik.Joshua
24.01.2014 um 15:20 Uhr
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.

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
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.01.2014, aktualisiert um 17:02 Uhr
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)
01.
Sub InsertWebCamImage() 
02.
 
03.
    ' Hier wird der Dokumentenschutz aufgehoben falls er eingeschaltet ist 
04.
    If ActiveDocument.ProtectionType <> wdNoProtection Then 
05.
        ActiveDocument.Unprotect 
06.
    End If 
07.
 
08.
    strPath = "E:\webcam-bilder" 
09.
    strImage = Dir(strPath & "\*.jpg") 
10.
    If strImage <> "" Then 
11.
        Dim shpCanvas As Shape 
12.
        imagePath = strPath & "\" & strImage 
13.
        posLeftMM = 20 
14.
        posTopMM = 50 
15.
        wCanvas = 200 
16.
        hCanvas = 150 
17.
        Set shpCanvas = ActiveDocument.Shapes.AddCanvas(mmToPoint(posLeftMM), mmToPoint(posTopMM), mmToPoint(wCanvas), mmToPoint(hCanvas)) 
18.
        'shpCanvas.WrapFormat.Type = wdWrapSquare 
19.
        shpCanvas.CanvasItems.AddPicture imagePath, False, True, 0, 0, shpCanvas.Width, shpCanvas.Height 
20.
        'Bild im Verzeichnis löschen 
21.
        Kill imagePath 
22.
    End If 
23.
 
24.
    ' Hier wird der Schutz wieder eingeschaltet und nur das Ausfüllen von Formularfeldern erlaubt 
25.
    ActiveDocument.Protect wdAllowOnlyFormFields 
26.
 
27.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: Mediamatik.Joshua
24.01.2014 um 15:43 Uhr
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
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.01.2014, aktualisiert um 17:02 Uhr
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.
Bitte warten ..
Mitglied: Mediamatik.Joshua
24.01.2014 um 16:56 Uhr
Da wird niemand ins VBA-Projekt schauen Ist auch kein Dokument von strengster Geheimhaltung.

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

Freundliche Grüsse
Josh
Bitte warten ..
Mitglied: colinardo
LÖSUNG 24.01.2014, aktualisiert um 17:11 Uhr
Keine Ursache.
Beitrag bitte noch auf gelöst setzen. Merci.

Viel Erfolg weiterhin...
Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Erkennung und -Abwehr
Spam mit eigener Domain (12)

Frage von NoobOne zum Thema Erkennung und -Abwehr ...