Hallo,
vielleicht kann jemand mal über meinen Code schauen.
Es soll aus Access ein Worddokument aufgerufen werden, und mit der Schadensnummer abgespeichert werden.
Wenn das Formular schon vorhanden ist, dann klappt es.
Zuerst soll aber abgefragt werden, ob das Dokument mit der Schadensnummer schon vorhanden ist.
Zu jedem Schaden kann ein Dokument (nur eins) angelegt werden, hier werden Interne Vermerke geschrieben.
Gruss Nagel
Private Sub Interne_Vermerke_Click()
'On Error GoTo handleErr
Dim Interne_Vermerke As String
'Dim strPfad As String
Dim objWord As Word.Application
Interne_Vermerke = „Interne Vermerke:“
'strPfad = „D:\Ablage\Intern“ & Jahr & „-“ & SchadenNr & „.doc“
If Dir(„D:\Ablage\Intern“ & VarSchadenNr) = „“ Then
Documents.Open „D:\Ablage\Intern“ & Jahr & „-“ & SchadenNr & „.doc“
Else
End If
Set objWord = CreateObject(„Word.Application“)
With objWord
.Visible = True
'Documents.SaveAs „D:\Ablage\Intern“ & Jahr & „-“ & SchadenNr & „.doc“
.ActiveDocument.Bookmarks(„Jahr“).Select
.Selection.Text = (CStr(Form!Jahr))
.ActiveDocument.Bookmarks(„SchadenNr“).Select
.Selection.Text = (CStr(Form!SchadenNr))
.ActiveDocument.Bookmarks(Interne_Vermerke).Select
.Selection.Text = (CStr(Form!Interne_Vermerke))
End With
Set WordObj = Nothing
'an Cursorposition einfügen
'Set objSel = objWord.Selection
'objSel.TypeText varData
'Set objWord = Nothing
'DoEvents
'Exithere:
'Exit Sub
handleErr:
Beep
Select Case err.Number
Case 75
Resume Next
Case 53
Case Else
MsgBox "Err " & err.Number & ": " & err.Description, vbCritical, „Formular“
End Select
'Resume Exithere
End Sub
Hallo echojuergen
Habe deinen Code nicht ausprobiert aber als erstes fällt mir auf dass das „end if“ direkt hinter dem „else“ steht.
Das macht keinen sinn.
Vieleicht ist dass ja das Problem.
Gruß
Broesel
Ich hab da ma was geändert, ist aber für office 2007 ggf anpassen.
Private Sub Interne_Vermerke_Click()
On Error GoTo handleErr
'Nur für mich zum Arbeiten! Ich nehme an das das bei dir eine globale variable ist.
Dim VarSchadenNr As String
VarSchadenNr = „123456“
Dim Interne_Vermerke As String
Dim objWord
Set objWord = CreateObject(„Word.Application“)
Dim x
x = Dir(„D:\Ablage\Intern“ & VarSchadenNr, vbDirectory)
If x = „“ Then
MkDir „D:\Ablage\Intern“ & VarSchadenNr
End If
With objWord
x = Dir(„D:\Ablage\Intern“ & VarSchadenNr & „“ & VarSchadenNr & „.docx“)
If x = „“ Then
'Du musst „D:\Ablage\Muster\Muster.docx“ anlegen auch schon wegen der Bookmarks
.Documents.Open „D:\Ablage\Muster\Muster.docx“
.ChangeFileOpenDirectory „D:\Ablage\Intern“ & VarSchadenNr
.ActiveDocument.SaveAs Filename:=VarSchadenNr & „.docx“, FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
Else
.Documents.Open „D:\Ablage\Intern“ & VarSchadenNr & „“ & VarSchadenNr & „.docx“
End If
.Visible = True
.ActiveDocument.Bookmarks(„Jahr“).Select
'geht so bei mir natürlich nicht.
'.Selection.Text = (CStr(Form!Jahr))
.Selection.Text = „2013“
.ActiveDocument.Bookmarks(„SchadenNr“).Select
'.Selection.Text = (CStr(Form!SchadenNr))
.Selection.Text = „123456“
.ActiveDocument.Bookmarks(Interne_Vermerke).Select
'.Selection.Text = (CStr(Form!Interne_Vermerke))
.Selection.Text = „Ein Vermerk“
’
'immer daran Denken das in dem Mustertext die Bookmarks vorhanden sein müssen!!!
’
'das saven an dieser stelle nicht vergessen!!!
'.ActiveDocument.Save
'oder im Worddokument saven
End With
Exithere:
'auf jeden fall die Word instanz killen!
Set WordObj = Nothing
Exit Sub
handleErr:
Beep
Select Case Err.Number
Case 75
Resume Next
Case 53
Case Else
MsgBox "Err " & Err.Number & ": " & Err.Description, vbCritical, „Formular“
End Select
Resume Exithere
End Sub