Aus Access Wordvorlage aufrufen und abspeichern

hallo,
habe immer noch das Problem, dass es nicht 100% funktioniert. Bitte um Hilfe !

In Access sind Schadensfälle abgelegt. Zu jedem Schadenfall kann es, muss aber nicht sein ein Wordvorlage geben. Aus Access rufe ich Word auf, es soll geprüft werden, ob schon eine Wordvorlage existiert. Das Worddokument wir unter einer Schadensnummer abgespeichert (z.B. d:\ablage\intern\13-123456). Gibt es schon ein Dokument mit der Schadensnummer, dann soll das Dokument geöffnet werden. Gibt es kein Dokument, soll eine Vorlage (C:\forms\Vor_Interne_Vermerke.doc) geöffnet werden, und unter der Schadensnummer unter d:\ablage\intern\13-12345678 abgespeichert werden.

13 ist das Jahr, „-“ dann Schadennummer

Code:
Private Sub Interne_Vermerke_Click()
On Error GoTo handleErr
'Auf Word Formular Inter Vermerke zugreifen
Dim VarSchadenNr As String
Dim doctem As Word.Document
Dim VarJahr As String
Dim Interne_Vermerke As String
Dim objWord As Object

Set objWord = CreateObject(„Word.Application“)
If Dir(„D:\Ablage\Intern“ & Me.Jahr & „-“ & Me.SchadenNr & „.doc“) = „“ Then
Object.Documents.Add Template:=„d:\ablage\intern“ & Me.Jahr & „-“ & Me.SchadenNr
objekt.Visible = True
End If
With objWord
.Documents.Open „C:\forms\Vor_Interne_Vermerke.doc“
.ChangeFileOpenDirectory „D:\Ablage\Intern“ & VarSchadenNr
.ActiveDocument.SaveAs „D:\Ablage\Intern“ & Me.Jahr & „-“ & Me.SchadenNr

.Visible = True
.ActiveDocument.Bookmarks(„Jahr“).Select

.Selection.Text = (CStr(Form!Jahr))
.ActiveDocument.Bookmarks(„SchadenNr“).Select
.Selection.Text = (CStr(Form!SchadenNr))
.ActiveDocument.Bookmarks(Interne_Vermerke).Select

'das saven an dieser stelle nicht vergessen!!!
.ActiveDocument.SaveAs „D:\Ablage\Intern“ & Me.Jahr & „-“ & Me.SchadenNr
.Bookmarks(„Jahr“).Select
.Selection.Text = (CStr(Form!Jahr))
.Bookmarks(„SchadenNr“).Select
.Selection.Text = (CStr(Form!SchadenNr))
’ .SaveAs Filename:=""

'oder im Worddokument saven

End With
Set WordObj = Nothing
handleErr:
Beep
Select Case err.Number
Case 75
Resume Next
Case 53
Case Else
MsgBox "Err " & err.Number & ": " & err.Description, vbCritical, „Formular“
End Select
End Sub

Ich kann Dir leider nicht weiterhelfen.Thomas

Ich kann den Fehler leider nicht entdecken.

Hallo,

so gut kenne ich mich nicht aus mit der Dateiverwaltung unter Access, aber in meiner Literatur steht die Funktion FileExists() mit der man die Existenz einer Datei überprüfen kann.
Syntax:

if objWord.FileExists(„Pfad\Dateiname.doc“) = True

Vielleicht probierst du diese Funktion mal aus?

Viele Gruesse

hy,
so wie das jetzt aussieht funktioniert das garnicht!
Du musst bei den Variablen und objekten mehr aufpassen das du immer das richtige schreibst!!! am besten ganz oben option explicit angeben dann werden solche fehler erkannt.

ich hab das ganze mal ein bischen „entwirrt“!

Private Sub Interne_Vermerke_Click()
On Error GoTo handleErr
'Auf Word Formular Inter Vermerke zugreifen
Dim VarSchadenNr As String
VarSchadenNr = Me.schadennummer
Dim VarJahr As String
VarJahr = me.jahr
Dim Interne_Vermerke As String
Dim objWord As Object

