VBA Denkfehler

TaylorDorton

Mitglied
Hallo allerseits,

habe hier eine Aufgabe vor mir die mir die Harre färbt, ich habe, in Access 2000,
ein Formular per VBA Programmiert. Ziel ist es Daten aus dem Formular auf
Knopfdruck auszulesen und in ein Word Template zu Übetragen und
diese als dann als Word.doc zu Speichern.

Das Funktioniert auch recht gut, allerdings nur 1x beim zweiten Versuch bekomme ich Andauernd die Fehlermeldung, das, das zu Nutzende Word Template
durch einen anderen Benutzer Gesperrt ist.

Ich vermute das nach dem öffnen und dem Befüllen, das eigentliche Template nicht Freigegeben wird, kann mir aber keinen reim darauf machen,
da ich das ActiveDocument explezit Schliesse.

Vieleicht kann einer von euch weiter Helfen und mir meinen Denkfehler Aufzeigen.

greetz Taylor

Code:
Private Sub Befehl25_Click()
'Fehlermeldung
  On Error GoTo mldg
  
'Variablen Deklartion
  Dim strFirma As String
  Dim strStrasse As String
  Dim strPLZ As String
  Dim strOrt As String
  Dim strName As String
  Dim strVorname As String
  Dim strTitel As String
  Dim strAnrede As String
  Dim strAbt As String
  
  Dim strDateiname As String
  Dim wd As New Word.Application
  
'Variablenzuweisung
  With Me
    strFirma = .Firma
    strStrasse = .Strasse
    strPLZ = .PLZ
    strOrt = .Ort
    strAnrede = .UfrmKundenIntern![Anrede]
    strName = .UfrmKundenIntern![Name]
    strVorname = .UfrmKundenIntern![Vorname]
    strTitel = .UfrmKundenIntern![Titel]
    strAbt = .UfrmKundenIntern![Abteilung]
  End With
  
  strDateiname = "E:\ContentFolder\DOCS\VBA............"
  
'Abfrage der Option Anrede
  If strAnrede = 1 Then
    strAnrede = "Sehr geehrter Herr"
  Else
    strAnrede = "Sehr geehrte Frau"
  End If

wd.Documents.Add Template:=strDateiname

'Aufruf des Moduls mit der befüll Routine
Call FormAusgabe("mark1", strFirma)
Call FormAusgabe("mark2", strAbt)
Call FormAusgabe("mark3", strStrasse)
Call FormAusgabe("mark4", strPLZ)
Call FormAusgabe("mark6", strOrt)
Call FormAusgabe("mark5", strAnrede)
Call FormAusgabe("mark7", strName)

'Speichern des .docs  Info >>Firma<< >>Name<<
ActiveDocument.SaveAs FileName:="E:\ContentFolder\DOCS\VBA ......." & "Info " & strFirma & " " & strName
ActiveDocument.Close

Exit Sub

mldg:
MsgBox "Bitte wählen Sie geben eine Anrede aus und/oder eine Abteilung!"


End Sub
 
Versuche mal die application nach dem speichern wieder zu schließen (wd.application.quit). Vielleicht löst das Dein Problem. Windows hat nämlich die mysteriöse Angewohnheit, die Prozesse im Hintergrund am Laufen zu halten, damit der nächste Programmstart schneller von statten geht. Wenn Du in den TaskManager schaust, wird dort sicherlich noch ein Wordprozess laufen, auch wenn Du Word gar nicht offen hast. Dieser Prozess hält Dein Workbook dann im Zugrifff.
 
Hallo und Danke,

ich habe mir das mal im Taskmanager Angeschaut,
tatsächlich ist der Prozess noch offen, allerdings komm ich mit
deinem Lösungsansatz gleich zu einem weiteren Problem.
Ich habe den Code wie folgt geändert:

Code:
With ActiveDocument
  'Speichern des .doc  Info >>Firma<< >>Name<<
    .SaveAs FileName:="E:\ContentFolder\DOCS\VBA Kurs\Hausaufgaben\Mustertexte\" & "Info " & strFirma & " " & strName
  'Druck des Dokuments
    .PrintOut
  End With

  wd.Application.Quit

Word wird jetzt geschloßen bevor der Druck fertig ist,
und Quitiert diese Aktion mit der Frage ob zum schließen,
der Druck abgebrochen werden soll. Ist sehr Unschön kann man das
Umgehen Elegant ?!

Vielen Dank für deine Bemühungen
Taylor
 
Zurück