Autor Thema: Email-Adresse aus dem Adressbuch auslesen mit Excel  (Gelesen 3487 mal)

Offline Chirin

  • Frischling
  • *
  • Beiträge: 6
Im Rahmen meiner Arbeit mit Excel habe ich gleich wieder das nächste Problem.
Und zwar möchte ich, um Sucharbeit zu sparen, EMail-Adressen aus dem Notes-Adressbuch auslesen und direkt in Excel eintragen lassen.

Ich habe bislang leider nicht herausgefunden (was gleichzeitig meine Fragen sind),
- welcher Typ / Welche Klasse das Adressbuch ist
- wie ich ein Element / Kontakt im Adressbuch aufrufe
- GetItemValue oder FieldGetText oder was ganz anderes zum Vergleich mit dem Referenzwert aus Excel zu Vergleich korrekt ist
- ob ich uidoc (NOTESUIDOCUMENT) an dieser Stelle überhaupt brauche
- ob mir sonst noch was fehlt

Folgendes Skript dient derzeit als Grundlage:
Code
Private Function getMailInAdressbook(Kunde As String, Ansprechpartner As String) As String
    Dim s As NOTESSESSION
    Dim db As NOTESDATABASE
    Dim workspace As New NOTESUIWORKSPACE
    Dim uidoc As NOTESUIDOCUMENT
    
    'Set uidoc = workspace.CURRENTDOCUMENT
    Set db = s.GETDATABASE("server", "adressbuch.nsf")
    
    For Each _kontakt_ as _datentyp_ In _adressbuch_
    If Kunde = uidoc.FIELDGETTEXT("CompanyName") _
        And (LeftStr(Ansprechpartner, " ") = uidoc.GETITEMVALUE("Firstname")) _
        And (MidStr(Ansprechpartner, " ") = uidoc.FIELDGETTEXT("Lastname")) Then
     getMailInAdressbook = uidoc.FIELDGETTEXT("mailaddress")
    End If
    Exit For
    Next _kontakt_

End Function

Ich wäre überglücklich, wenn ihr mir hier noch einmal helfen könnt.

wirklich dramatisch ist, glaube ich, noch die Einleitung der Schleife For each und die das If-Konstrukt

Viele Grüße

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #1 am: 10.12.15 - 17:38:02 »
Das ist der falsche Ansatz. Du möchtest nicht jedesmal alle Kontakte durchsuchen, sondern den Server die Arbeit machen lassen.

Code
Private Function getMailInAdressbook(Kunde As String, Ansprechpartner As String) As String
    Dim s As NOTESSESSION
    Dim db As NOTESDATABASE
    Dim dc as NOTESDOCUMENTCOLLECTION
    Dim doc as NOTESDOCUMENT
    
    Dim strQuery as String

    '- Diese Zeile baut Dir ein Query zusammen, das sieht dann so aus: CompanyName = "eingegebener Kunde" & FirstName = "Theo" & LastName = "Test"
    strQuery = {CompanyName = "} & Kunde & {" & FirstName = "} & LeftStr(Ansprechpartner, " ") & {" & LastName = "} & MidStr(Ansprechpartner, " ") & {"}

    Set db = s.GETDATABASE("server", "adressbuch.nsf")

    Set dc = db.Search( strQuery, Nothing, 0 )
    Set doc = dc.GetFirstDocument()
    If not doc is Nothing then
      getMailInAdressbook = doc.GetitemValue( "MailAddress" )(0)
    End If
End Function
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 Chirin

  • Frischling
  • *
  • Beiträge: 6
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #2 am: 11.12.15 - 14:46:43 »
Hallo Tode,

leider funktioniert das Skript nicht.

Ich habe das SQL-Statement zwar schon korrigiert, so dass es jetzt zumindest Laufen müsste,
allerdings erhalte ich die Meldung: Automatisierungsfehler - Ausnahmefehler des Servers
in der Zeile     Set dc = db.Search(strQuery, Nothing, 0)

Code
Private Function getMailInAdressbook(Kunde As String, Ansprechpartner As String) As String
    Dim s As Object  'notessession erzeugte fehlermeldung: Typen unverträglich
    Dim db As Object 'notesdatabase erzeugte fehlermeldung: Typen unverträglich
    Dim dc As NOTESDOCUMENTCOLLECTION
    Dim doc As NOTESDOCUMENT

    Dim strQuery As String

    '- Diese Zeile baut Dir ein Query zusammen, das sieht dann so aus: CompanyName = "Kunde GmbH" & FirstName = "Theo" & LastName = "Test"
    
     strQuery = "CompanyName = '" & Kunde & "' and Firstname = '" & LeftStr(Ansprechpartner, " ") & "' and LastName = '" & MidStr(Ansprechpartner, " ") & "'"

    Set s = CreateObject("Notes.NotesSession")
    Set db = s.GETDATABASE("server", "adrbuch.nsf")
    Set dc = db.Search(strQuery, Nothing, 0)
    Set doc = dc.GETFIRSTDOCUMENT()
    If Not doc Is Nothing Then
      getMailInAdressbook = doc.GETITEMVALUE("MailAddress")(0)
    End If

End Function

Gibt es bestimmte verweise, die eingebunden werden müssen oder andere Ideen, woran es noch liegen kann?

Aktuell eingebunden habe ich LN Automation classes und LN Domino objects,  ODBC würd ich gern vermeiden.
« Letzte Änderung: 11.12.15 - 17:19:41 von Chirin »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #3 am: 11.12.15 - 15:05:24 »
Das ist keine SQL-Abfrage, denn Notes ist keine relationale Datenbank. Du darfst die Werte nicht in ' einfassen, sondern musst " verwenden. Es handelt sich bei dem Query um eine Selektionsformel. Da verwendest Du Formelsprache, die kennt kein And, sondern &
Code
strQuery = |CompanyName = "| & Kunde & |" & Firstname = "| & LeftStr(Ansprechpartner, " ") & |" & LastName = "| & MidStr(Ansprechpartner, " ") & |"| 

Anstelle von | kannst Du auch {} verwenden, ist m.E. umständlicher zu schreiben, aber leichter zu lesen

EDIT: Torsten hat Dir die korrekte Formel geschrieben, hatte ich jetzt nicht gelesen. Warum hast Du die nicht probiert, sondern in SQL umgewandelt?  ???
« Letzte Änderung: 11.12.15 - 15:07:51 von Peter Klett »

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #4 am: 11.12.15 - 16:27:10 »
OK, grade ausprobiert: VBA kennt wohl keine anderen Text- Delimiter als das doppelte Anführungszeichen... Und das muss man dann durch Verdoppelung maskieren...

Aber das ist ein VBA- Problem... die richtige Notes- Syntax für die Formel steht ja sogar im Kommentar über der Zeile...
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 Chirin

  • Frischling
  • *
  • Beiträge: 6
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #5 am: 11.12.15 - 17:19:13 »
Statement ist umgestellt (Hatte im internet die übliche SQL-Syntax recherchiert im Zusammenhang mit notesSQL)

Jedenfalls bleibt das Ergebnis leider das gleiche. (Automatisierungsfehler)

Code
Private Function getMailInAdressbook(Kunde As String, Ansprechpartner As String) As String
    Dim s As Object
    Dim db As Object
    Dim dc As NOTESDOCUMENTCOLLECTION
    Dim doc As NOTESDOCUMENT

    Dim strQuery As String

    '- Diese Zeile baut Dir ein Query zusammen, das sieht dann so aus: CompanyName = "Kunde GmbH" & FirstName = "Theo" & LastName = "Test"
    'strQuery = "CompanyName = " & """ & Kunde & """ & " & FirstName = " & """ & LeftStr(Ansprechpartner, " ") & " LastName = " & """ & MidStr(Ansprechpartner, " ") & """

    strQuery = "|CompanyName = " & """" & "|" & Kunde & "|" & """" & " & Firstname = " & """" & "|" & LeftStr(Ansprechpartner, " ") & "|" & """" & _
        " & LastName = " & """" & "|" & MidStr(Ansprechpartner, " ") & "|" & """" & "|"
    Set s = CreateObject("Notes.NotesSession")
    Set db = s.GETDATABASE("server", "adrbuch.nsf")
    Set dc = db.Search(strQuery, Nothing, 0)
    Set doc = dc.GETFIRSTDOCUMENT()
    If Not doc Is Nothing Then
      getMailInAdressbook = doc.GETITEMVALUE("MailAddress")(0)
    End If

End Function

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Email-Adresse aus dem Adressbuch auslesen mit Excel
« Antwort #6 am: 11.12.15 - 18:20:34 »
Sorry, aber Du liest nicht wirklich, was man Dir schreibt, oder?

Im kommentar steht GENAU die Syntax, die das Query haben muss
Zitat
'- Diese Zeile baut Dir ein Query zusammen, das sieht dann so aus: CompanyName = "Kunde GmbH" & FirstName = "Theo" & LastName = "Test"
Und Du baust so nen Quark zusammen. Hast Du Dir mal Deine strQuery mit MsgBox ausgeben lassen?

Soll (aus dem Kommentar):
Zitat
CompanyName = "Kunde GmbH" & FirstName = "Theo" & LastName = "Test"
Dein Code:
Zitat
|CompanyName = "|Kundenname|" & Firstname = "|Theo|" & LastName = "|Test|"|

Bravo: Die beiden Strings sind tatsächlich identisch... Komisch, dass der erste funktioniert, und der zweite nicht

P.S.: Wir hier im Forum reden uns gerne mit Namen an...
« Letzte Änderung: 11.12.15 - 18:24:38 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)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz