Ich möchte gerne ein Formular erstellen, bei dem, wenn „Dokument schützen“ aktiviert worden ist, es jedem Verwender möglich ist ein Foto einzufügen (z.B. Bild von sich selbst), nachdem einfügen des Bildes soll der Button oder der Hinweid entfallen. Einige Sachen hab ich schon probiert, aber es klappt einfach nicht. Kann mir jemand weiter helfen?
Ich moechte gerne eine Dokumentenvorlage mit Word (Word 2002 SP3)
erstellen, die nachdem sie geschuetzt wird dem User trotzdem die
Moeglichkeit gibt ein Bild an einer bestimmten Stelle einzufuegen.
Bisher waren alle Versuche vergeblich, doch das muesste gehen mit
Insert->Fields… (Sorry, hab nur die englische Version) und/oder
Macros.
Es ist an sich ein ganz einfaches Artikel-Detail-Blatt, auf dem oben
rechts das Artikel-Bild vom User eingefuegt werden soll. Dies soll
natuerlich, falls groesser, auf die Maximal-Groesse geschrumpft
werden. Die restlichen Details sind Texte und Zahlen, die per Hand in
Formular-Felder eingetragen werden sollen. Wie gesagt, das Dokument
ist aber geschuetzt, um unnoetigen Veraenderungen vorzubeugen.
Das Einfuegen des Bildes kann dann entweder ueber Copy&:stuck_out_tongue_winking_eye:aste oder als
klassisches Einfuegen funktionieren. Oder sogar noch anders?! Ist an
sich egal.
Also, in Kurzform:
will eine .dot machen
in der soll ein Feld fuer ein Bild reserviert werden
.dot wird per Formular-Funktionen geschuetzt
User soll Bild in die .doc einfuegen koennen (copy&paste oder ueber Datei-Manager hin „huepfen“)
Bild soll, wenn groesser als das Feld in Proportion geschrumpft werden
Entweder vor und nach dem Bereich, wo ein Bild eingefügt werden soll, einen Abschnittswechsel - fortlaufend - einfügen und über Extras - Dokument schützen - Formulare - hier den Abschnitt mit Bild vom Schutz ausnehmen.
Mit Makro
Public Sub ProtectedInsertPicture()
Dim ilsPicture As InlineShape
Dim strFileName As String
Dim sngRatio As Single
Const max_width = 216 ’ = 3 inches (in points)
’ temporarily unprotect
ActiveDocument.Unprotect
’ show Insert Picture dialog
With Dialogs(wdDialogInsertPicture)
If .Display = 0 Then Exit Sub
strFileName = .Name
End With
’ limit size of picture to max_width (optional)
With ilsPicture
If .Width > max_width Then
sngRatio = CSng(max_width) / .Width
.Width = max_width
.Height = .Height * sngRatio
End If
End With
’ reprotect, keeping form field contents intact
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
’ show Insert Picture dialog
With Dialogs(wdDialogInsertPicture)
If .Display = 0 Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True
Exit Sub
End If
strFileName = .Name
End With
End Sub
öffne mit Alt+F11 den Visual Basic Editor und klicke links bei Projekt Deine Formularvorlage an - dann Menue Einfügen - Modul - dann im rechten Fenster obiges Makro reinkopieren und schliessen. Dann im Formular (Vorlage) einen Makrobutton einfügen - Einfügen - Feld - Makrobutton - anklicken und in die Zeile hinter Macrobutton einen Text einfügen, den der Benutzer sehen soll z.B. („hier klicken und Bild einfügen“ - dann auf Optionen klicken - das Makro mit Namen ProtectedInsertPicture suchen - anklicken - Hinzufügen - ok. Im geschützten Formular kann der Benutzer nun die Aufforderung anklicken und ein Bild einfügen, danach ist das Dokument wieder geschützt.
das sieht bei mir schon sehr gut aus, dennoch habe ich zwei Probleme:
wenn das Bild eingefügt wird, dann kommt die Meldung
==> Laufzeitfehler 4605
Dieser Befehl ist nicht verfügbar
wenn ich dann aud Debuggen klicke, kommt eine gelb hinterlegte Schrift: With Dialogs(wdDialogInsertPicture)
Da stimmt etwas nicht.
Und wie und wo kann ich das Makro erweitern, das das bild geändert werden kann und alle bilder die gleiche größe haben?
Public Sub ProtectedInsertPicture()
Dim ilsPicture As InlineShape
Dim strFileName As String
Dim sngRatio As Single
Const max_width = 216 ’ = 3 inches (in points)
’ temporarily unprotect
ActiveDocument.Unprotect
’ show Insert Picture dialog
With Dialogs(wdDialogInsertPicture)
If .Display = 0 Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, _
NoReset:=True
Exit Sub
End If
strFileName = .Name
End With
’ limit size of picture to max_width (optional)
With ilsPicture
If .Width > max_width Then
sngRatio = CSng(max_width) / .Width
.Width = max_width
.Height = .Height * sngRatio
End If
End With
’ reprotect, keeping form field contents intact
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, _
NoReset:=True
End Sub
Fehler von mir beim kopieren - nimm bitte das Macro (ist von Jay Freedman Microsoft Word MVP)
Hey Lisa, du hilfst mir echt gut, aber wenn ich so einen Positionsrahmen setze, dann passt er das Bild in der Breite an, aber nicht in der Länge. Kann man in das Makro nicht eine einheitliche Größe definieren. (Pixel mal Pixel) ??
Gruß Xadi