Mein programm läuft nur nach Neustart von Access

Hallo, ich brauche Hilfe. Ich habe ein Programm in Access geschrieben, das aus einem Hauptformular Anwenderdaten entnimmt und aus dem entsprechenden Unterformular Vertragsdaten zum Anwender. Diese Felder werden dann in Word an Textmarken übergeben, sodaß mit einem Click 10 Dokumente erstellt werden. Funktioniert auch ganz gut, aber leider nur 1x. Danach ist ein Neustart von Access erforderlich (schließen und öffnen der db reicht nicht aus)
Kann mir jemand bei der Fehlersuche helfen???

Laufzeitfehler 3021

Private Sub drucken_Click()

Dim rs, hs, ds As DAO.Recordset, feld As DAO.Field
Dim Vollname, Vorlage, Vollname1, Vollname2, Vollname3
Dim objWordApp As Object
Dim wdDok As Object

'erst mal das Unterformular
Set ds = Form_frmVorlagen.Recordset

For i = 0 To ds.RecordCount - 1
Set rs = [Form_tblVertragPos Unterformular1].Recordset

ds.MoveFirst
ds.Move (i)

If ds!Druck 0 Then
'Drucken
Vorlage = ds!Datei

If Not IstWordGestartet Then
Set objWordApp = CreateObject(„Word.Application“) ’ WinWord starten
Else
Set objWordApp = GetObject(, „Word.Application“) ’ WinWord war schon gestartet
End If

objWordApp.Visible = True
objWordApp.WindowState = wdWindowStateNormal

Set wdDok = objWordApp.Documents.Add(Template:=Vorlage)

For Each feld In rs.Fields
If wdDok.Bookmarks.Exists(feld.Name) Then
If Not feld.Type = 11 Then
If Not IsNull(feld.Value) Then

Hallo.

Kann mir jemand bei der Fehlersuche helfen???

Aus Zeitmangel jetzt nur ein Suchtip : Die Objektvariablen rs, hs, ds und feld werden, wenn ich das richtig gesehen habe, nicht zurückgesetzt (Set haumich=Nothing). Das kann dazu führen, dass es beim zweiten Anlauf zu Instanzierungsproblemen mit diesen Objekten kommt.

Wie gesagt, nur eine Anhiebsdiagnose …

Gruß kw

Ich habe folgendes versucht, allerdings ohne Erfolg:

Private Sub drucken_Click()

Dim rs, hs, ds As DAO.Recordset, feld As DAO.Field
Dim Vollname, Vorlage, Vollname1, Vollname2, Vollname3
Dim objWordApp As Object
Dim wdDok As Object
Set ds = Nothing
Set rs = Nothing
Set hs = Nothing
Set Vollname = Nothing
Set Vollname1 = Nothing
Set Vollname2 = Nothing
Set Vollname3 = Nothing
Set feld = Nothing
Set objWordApp = Nothing
Set wdDok = Nothing

Morgen soll das Programm fertig sein, haben Sie Zeit, sich noch einmal mit diesem Problem zu beschäftigen?

Jblockus schrieb:

Ich glaube den Fehler gefunden zu haben. Wenn ich das auskommentierte movfirst mit rein nehme, funktioniert es, aber eben nur mit dem 1. Datensatz in rs.

Wie ermittelt man eigentlich die Position des Datensatzzeigers in einem Recordset? In meinem Hauptformular stelle ich mich auf einen Datensatz und diesen soll er in rs verwenden. Mit movefirst und movenext kann ich mich zwar bewegen, aber wann stehe ich auf dem aktuellen Satz???