Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Geschützte Ansicht von Word aus Excel umgehen

Geschützte Ansicht von Word aus Excel umgehen
02.09.2014 14:24:16
Word
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geschützte Ansicht von Word aus Excel umgehen
02.09.2014 15:32:28
Word
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é

AW: Geschützte Ansicht von Word aus Excel umgehen
02.09.2014 15:44:34
Word
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

AW: Geschützte Ansicht von Word aus Excel umgehen
02.09.2014 16:06:06
Word
Das muss ich mal probieren. Aber heute nicht mehr. Ich schau es mir morgen früh mal an.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige