Servus,
ich bin gerade dabei eine kleine Access-Datenbank zu basteln, und es gibt ein kleines Problem.
Es handelt sich dabei um eine Access-Anwendung die eine Word-Vorlage mit Textmarken öffnet (Fernsteuerung), und den Inhalt an die Textmarken setzt und dann als PDF speichert.
Das Problem ist, das jede zweite Rechnung folgenden Fehler auslöst:
Hier einmal der Button_Click-Code:
Das setzen der Textmarken erledigt die "setzeTextinMarke"-Prozedur:
Der PDF-Dateiname wird natürlich jedes mal händisch geändert (dies wird später automatisiert erfolgen), zum testen reicht es erstmal.
Ich habe mal die If-Then-Anweisung in der setzeTextinMarke-Prozedur entfernt, wo der Fehler ausgelöst wird. Seitdem wird die Zeile direkt dadrunter markiert:
Das ganze läfut unter Access 2016 x64, auf einem Windows 10 x64 PC.
Ich würde mich sehr im Unterstützung freuen!
Das Problem konnte durch eine einfache End-Anweisung am Ende des Button-Click-Ereignisses gelöst werden... Siehe:
Kann mir jemand erklären, warum die End-Anweisung zur Lösung des Problems führt? Die Ereignis-Prozedur wäre mit "End Sub" doch sowieso beendet worden.
ich bin gerade dabei eine kleine Access-Datenbank zu basteln, und es gibt ein kleines Problem.
Es handelt sich dabei um eine Access-Anwendung die eine Word-Vorlage mit Textmarken öffnet (Fernsteuerung), und den Inhalt an die Textmarken setzt und dann als PDF speichert.
Das Problem ist, das jede zweite Rechnung folgenden Fehler auslöst:
Laufzeitfehler '462':
Der Remote-Server-Computer existiert nicht oder ist nicht verfügbar.
Hier einmal der Button_Click-Code:
Code:
Dim objWord As word.Application
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If Err.Number > 0 Then
On Error GoTo 0
Set objWord = CreateObject("Word.Application")
Else
objWord.Activate
End If
setzeTextinMarke "markeVNr", Me.Recordset.VNr
setzeTextinMarke "markeGesamtSummeBrutto", Me.Recordset![Brutto-Betrag]
Dim strSpeicherpfadKomplett As String
strSpeicherpfadKomplett = "C:\TestOrdner\"
objWord.ActiveDocument.SaveAs2 strSpeicherpfadKomplett & "Rechnungtest1.pdf", FileFormat:=WdFormatPDF
objWord.Quit savechanges:=WdDoNotSaveChanges
Set objWord = Nothing
Das setzen der Textmarken erledigt die "setzeTextinMarke"-Prozedur:
Code:
Private Sub setzeTextinMarke(ByVal strTextmarkeName As String, ByVal strAusgabeText As String)
If word.ActiveDocument.Bookmarks.Exists(strTextmarkeName) Then '<-- LÖST BEI JEDEM 2. Mal einen Fehler aus!
Selection.Goto what:=wdGoToBookmark, Name:=strTextmarkeName
Selection.TypeText strAusgabeText
Else
MsgBox "Es ist ein Fehler aufgetreten!"
End If
End Sub
Der PDF-Dateiname wird natürlich jedes mal händisch geändert (dies wird später automatisiert erfolgen), zum testen reicht es erstmal.
Ich habe mal die If-Then-Anweisung in der setzeTextinMarke-Prozedur entfernt, wo der Fehler ausgelöst wird. Seitdem wird die Zeile direkt dadrunter markiert:
Code:
Selection.Goto what:=wdGoToBookmark, Name:=strTextmarkeName
Das ganze läfut unter Access 2016 x64, auf einem Windows 10 x64 PC.
Ich würde mich sehr im Unterstützung freuen!
Ergänzung ()
Das Problem konnte durch eine einfache End-Anweisung am Ende des Button-Click-Ereignisses gelöst werden... Siehe:
Code:
Private Sub cmdErstelleRechnung_Click()
Dim objWord As word.Application
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If Err.Number > 0 Then
On Error GoTo 0
Set objWord = CreateObject("Word.Application")
Else
objWord.Activate
End If
setzeTextinMarke "markeVNr", Me.Recordset.VNr
setzeTextinMarke "markeGesamtSummeBrutto", Me.Recordset![Brutto-Betrag]
Dim strSpeicherpfadKomplett As String
strSpeicherpfadKomplett = "C:\TestOrdner\"
objWord.ActiveDocument.SaveAs2 strSpeicherpfadKomplett & "Rechnungtest1.pdf", FileFormat:=WdFormatPDF
objWord.Quit savechanges:=WdDoNotSaveChanges
Set objWord = Nothing
End '<-- hat das Problem gelöst...
End Sub
Kann mir jemand erklären, warum die End-Anweisung zur Lösung des Problems führt? Die Ereignis-Prozedur wäre mit "End Sub" doch sowieso beendet worden.
Zuletzt bearbeitet: