Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Auslesen von Kontakten aus dem Outlook-Adressbuch

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Auslesen von Kontakten aus dem Outlook-Adressbuch (3194 mal gelesen)

Ex-Mitglied



erstellt am: 18. Nov. 2004 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo zusammen,

ich versuche gerade, aus dem Outlook-Adressbuch einen Kontakt auszulesen.

Dazu habe ich eine Listbox in einem Userform erstellt. Diese Listbox wird auch mit den Kontakten aus dem Adressbuch gefüllt.

Leider bleibt die Sanduhr bestehen, wenn die Box gefüllt ist und ich habe keine Möglichkeit, in der Box zu selektieren.

Hier ist mein Code:

Code:

Option Explicit

' Outlook als Objekt festlegen
Dim objOutlook As Outlook.Application

' Den aktuellen Arbeitsbereich von Outlook mit dem
' Namespaces festlegen
Dim Namensraum As NameSpace

' Der MAPI-Folder legt den Ordner fest (z. B. Kontakte)
Dim MailFolder As mapiFolder

' Items sind die einzelnen Einträge
Dim objItems As Items

' Zähler zum Füllen der Listboxen
Dim zaehler As Integer

' Speicherung des Usernamens - vom Profil abhängig
Dim AktUser As String

Dim Eintrag As String


Private Sub cmdKontakt_Click()
  ' Kontakte auslesen und in Liste anzeigen
  Kontakte_Lesen
  MsgBox "zurueck zu Schalter"
End Sub

Private Sub DblClick()
    With IstKontakt
        If .ListIndex > -1 Then
            Empfaenger = .List(.ListIndex)
            .Enabled = False
        End If
    End With
    MsgBox Empfaenger
End Sub

Private Sub Kontakte_Lesen()
  ' Das erste Auslesen kann ein bissl dauern :-)
  Dim Eintrag, Vorname, Nachname As String
  ' MousePointer = 11  'vbHourglass

  ' Outlook initialisieren
  Set objOutlook = New Outlook.Application

  ' Namespace initialisieren
  Set Namensraum = objOutlook.GetNamespace("MAPI")

  ' Aktueller User in Outlook ermitteln
  AktUser = Namensraum.CurrentUser

  ' Ordner setzen, in unserem Fall Contacts
  Set MailFolder = Namensraum.GetDefaultFolder(olFolderContacts)

  ' Items initialisieren
  Set objItems = MailFolder.Items

  ' Einträge nach dem Nachnamen sortieren lassen
  objItems.Sort "[Lastname]", False
 
  ' Alle Items in die Listbox schreiben
  For zaehler = 1 To objItems.Count
    IstKontakt.AddItem objItems(zaehler)
  Next zaehler

  ' Mousepointer wieder "normal" einstellen
  MousePointer = 0 ' vbDefault
  IstKontakt.SetFocus
 
  End Sub

Private Sub IstKontakt_LostFocus()
    Msg "Focus verloren"
End Sub
   
Private Sub form_Unload(Cancel As Integer)
  ' alle Objekte abschließen
  Set objItems = Nothing
  Set MailFolder = Nothing
  Set Namensraum = Nothing
  Set objOutlook = Nothing
End Sub


Kann mir jemand sagen, wie ich das ganze ändern muß, damit ich in der Listbox selektieren kann?

Viele Grüße,

CEROG

------------------
Inoffizielle Linux-Hilfeseite http://linux.cad.de

andy09
Mitglied



Sehen Sie sich das Profil von andy09 an!   Senden Sie eine Private Message an andy09  Schreiben Sie einen Gästebucheintrag für andy09

Beiträge: 60
Registriert: 17.07.2003

erstellt am: 18. Nov. 2004 17:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


outlook_meldung.gif

 
Hallo CEROG,

soweit ich das in der Schnelle Überbliche haste in einer Procedure was vergessen:

Du hast diese

Code:
Private Sub DblClick()

genannt, es müsste aber heisen
Code:

Private Sub IstKontakt_DblClick()

Dann klappts auch mit dem Klicken

Ausserdem haste dann die Variable Empfänder dort nicht dimensioniert und die Zeile

Code:
.Enabled = False

schaltet deine Listbox auf gesperrt,bzw nicht auswählbar.

Allerdings könnte ich mir auch vorstellen, dass nach dem drücken des cmdKontakt der typische Dialog von Outlook kommt, der dich dazu auffordert den Zugriff von aussen auf das Adressbuch von Outlook zu genehmigen. Ist ein Sicherheitsmechanismus (*hust* Wiederspruch MS==Sicher) von Outlook um das Auslesen von E-Mail Adressen durch in VB oder VBS programmierte Würmer oder sonstiges zu unterbinden. Screen ist im Anhang.
Wenn dieser im Hintergrund steht und wartet auf eine Eingabe durch den User kann dabei schonmal die Maus mit der Sanduhr winken.

Gruß Andy

------------------
Wenn du eine Lösung hast, die nicht zu deinem Problem passt, dann ändere das Problem.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied



erstellt am: 18. Nov. 2004 17:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Andy,

diese "Sicherheitsmeldung" kommt tatsächlich. Es wäre nicht schlecht, wenn es eine Möglichkeit gäbe, die abzuschalten.

Die Prozedur DblClick hieß auch mal IstKontakt_DblClick. Das das schon beim Kompilieren Probleme bereitete, hatte ich sie umbenannt. Vielleicht habe ich ja das Glück des Dummen und es reicht, daß ich .Enabled auf "True" setze.

