Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: WireD am 30.08.12 - 16:58:40



Titel: VBA Currentdocument Bearbeitungsmodus prüfen
Beitrag von: WireD am 30.08.12 - 16:58:40
Hallo,

ich doktor jetzt schon den ganzen Tag an meinem Problem herum. Kurz zur Ausgangslage - vorab: Die muss so sein, sonst gehts  nicht:

Ziel ist es, Serienfaxe aus einem Serienbrief von Word aus zu versenden. Da ich User mit sehr eingeschränkten Rechten bin, bediene ich mich eines Fax - Tiff Druckers. Wenn dieser Drucker fertig ist, übernehme ich per VBA die Steuerung von Notes und trage in das "An" Feld die Faxnummer ein.

Bisher hat das Programm auch sehr gut funktioniert, beim Kollegen als auch bei mir. Seit gestern wills nicht mehr - LN (8.5) bringt mir die Fehlermeldung: Um den Wert eines Feldes ändern zu können, müssen sie im Bearbeitungsmodus sein, und VBA die Fehlermeldung: Objektvariable oder With - Block nicht festgelegt.

Das irritierende ist, dass ich nicht eingrenzen kann, der Fehler kommt nach einer unterschiedlichen Anzahl von Sendungen, wobei die Anzahl immer kleiner wird, nach einer Wartezeit ist sie dann wieder größer.

Ich hatte ja die Vermutung, dass Notes "Bearbeitungszeit braucht, daher die Sleeps und die DoEvents, aber das löst mein Problem nicht.


Gibt es die Möglichkeit zu prüfen, ob das aktuelle Dokument im Bearbeitungsmodus ist?



Hier mal der Code:

    '"Ausdruck" an Faxdrucker
    ObjWord.PrintOut
   
    'Nur beim ersten mal dauerts länger
    If i = 1 Then
        Sleep 3000
    End If
    DoEvents
    'Sleeptimer, damit das Drucken sicher beendet ist 3 Sek
    Sleep 3000
    DoEvents
    'Verbinden mit Notes und Übernahme der Kontrolle
    Set nSession = CreateObject("Notes.NotesSession")
    Set nUIWorkSpace = CreateObject("Notes.NotesUIWorkspace")
    Set nUIdoc = nUIWorkSpace.CURRENTDOCUMENT
    DoEvents
    'Faxnummer eintragen
    nUIdoc.FIELDSETTEXT "EnterSendTo", faxNr
    DoEvents
    'Falls nur vorbereiten....
    If CheckBox2 = True Then
        GoTo Jump
    End If
   
    '...sonst...
    nUIdoc.Send 'Fax senden
    nUIdoc.Save '...speichern
    nUIdoc.Close '...schließen
    DoEvents
    'Verbindung kappen (bei mehr als einer Verbindung kommt eine Fehlermeldung)
Jump:
    Set nUIdoc = Nothing
    Set nUIWorkSpace = Nothing
    Set nSession = Nothing

Viele Grüße und vielen Dank,

Philipp


Titel: Re: VBA Currentdocument Bearbeitungsmodus prüfen
Beitrag von: Axel am 30.08.12 - 19:40:51
Vermutlich knallts in der blauen Zeile. Wenn du das mit Frontend - Methoden machst, dann muss das Dokument im Edit - Modus sein.

...
Set nSession = CreateObject("Notes.NotesSession")
Set nUIWorkSpace = CreateObject("Notes.NotesUIWorkspace")
Set nUIdoc = nUIWorkSpace.CURRENTDOCUMENT
DoEvents
'Faxnummer eintragen
nUIdoc.FIELDSETTEXT "EnterSendTo", faxNr
DoEvents
'Falls nur vorbereiten....
If CheckBox2 = True Then
....


Das Prüfen ob das Dokument im Editmodus ist kannst du so machen:

If nUIdoc.EditMode Then
  ' Dok im Editmodus
Else
  ' Dok nicht im Editmodus
End If

Das Dokument in den Editmodus setzen geht dann so:

Call nUIdoc.EditMode = true

Kannst du das Ganze nicht mit Backend-Methoden abfackeln? Dann solltest du weniger Probleme haben.

Axel