Set objWord = CreateObject(„Word.Application“)
If Dir(„D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr & „.doc“) = „“ Then
'was soll das add template???
'objWord.Documents.Add Template:=„d:\ablage\intern“ & Me.Jahr & „-“ & Me.SchadenNr
'wenn keine datei da ist das muster öffnen und an entsprechende Stelle verschieben
With objWord
'oeffnen muster
.Documents.Open „C:\Forms\Vor_Interne_Vermerke.doc“
'verschieben nach
.ActiveDocument.SaveAs „D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr & „.doc“ 'immer mit Dateierweiterung!
'sichtbar
.Visible = True
'end with sonst funktioniert das else nicht
End With
Else
With objWord
'oeffnen
.Documents.Open „D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr & „.doc“
'sichtbar
.Visible = True
End With
End If
With objWord
'die Bookmarks müssen im Muster vorhanden sein! sonst gibt es Fehlermeldungen!
'wenn es möglich ist schadennummer, jahr, … erst in variablen vom Typ String ablegen und dann in die bookmarks übertragen,
'das erlaubt es zu ueberpruefen ob fehler im Inhalt auftreten.
.ActiveDocument.Bookmarks(„Jahr“).Select
.Selection.Text = (CStr(Form!Jahr))
.ActiveDocument.Bookmarks(„SchadenNr“).Select
.Selection.Text = (CStr(Form!SchadenNr))
.ActiveDocument.Bookmarks(Interne_Vermerke).Select
.Bookmarks(„Jahr“).Select
.Selection.Text = (CStr(Form!Jahr))

‚‘ .SaveAs Filename:=""
.ActiveDocument.SaveAs „D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr & „.doc“ 'immer mit Dateierweiterung!
''oder im Worddokument saven

End With

exit_interne_Vermerke:
Set objWord = Nothing
Exit Sub
handleErr:
Beep
'Select Case Err.Number
'Case 75 ? 'access denied
'Resume Next ?
'Case 53 ? 'file not found
'Case Else
MsgBox "Err " & Err.Number & ": " & Err.Description, vbCritical, „Formular“
'End Select
GoTo exit_interne_Vermerke:
End Sub

mfg frank

Hallo Jürgen,

wo liegt genau das Problem bei deiner Anwendung?
Leider hast du das in deiner Mitteilung nicht geschrieben.

VG
Özhan

Hallo auch.
Was genau funktioniert denn nicht?

Hi Frank,

vielen vielen dank, ich habe sooft rumprobiert, dass ich den Überblick verloren hatte.

Also danke noch einmal.
Ich habe aber noch ein kleines Problem, vielleicht hast Du auch hierzu eine Lösung oder Vorschlag.

Beim Öffnen der Vorlage wird in die erste zeile die Schadensnummer gedruckt.
Wenn ich jetzt die Wordvorlage wieder öffne, schreib er wieder die schadensnummer, und zwar dahinter.
bei jedem Öffnen schreibt er die Schadensnummer daran.
Kann ich es so gestalten, dass er einmalig die Schadensnummer schreibt, oder was gibt es sonst noch für eine Möglichkeit.
Vielleicht kannst Du mir noch einmal helfen.
Gruss Jürgen

Hi Jürgen,

wenn in der Zeile
If Dir(„D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr &
„.doc“) = „“ Then
erkannt wird ob die Datei schon vorhanden ist oder nicht kann man eine Variable vom typ boolean setzen.
also ganz am anfang des SUB eine Variable deklarieren.

dim Bol_erkannt as boolean

sofort initialisieren

Bol_erkannt = True

Dann hinter
If Dir(„D:\Ablage\Intern“ & VarJahr & „-“ & VarSchadenNr &
„.doc“) = „“ Then:

Bol_erkannt = false

dadurch kann man beim schreiben in die textmarken bestimmen wann was geschrieben wird.

if bol_erkannt = false then
objWord.ActiveDocument.Bookmarks(„SchadenNr“).Select
objWord.Selection.Text = (CStr(Form!SchadenNr))
end if

und nicht vergessen wenn du mit with und endwith arbeitest musst du das innerhalb der if und endif abfrage tun???
also

if
with

endwith
endif

oben geht fehlefrei wärend

with
if

endif
endwith

zu abstürzen führt.

also ruhig jedesmal objword.— schreiben.
dann kann nichts passieren.

Frank

Hallo zurück,
Sorry, tut mir leid. Hier kann ich nicht weiter helfen
+++++++++++++++++++++++++++++++++++++++++++++++++++++++