Autor Thema: Problem bei der Verwendung von MS Office Objekten aus LotusScript heraus  (Gelesen 2818 mal)

Offline Freitag

  • Frischling
  • *
  • Beiträge: 3
Hallo,

Ich möchte aus LotusScript heraus eine Mail im Outlook erzeugen.
Generell klappt das auch, aber bei der Verwendung von einigen Outlook Objekteigenschaften bekomme ich im Notes einen Fehler.

Als reiner vbscript code läuft es einwandfrei.

Gibt es in LS Limitierungen der API oder muss ich vorher irgendetwas includieren ?

Probiert habe ich es in Notes 8.5 und 9.0.1

Gruß
Björn

Offline jo@chim

  • Aktives Mitglied
  • ***
  • Beiträge: 246
  • Geschlecht: Männlich
Mit MS Outlook habe ich weniger zu tun, aber Fehlerquellen wenn Du die LS-COM Schnittstelle zu MS Office verwendest, können z.B sein:

- Du kannst die Office-Konstanten nicht so einfach verwenden; also entweder die zugehörigen Integer herausfinden oder die Konstanten in Deiner LS-Bibliothek definieren

- Die Syntax für die Eigenschaften in LS ist etwas anders - nicht (wie in Excel z.B.)

Code
Sheets("mysheet").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
sondern
Code
excelobj.Sheets("mysheet").Protect(True, True, True)
« Letzte Änderung: 04.02.16 - 10:58:45 von jo@chim »
Gruss,
Achim
-------------------
IBM Certified Advanced Application Developer Lotus Notes and Domino 7

Offline Freitag

  • Frischling
  • *
  • Beiträge: 3
Eigentlich sind es ganz einfache Dinge, die nicht funktionieren.
Ich nutze keine VBA spezifischen Konstanten o.ä.

Hier ein kleines Beispiel, das in vbscript ok ist. In LScript bekomme ich z.B. bei der Zuweisung .SendUsingAccount = oOutL.Session.Accounts.Item(1) einen 'Type mismatch' Fehler.


[...]
Set oOutL = CreateObject("Outlook.Application")
Set oMail = oOutL.CreateItem(0)
[...]   
If Not oMail Is Nothing Then
         oMail.To = "me@abc.com"
    oMail.Subject = "test mail" 
    oMail.Body = "Text"
         oMail.Display
         oMail.SendUsingAccount = oOutL.Session.Accounts.Item(1)
         oMail.send
End If


Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Nun: Die Office- Produkte "kennen" die Klassen und machen einen automatischen Cast... Das Kann LotusScript natürlich nicht.

Ich habe folgenden Code in einem Agenten getestet:
Code
Dim oOutLas Variant
Dim vartest as Variant

 Set oOutL = CreateObject("Outlook.Application")
    vartest = oOutL.Session.Accounts.Item(1)
msgbox varTest
Ich bekomme in der Zeile varTest = oOutL.Session.Accounts.Item(1) die Meldung "Set required on class instance assignment".

Das heisst: Item(1) ist ein Objekt der Klasse "Account"

Die Zeile muss also lauten
Set vartest = oOutL.Session.Accounts.Item(1)

Und jetzt muss man nur noch rausfinden, in welcher Property der genannten Klasse was steht, was man in Text umwandeln kann, und schon kann man das einem Item zuweisen...

Kurz gegoogelt findet man diese Seite

Dann findet man raus, dassDu ja ein Outlook- Mail versenden willst, und tatsächlich das Objekt brauchst.. und die Antwort is viel einfacher:
Code
Set oMail.SendUsingAccount = oOutL.Session.Accounts.Item(1)


Alles gar nicht so schwer...
« Letzte Änderung: 04.02.16 - 15:21:55 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Freitag

  • Frischling
  • *
  • Beiträge: 3
Danke Tode,

es fehlte das Set in der Anweisung
Set oMail.SendUsingAccount = oOutL.Session.Accounts.Item(1)

Obwohl es in der von dir verlinkten MSDN Referenz (die ich auch vorher schon gelesen hatte) als Property ohne die Set Anweisung dargestellt wird.
Deswegen war ich ja verwirrt, da es im vbscript auch so funktioniert hat und im Notes nicht.
Aber wie du schon geschrieben hast, wird das wohl vom vbscript anders aufgelöst als vom LSrcipt.

Gruß
Björn

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Dann ist es in vbscript -imho- unsauber... ALLES was ein Objekt ist muss über "Set" zugewiesen werden. Vermutlich kennt vbscript einfach die Typen und macht ein automatisches Set, wenn es sich auf beiden Seiten um ein Objekt der gleichen Klasse handelt... LotusScript ist da wesentlich strenger.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz