Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access Serienbrief





Frage

Vielen Dank für die schnelle Antwort. Das ging schnell. Ich habe mein Problem lösen können. Aber ein Punkt ist noch offen. Wie kann ich zum Schluss mit Access nach dem ich mein Serienbrief mit Hilfe meiner "Vorlage.dot" erstellt hab, die Worddatei "Vorlage.dot" schließen? Die Datei bleibt geöffnet, die soll dann nachher keiner Ändern können. Noch ne andere Frage. Wenn ihr Lust habt drauf zu Antworten. Macht ihr das als ein art Hobby? Die Fragen zu beantworten. Habt ihr Hauptberuflich mit Programmieren zu tun? Danke im vorraus. Gruß APS

Antwort 1 von Marie

Public Function TerminateWord()

' Word radikal beenden ohne speichern und ohne Speicherndialog
On Error GoTo Err_TerminateWord

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Any, _
ByVal lpWindowName As Any) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim lpClassName As String
Dim iHwnd As Long
Dim iReturn As Long
Const WM_QUIT = &H12

lpClassName = "OpusApp"
iHwnd = FindWindow(lpClassName, 0&)

If iHwnd Then
iReturn = PostMessage(iHwnd, WM_QUIT, 0&, 0&)
End If

Exit_TerminateWord:
Exit Function

Err_TerminateWord:
MsgBox "Fehlernummer: " & Err.Number & vbCrLf & " Fehlerbeschreibung: " & Err.Description, _
vbCritical, "Fehler in Public Function TerminateWord"
Resume Exit_TerminateWord

End Function

Antwort 2 von Marie

oder bissel weniger radikal:


Public Function fkt_CloseWord()

' Word beenden mit Speicherndialog
On Error GoTo Err_fkt_CloseWord

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As Any, _
ByVal lpWindowName As Any) As Integer
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, lParam As Any) As Long
Const WM_CLOSE = &H10

Dim ret As Integer
ret = FindWindow("OpusApp", 0&)
ret = SendMessage(ret, WM_CLOSE, 0&, 0&)

Exit_fkt_CloseWord:
Exit Function

Err_fkt_CloseWord:
MsgBox "Fehlernummer: " & Err.Number & vbCrLf & " Fehlerbeschreibung: " & Err.Description, _
vbCritical, "Fehler in Public Function fkt_CloseWord"
Resume Exit_fkt_CloseWord

End Function

Antwort 3 von erik

Hallo APS,

zum Schließen des Dokuments brauchst du nur diese Zeile:

Application.Documents("Vorlage.dot").Close SaveChanges:=wdDoNotSaveChanges


Bei deinen Öffnungsversuchen scheinst du die Open-Methode zu verwenden. Das kannst du machen, wenn du normale Dokumente (*.doc) öffnen willst. Eine Dokumentvorlage (*.dot) solltest du stattdessen auf dem dafür vorgesehenen Weg öffnen, dann läufst du auch nicht Gefahr, dass das Original geändert werden kann.

Die folgende Zeile entspricht im Prinzip dem Menüaufruf "Datei", "Neu":

Application.Documents.Add Template:="C:\MeinPfad\Vorlage.dot"


bzw.

Dim doc As Document
Set doc = Application.Documents.Add(Template:="C:\MeinPfad\Vorlage.dot")


Gruß
erik