AW: Word anzeigen
07.01.2018 11:24:34
Peter
Hallo Luschi,
besten Dank für Deine Hilfe, anbei mein Code:
Option Explicit
Option Private Module 'damit kann man die Prozeduren nicht per Alt+F8 starten
'interne Word-Konstanten in Excel nachbilden
Const wdOpenFormatAuto As Integer = 0
Const wdFormLetters As Integer = 0
Const wdSendToNewDocument As Integer = 0
Const wdSendToPrinter As Integer = 1
Const wdDefaultFirstRecord As Integer = 1
Const wdDefaultLastRecord As Integer = -16
Const wdMergeSubTypeAccess As Integer = 1
Const wdFirstDataSourceRecord As Integer = -6
Const wdFormatPDF As Integer = 17
Const wdPrintAllDocument As Integer = 0
Const wdFormatXMLDocument As Integer = 12
Const wdToggle As Long = 9999998
'hier geht es los!
Sub Start_SB()
Dim oWrd As Object, oDoc As Object
Dim wb As Workbook, ws As Worksheet
Dim strSheetName As String, xDocV As String, xSql As String
On Error Resume Next
'prüfen, ob Word schon aktiv ist
Set oWrd = GetObject(, "Word.Application")
If oWrd Is Nothing Then
'wenn nicht, dann Word erst malö öffnen
Set oWrd = CreateObject("Word.Application")
End If
On Error GoTo 0
If oWrd Is Nothing Then
MsgBox "Auf diesem Rechner ist M$-Word nicht installiert!", vbSystemModal + 16, "Hinweis. _
Exit Sub
End If
'diese Arbeitsmappe
Set wb = ThisWorkbook
'2. Tabellenblatt
Set ws = wb.Worksheets(2)
strSheetName = ws.Name
'Ort der Word-Vorlage Serie3nbrief auf dem Datenträger
'hier wird davon ausgegangen, das sich Word- & Exceldatei im gleichen Verzeichnis befinden
' xDocV = wb.Path & "\SB_Vorlage.docx"
xDocV = wb.path & "\Serienbrief_Hauptformular_Lehrer_Klassen.docx"
'hierin befinden sich die {MergeField ...} und der sonstige Brieftext
Set oDoc = oWrd.Documents.Add(Template:=xDocV, NewTemplate:=False, DocumentType:=0)
oWrd.Visible = True
'neugeöffnete Datei in Serienbrief-Hauptdokument umwandeln
oDoc.MailMerge.MainDocumentType = wdFormLetters
'Fatenfeld-Auswahl in SQL-Schreibweise
xSql = "SELECT * FROM [Gesamtabrechnung$]"
'Datenquelle hinzufügen
oDoc.MailMerge.OpenDataSource Name:=wb.FullName, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & wb.FullName & _
";Mode=Read;Extended Properties=""Excel 12.0 Macro;HDR=YES;IMEX=1;""", _
SQLStatement:=xSql, SQLStatement1:="", SubType:=wdMergeSubTypeAccess
'Hinweis
'ab Office 2007 sollte der hier angewendete Treiber benutzt werden
'bei *.xlsm als Datenquelle
'";Extended Properties=""Excel 12.0 Macro; HDR=YES; IMEX=1"""
'bei *.xlsx als Datenquelle
'";Extended Properties=""Excel 12.0 Xml; HDR=YES; IMEX=1"""
'alter Daten-Treiber - Bitte nur bei Zugriff auf *.xls-Dateien (bid Excel 2003) _
benutzen
'"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=user;Data Source=" & wb. _
FullName & "Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB" _
', SQLStatement:="SELECT * FROM `2017$`", SQLStatement1:="", SubType:= _
'wdMergeSubTypeAccess
'Umschalten auf Datenansicht
oDoc.MailMerge.ViewMailMergeFieldCodes = wdToggle
'beide Objektvariablen für Word ins Nirvana schicken
Set oDoc = Nothing
Set oWrd = Nothing
'Das fertige Word-SB-Hauptdockument ist noch geöffnet aber nicht gespeichert!
' MsgBox "F e r t i g!", vbSystemModal + 64, "Hinweis...'"
'Achtung!!! Excel darf nicht geschlossen werden, da sonst die Daten in Word fehlen
'Excel-Datei und Excel schliessen
' Call Excel_beenden_mit_Prüfung
End Sub
Was muss ich bitte einfügen, damit Word ausgewählt und angezeigt wird?!
Zusatzfrage:
Wenn dann Word wieder geschlossen wird, soll UF angezeigt werden an geöffneter Excel-Datei.