Hallo zusammen,
ich habe ein Problem mit einem VBA Makro in Word.
Das WordDokument soll ein Universeller Serienbrief für mehrere Bearbeiter werden. Dementsprechend gibt es verschiedene (user-abhängige) Dateien die er öffnen soll. Das habe ich per If file there realisiert
Grundsätzlich tut er das auch. Allerdings ist ein Problem:
Wenn User1 die Worddatei öffnet und er dierekt die User1 datasource findet ist alles ok- es kommt ein SQL Warning Fenster was man mit Ja bestätigt.
Jetzt löscht User1 seine Datasource und User 2 legt seine rein und öffnet Word. Obwohl die IfAbfrage eigentlich prüfen müsste welche Datasource es öffnen soll erscheint die sql warning mit /file/user1 . Klickt man hier wieder Ja kommt natürlich die Meldung "not found" - klickt man nein macht er die If Abfragen korrekt weiter und öffnet die richtige datei.
Warum erscheint die sql warnung (und der versuch zu öffnen) immer mit der datei die als letztes funktioniert hat(das muss nicht die erste sein die im Makro vorkommt sondern ist wirklich die die er als letztes geöffnet hat.? Und wichtiger: Wie kann ich das unterdrücken damit er korrekt nachschaut was er wirklich öffnen soll?
Hier ist der Code:
Sub SerienbriefeErstellen()
'
'
With ActiveDocument.MailMerge
If FileThere("V:\datei\user0.dat") Then
.OpenDataSource Name:="V:\datei\user0.datt", LinktoSource:=False, AddToRecentFiles:=False
Else
If FileThere("V:\datei\user1.dat") Then
.OpenDataSource Name:="V:\datei\user1.dat", LinktoSource:=False, AddToRecentFiles:=False
Else
If FileThere("V:\datei\user2.dat") Then
.OpenDataSource Name:="V:\datei\user2.dat", LinktoSource:=False, AddToRecentFiles:=False
Else
If FileThere("V:\datei\user3.dat") Then
.OpenDataSource Name:="V:\datei\user3.datt", LinktoSource:=False, AddToRecentFiles:=False
Else
MsgBox "Bitte Quelle ablegen"
End If
End If
End If
End If
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
.Execute
End With
End Sub
|