Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Geschützte Ansicht von Word aus Excel umgehen

Betrifft: Geschützte Ansicht von Word aus Excel umgehen von: Eric Laubmeyer
Geschrieben am: 02.09.2014 14:24:16

Hallo zusammen,

ich hänge an der Übergabe von Excel an Word und komme mit der netten "Geschützten Ansicht" nicht weiter und hoffe hier nun auf Hilfe.

Ausgangslage:
Ich schreibe gerade an einem Excelfile, dass Daten aus einer Teilnehmerliste und einer Schulungsliste zusammenführt um daraus dann Zertifikate zu drucken. Die Zertifikate liegen als .dotx vor. Soweit alles paletti, sofern alles im geschützten Bereich passiert läuft das alles rund.
Da ich dies für mein Team programmieren, liegt der spätere Produktionsteil auf einem Netzlaufwerk. Jetzt gibt es, wie ich weiß, mehrere Möglichkeiten: In Word dieses Verhalten über Optionen ausschalten oder den Ordner vertrauenswürdig machen. Das ist aber in der Masse die letzte Option im Moment auf jeglichem Rechner meiner Kollegen anzuwenden. Ich würde gerne dies über VBA abfangen. Genauer gesagt, beim Öffnen des dotx-Files. Das Ding ist jetzt nur, dass ich aus den Beiträgen im Netz nicht schlau geworden bin, denn alle Versuche mit ActiveProtectedViewWindow bzw. ProtectedViewWindow sind fehlgeschlagen. Was ich nicht herausfinden konnte, in welchen Reihenfolge und an welches Objekt ich das hängen muss. Vielleicht hat hier jemand mehr erfahren damit.

Der Code sieht wie folgt aus:

Private Function Serienbrief(sFileXls, sFileTab, Dozentausweis)
    'Word-Objekt erzeugen
    Call setReferenceForWord

    Dim WinWord, WinDoc As Object, docSerienbrief As Object
    Dim sFile, conStr As String
    
    'Wie heißt die Vorlagendatei?
    sFile = ThisWorkbook.Path & "\" & Tabelle3.Cells(rowKurs, 7)
    conStr = Trim(CStr("Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" &  _
sFileXls & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database=""""; _
Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database "))
      
    With oWord_App
        .Activate 'Word nach vorne setzen
        .
        
        'Vorlagedatei öffnen
        Set WinDoc = .Documents.Add(sFile)
               
        'Die Anzeige für die Dozenten auf der Teilnehmerbescheinigung anpassen
        .ActiveDocument.Bookmarks("Dozentausweis").Range.Text = Dozentausweis
        
        With WinDoc
            With .MailMerge
                .MainDocumentType = wdFormLetters
                'Datenquelle öffnen
                .OpenDataSource sFileXls, ConfirmConversions:=False, ReadOnly:=False, _
                    LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
                    PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:="",  _
 _
_
                    Revert:=False, Format:=wdOpenFormatAuto, Connection:=conStr, _
                    SQLStatement:="SELECT * FROM `" & sFileTab & "$`", SQLStatement1:="", _
                    SubType:=wdMergeSubTypeAccess
                .ViewMailMergeFieldCodes = wdToggle

                'Serienbrief mit allen Daten in neuem Dokument erstellen
                .Destination = wdSendToNewDocument
                .SuppressBlankLines = True
                
                With .DataSource
                    .FirstRecord = wdDefaultFirstRecord
                    .LastRecord = wdDefaultLastRecord
                End With
                
                .Execute Pause:=False
                'Neues Dokument als Objekt aufnehmen
                Set docSerienbrief = oWord_App.ActiveDocument
                
                'Datenquelle wieder schliessen
                .DataSource.Close
            End With

            'Vorlagedatei wieder schliessen
            .Close Savechanges:=False
        End With
        
        'Dem Nutzer die Briefe en block darbieten
        docSerienbrief.Application.WindowState = wdWindowStateMaximize
    End With
        
    'Alle Objekte zurücksetzen
    Set docSerienbrief = Nothing
    Set WinDoc = Nothing
    Set oWord_App = Nothing
    
End Function

Private Sub setReferenceForWord()
'Setzen der Reference für die WORD OLE- / DDE-Verbindung
'Quelle: http://www.online- _
excel.de/excel/singsel_vba.php?f=41
    Dim Word_Connect, bWordVorhanden As Boolean
    
    Word_Connect = True
    
    On Error GoTo OpenError
    Set oWord_App = GetObject(Class:="Word.Application") ' Gucken ob Word offen ist
    bWordVorhanden = True
 
    On Error GoTo 0 ' In Zukunft wieder in den Debugger laufen
    
    ' Hier bei Bedarf prüfen ob Word sichtbar ist
    Exit Sub

OpenError: ' Word war nicht offen, also dann bitte öffnen
    On Error GoTo CreateError
    Set oWord_App = CreateObject(Class:="Word.Application")
    oWord_App.Visible = True 
    bWordVorhanden = False
 
    Resume Next
    Exit Sub

CreateError:
    'Word ist nicht vorhanden
    MsgBox "Kein Word vorhanden"
    Word_Connect = False
End Sub
Kann ich das für die Session beim Aufruf der Word-App deaktivieren?

Danke und Gruß
Eric

  

Betrifft: AW: Geschützte Ansicht von Word aus Excel umgehen von: mumpel
Geschrieben am: 02.09.2014 15:32:28

Hallo!

Die "Geschützte Ansicht" lässt sich nicht per Code umgehen (sonst wäre sie sinnlos, was Angreifer ausnutzen könnten). Das müsstest Du im Sicherheitscenter von Word einstellen.

Gruß, René


  

Betrifft: AW: Geschützte Ansicht von Word aus Excel umgehen von: Eric Laubmeyer
Geschrieben am: 02.09.2014 15:44:34

Hallo René,

echt jetzt :(!

So eine Sch... öne Funktion! Warum gibt es dann entsprechende Befehle zum Thema .edit und .close für ProtectedViewWindow. Das verstehe ich dann nicht so ganz.

Gruß
Eric


  

Betrifft: AW: Geschützte Ansicht von Word aus Excel umgehen von: mumpel
Geschrieben am: 02.09.2014 16:06:06

Das muss ich mal probieren. Aber heute nicht mehr. Ich schau es mir morgen früh mal an.


  

Betrifft: AW: Geschützte Ansicht von Word aus Excel umgehen von: Eric Laubmeyer
Geschrieben am: 02.09.2014 16:28:39

Hallo René,

kein Thema! Hier der Artikel aus der Datenbank:
http://msdn.microsoft.com/en-us/library/ff846320%28v=office.14%29.aspx

Gruß und Danke
Eric


 

Beiträge aus den Excel-Beispielen zum Thema "Geschützte Ansicht von Word aus Excel umgehen"