Word: User zur Makroaktivierung "zwingen"
22.11.2013 15:31:25
Reinhard
in Excel kann ich ja Blätter ausblenden sodaß sie ohne Vba nicht mehr sichtbar werden.
Um die Blätter zu sehen muß der User Makros zulassen beim Start.
Auf welchem Wege kann man das auch in Word bewerkstelligen?
Im I-net fand ich bislang nichts dazu.
Eigene Basteleien führten u.a. dazu:
http://www.file-upload.net/download-8316703/WortMitMakroZwang2.doc.html
(erstellt in Word 2000)
Nachstehend ist der dazugehörige Code der Dok.
Bei "nur" öffnen und Schließen klappt ja meine Idee.
Öffnet der User ohne Makros, so kann er in der Doc nix machen und sieht nur den geleben Hinweistext auf Makro aktivieren beim Start.
öffnet er mit aktivierten Makros so kann er das Dokument bearbeiten wie er will.
Aber schon je nach Antwort bei der Abfrage beim Schließen: "Änderungen speichern ja/nein, kann er meine Idee locker aushebeln :-(
Seht, kennt ihr Lösungsmöglichkeiten?
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