Excel to Word - Schutz

Bild

Betrifft: Excel to Word - Schutz
von: Robin H.
Geschrieben am: 30.07.2015 14:09:27

Schönen Guten Tag,
habe mich heute hingesetzt und wollte von Excel nach Word importieren um einen Teil meiner Arbeit fix abzuwickeln, funktioniert auch zu 99 %, nur dieser Schutz will einfach nicht wieder rein.
Hier der Code:

Sub Test()
    Dim a1, a2, a3, a4, a5, a6 As String
    Dim strFileName, Pfad, Datei As String
    Dim objWDApp As Object
    a1 = Range("B1").Value
    strFileName = ThisWorkbook.Path & "\" & a1& ".dotx"
    If Dir(strFileName) <> "" Then
        
        With Sheet1
            a2 = .Range("B2")
            a3 = .Range("B3")
            a4 = .Range("B4")
            a5 = .Range("B5")
            a6 = .Range("B7")
        End With
        
        If ActiveSheet.Range("B6") = "xxx" Then
            VerGF = "zzz: " & a5
        Else
            VerGF = "yyy: " & a5
        End If
        
        If objWDApp Is Nothing Then Set objWDApp = CreateObject("Word.Application")
   
        With objWDApp
            .Visible = True
            Set objWDDoc = .Documents.Open(strFileName)
            
            .ActiveDocument.Unprotect Password:="test"
            
            .ActiveDocument.Bookmarks("a2").Range = aa2
            .ActiveDocument.Bookmarks("a2").Range = aa2
            .ActiveDocument.Bookmarks("a2").Range = aa2
            .ActiveDocument.Bookmarks("a3").Range = aa3
            .ActiveDocument.Bookmarks("a3").Range = aa3
            .ActiveDocument.Bookmarks("a3").Range = aa3
            .ActiveDocument.Bookmarks("a4").Range = aa4
            .ActiveDocument.Bookmarks("a4").Range = aa4
            .ActiveDocument.Bookmarks("a4").Range = aa4
            .ActiveDocument.Bookmarks("a5").Range = aa5
            .ActiveDocument.Bookmarks("a5").Range = aa5
            .ActiveDocument.Bookmarks("a6").Range = aa6
            
            .ActiveDocument.Protect Password:="test", Type:=wdAllowOnlyFormFields
            
            Pfad = "C:\Users\Robin\Desktop\"
            Datei = a2 & ".dotx"
            .ActiveDocument.SaveAs Pfad & Datei
            
            .ActiveDocument.Close
            objWDApp.Quit
            
        End With
    End If
End Sub
Habe mein Problem einmal fett markiert.
Es gibt keine Fehlermeldung, nichts, er fährt drüber und ignoriert es.
Beim Schutz aufheben (paar Zeilen darüber), hat er kein Problem, führt das aus und läuft wie geschmiert.
Ich hoffe jemand weis wo der (hoffentlich) "kleine" Fehler sich verbirgt.
Greetings,
Robin H.

Bild

Betrifft: AW: Excel to Word - Schutz
von: JoWE
Geschrieben am: 30.07.2015 14:41:49
Hallo Robin,
soweit ich weiß, ist beim Schutz setzen zwingend die Art des Schutzes anzugeben:
z.B. Schutz setzen + nur Lesen:
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyReading, Password:="test"
End If
Gruß
Jochen

Bild

Betrifft: Excel - Word - Konstanten...
von: Case
Geschrieben am: 30.07.2015 14:44:34
Hallo, :-)
das ist klar. Du arbeitest mit Late Binding nutzt aber Wordkonstanten die ohne einbinden der entsprechenden Library nicht klappen. :-)
Also entweder im Deklarationsbereich:

Const wdAllowOnlyFormFields = 2
Oder im Code:
.ActiveDocument.Protect Password:="test", Type:=2
Servus
Case


Bild

Betrifft: AW: Excel - Word - Konstanten...
von: Robin H.
Geschrieben am: 30.07.2015 14:55:56
@Jochen, danke für den Versuch, aber ich wollte schon das man "Formular Felder" ausfüllen kann.
@Case, da hat sich der "kleine" Fehler eingeschmuggelt, bei soviel basteln und probieren, vielen Dank für die schnelle Erläuterung & Rettung.
Greetings, Robin H.

Bild

Betrifft: AW: Excel - Word - Konstanten...
von: JoWE
Geschrieben am: 30.07.2015 15:26:05
Hi,
danke für die Rückmeldung.
Entschuldige dass ich Dir keine 100%-Lösung anbot. Ich war bei Level "VBA gut" sicher, Du wärst schlau genug und in der Lage, den Schutztyp in meinem Beispiel selbständig ersetzen zu können.
Gruß
Jochen

Bild

Betrifft: AW: Excel - Word - Konstanten...
von: Robin H.
Geschrieben am: 30.07.2015 15:37:06
@Jochen, nun ja dein Code war genau wie meiner nur mit einer If-Abfrage bestückt welche ich schon einmal versucht hatte, vor diesem Beitrag, um zu schauen, ob er es denn fehlerlos ausführt.
Des weiteren hast du nichts anderes gemacht, als mein Code umgedreht und "FormFields" mit "OnlyRead" ersetzt.
Kein Grund gleich die Intelligenz zu hinterfragen, nimm die Antwort von Case mit auf den Weg, denn deine war leider genauso Falsch wie meine.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel to Word - Schutz"