Hallo Wissende,
wenn du diese Anfrage erhälst obwohl du nix von Word Vba kennst dann schäme ich mich fremd für das w-w-w Team. Denn die haben dich als Experten für meine Anfrage ausgewählt, nicht ich.
Wie kann ich User eines Dokuments dazu zwingen daß sie es mit aktivierten Makros öffnen? In Excel-Vba weiß ich wie das geht, von Word habe ich keine Ahnung.
Recherche zu dem Thema im I-Net ergab bislang nix:frowning:
Eigene Bastelversuche führten u.a. zu diesem Dokument:
http://www.file-upload.net/download-8316703/WortMitM…
(Kennwort für den Vbacode ist „abc“, desgleichen für .Protect)
Rein prinzipiell funktionert das ja. Wenn also der User das Dokument ohne Makros öffnet sieht er den gelben Hinweis und kann im Dokument nix machen.
Mit aktivierten Makros sieht er den gelben Hinweis nicht und kann im Dokument was ändern.
Aber leider *seufz* kann der User das leicht aushebeln. Dann wenn die Abfrage kommt ob Änderungen gespeichert werden sollen. Dann läuft da alles schief wenn er „Nein“ auswählt. Denn dann ist auch der gelbe Hinweistext beim nächsten Öffnen nicht da.
Und, die Abfrage ob Änderungen gespeichert werden sollen muß ja erhalten bleiben. Ansonsten könnte ich ja ein .Save einbauen, aber das ist ja ggfs. nicht erwünscht.
Ich bin für jeden Hinweis, Code, egal was, dankkbar der mir weiterhilft.
Für’s Archiv, da file-upload-Links nach einiger Zeit nicht mehr funktionieren nachstehend die Codes.
Danke ^ Gruß
Reinhard
Im Modul ThisDocument:
Option Explicit
Private Sub Document\_Close()
With ThisDocument
'.Saved
.Shapes("Makrohinweis").Visible = True
.Protect wdAllowOnlyFormFields, , "abc"
End With
End Sub
Private Sub Document\_Open()
Dim S As Shape, Vorh As Boolean
For Each S In ThisDocument.Shapes
If S.Name = "Makrohinweis" Then Vorh = True
Next S
With ThisDocument
On Error Resume Next
.Unprotect "abc"
On Error GoTo 0
If Not Vorh Then Call Einmalig
.Shapes("Makrohinweis").Visible = False
.TrackRevisions = True
.PrintRevisions = False
.ShowRevisions = False
.Save
End With
End Sub
In einem Standardmodul:
Option Explicit
Sub Einmalig()
Dim S As Shape
For Each S In ThisDocument.Shapes
If S.Name = "Makrohinweis" Then S.Delete
Next S
Set S = ThisDocument.Shapes.AddShape(msoShapeHorizontalScroll, 175.05, 90.2, \_
240#, 135#)
With S
.Name = "Makrohinweis"
.TextFrame.TextRange.Text = vbLf & "Öffnen Sie dieses Dokument bitte" \_
& vbLf & "MIT aktivierten Makros."
With .TextFrame.TextRange.Font
.Name = "Times New Roman"
.Size = 14
.Bold = True
.UnderlineColor = wdColorAutomatic
End With
.Fill.ForeColor.RGB = RGB(255, 255, 0)
End With
End Sub