Mein Problem bei der ganzen Sache ist, daß ich eigentlich von VB keine Ahnung habe. Mir ist nur die Sache aufgedrückt worden, nach dem Motto, es kriegt hier sonst keiner hin. Und die beiden Bücher zu VB bzw. VBA sind auch noch nicht da. Ich habe das Script nach Beispielen von einer VB-Website gemacht und vermutlich vieles nicht verstanden.

Viele Grüße,

CEROG

------------------
Inoffizielle Linux-Hilfeseite http://linux.cad.de


Ex-Mitglied



erstellt am: 19. Nov. 2004 08:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Andy,

ich habe deine Korrekturen eingearbeitet.

Natürlich hatte ich nicht das Glück des Dummen, sondern mußte meine DblClick funktion umbenennen.

Leider funktioniert das mit der Auswahl immer noch nicht.

Viele Grüße,

CEROG

------------------
Inoffizielle Linux-Hilfeseite http://linux.cad.de

bst
Mitglied



Sehen Sie sich das Profil von bst an!   Senden Sie eine Private Message an bst  Schreiben Sie einen Gästebucheintrag für bst

Beiträge: 192
Registriert: 31.08.2004

erstellt am: 19. Nov. 2004 09:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Morgen CEROG,

Zitat:

diese "Sicherheitsmeldung" kommt tatsächlich. Es wäre nicht schlecht, wenn es eine Möglichkeit gäbe, die abzuschalten.

Es gibt hierzu wohl mindestens zwei Möglichkeiten:

1. Ein Hintergrundprog, welches diese Meldung automatisch wegklickt.
Siehe hier: http://www.express-soft.com/mailmate/clickyes.html

2. Redemption, siehe http://www.dimastr.com/redemption/

Zitat:

Die Prozedur DblClick hieß auch mal IstKontakt_DblClick. Das das schon beim Kompilieren Probleme bereitete, hatte ich sie umbenannt. Vielleicht habe ich ja das Glück des Dummen und es reicht, daß ich .Enabled auf "True" setze.

Nein. IstKontakt_DblClick (bzw. es hieß vermutlich eher lstKontakt_DblClick) ist eine Ereignisfunktion, welche durch einen Doppelklick in die Listbox lstKontakt ausgelöst wird. Wenn Du sie umbennenst ist sie keine Ereignisfunktion mehr und wird wohl ganz einfach nicht mehr aufgerufen.

Versuch's mal so:

Private Sub lstKontakt_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Übrigens ist es IMHO keine gute Idee die Initialisierung der Outlook-Objekte hinter einen Button zu legen, da dieser ja mehrmals gedrückt werden könnte. Tu dieses wohl besser in UserForm_Initialize().

Zitat:

Mein Problem bei der ganzen Sache ist, daß ich eigentlich von VB keine Ahnung habe.

Da hast Du ja noch einiges vor Dir.

Suche vielleicht auch mal im Excel-Center im Excel-Foren-Archiv.
Dort solltest Du einige Beiträge hierzu finden, z.B.:

http://www.excel-center.de/forum/read.php?f=1&i=66886&t=66734#reply_66886

Folgendes funktioniert nur mit Redemption.
Du brauchst hierzu in VBA einen Verweis auf die "SafeOutlook Library".
D.h. Du mußt zuvor die Redemption.dll installieren.

HTH, Bernd
--
Option Explicit

Dim objOutlook As Outlook.Application  ' Outlook als Objekt festlegen
Dim Namensraum As NameSpace            ' Der Namespace
Dim MailFolder As MAPIFolder          ' Der MAPI-Folder legt den Ordner fest (z. B. Kontakte)
Dim objItems As Items                  ' Items sind die einzelnen Einträge
Dim AktUser As String                  ' Speicherung des Usernamens - vom Profil abhängig

Private Sub cmdKontakt_Click()
  ' Kontakte auslesen und in Liste anzeigen
  Kontakte_Lesen
  MsgBox "zurueck zu Schalter"
End Sub

Private Sub Kontakte_Lesen()
  ' Items initialisieren
  Set objItems = MailFolder.Items
 
  ' Einträge nach dem Nachnamen sortieren lassen
  objItems.Sort "[Lastname]", False
 
  ' Alle Items in die Listbox schreiben
  For zaehler = 1 To objItems.Count
      lstKontakt.AddItem objItems(zaehler)
  Next zaehler
End Sub

Private Sub IstKontakt_LostFocus()
  Msg "Focus verloren"
End Sub
   
Private Sub form_Unload(Cancel As Integer)
  ' alle Objekte abschließen
  Set objItems = Nothing
  Set MailFolder = Nothing
  Set Namensraum = Nothing
  Set objOutlook = Nothing
End Sub

Private Sub lstKontakt_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  Dim empfaenger          ' Der ausgewählte Empfänger
  Dim zaehler As Integer  ' Zähler zum Füllen der Listboxen
 
  With lstKontakt
      If .ListIndex > -1 Then
        empfaenger = .List(.ListIndex)
      End If
  End With
  MsgBox empfaenger
End Sub

Private Sub UserForm_Initialize()
  Dim sCU As SafeCurrentUser ' ein Redemption Objekt
 
  ' Outlook initialisieren
  Set objOutlook = New Outlook.Application
 
  ' Namespace initialisieren
  Set Namensraum = objOutlook.GetNamespace("MAPI")
 
  ' Aktueller User in Outlook ermitteln via Redemption
  ' umgeht den Outlook-Sicherheits-Schnickschnack !
  Set sCU = CreateObject("Redemption.SafeCurrentUser")
  AktUser = sCU.name
  sCU.Cleanup
  Set sCU = Nothing
 
  ' Ordner setzen, in unserem Fall Contacts
  Set MailFolder = Namensraum.GetDefaultFolder(olFolderContacts)
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz