Outlook Wählhilfe (Makro) ohne Box zu modifizieren

Status
Für weitere Antworten geschlossen.
Ja - hab das Makro mit der Änderung drauf.
Funktioniert und die richtige IP wird angezeigt.

PS: Hast Zeit für Dual gehabt?
 
:heul: :heul:

vergiss mich aber nicht.
 
Hallo Kruemelino,
bin immernoch schwer begeistert von deiner Arbeit!
Habe diesen Thread auch abonniert und verfolge deine / eure Arbeit.
Habe da noch den ein oder anderen Wunsch:
1. Im Anrufmonitor das Kontaktbild anzeigen lassen wenn vorhanden
2. ein Dezentes "klingelingeling" bei Anrufeingang (optional auswählbar?)
3. dyndns support
Ich weiß, wishlist ist immer etwas nervig, aber vielleicht stolpert ja jemand über die ein oder andere Funktion!
Weiter so... ich finds immernoch WELTKLASSE !!!
 
Suche in allen Kontakten => Wähle aus allen Kontakten

das Thema sollte nach obiger Headline geändert werden...

auch mit den neuen Beta-Dateien werden die Kontakte in allen Ordnern gefunden aber die Funktion "Wählbox" steigt an der Stelle aus
PHP:
        ' Welche Telefonnummerntypen sollen angezeigt werden?
        With CreateObject("Outlook.Application").GetNamespace("MAPI").GetItemFromID(KontaktID)

da wie beschrieben die StoreID fehlt...
...GetItemFromID(KontaktID,StoreID)

Zur Begriffsbestimmung:
mit Persönlicher Ordner meine ich (in OL 2000): Datei -> Neu -> Persönliche Ordner-Datei (.pst)
=> Anlegen
=> Kontakteordner rein (Anlegen oder Kopieren)

gruss x-herbert
 
Zuletzt bearbeitet:
Ich hab mal spaßheitshalber, eine PST-Datei angelegt, ein Kontaktordner in dieser angelegt und einen Kontakt reingeschoben. (Wie von dir beschrieben) Danach hab ich aus einer Email, den Kontakt angerufen. Dabei hat alles funktioniert. "Wählbox" ist nicht an besagter Stelle ausgestiegen. Vielleicht tritt dieser Fehler in nur älteren Outlook-Versionen auf. Was ist denn die genaue Fehlermeldung? Gibt es die KontaktID mehrfach?
:spocht:
 
FritzBox.log Pfad

@Kruemelino:

Bei mir wurde der Pfad der FritzBox.log immer auf das Root-LW gelegt, wo ich auch die Anrufliste.csv gelegt hatte. Dieses ist aber wegen "nur" Benutzerrechten" nicht gestattet. Der Temp-Ordner c:\Temp wurde von der Logdatei nicht genommen, obwohl ich die CSV-Datei dorthin gelegt habe.
Hier meine Routine, welche auch den Pfad auswertet und die Log-Datei in den selben Pfad legt:

Code:
Function LogFile(ByVal Text As String)
    ' ehemalige Funktion 'Errorlog'
    ' gibt Statusmeldungen im Direktbereich und bei Bedarf als LogFile aus
    ' Parameter:  Text (String):  der auszugebende Text
    Dim PfadLog As String
    Dim PfadAnrliste As String
    Dim pos, Temp_Pos As Long
    Dim i As Long
    PfadAnrliste = GetSetting("FritzBox", "Optionen", "TBAnrListe", "C:\Anrufliste.csv")
    For i = 1 To Len(PfadAnrliste)
        Temp_Pos = InStr(i, PfadAnrliste, "\", vbTextCompare)
        If Temp_Pos > 0 Then pos = Temp_Pos
    Next i
    PfadLog = Mid(PfadAnrliste, 1, pos) & "FritzBox.Log"
    Debug.Print Date + Time & " " & Text
    If GetSetting("FritzBox", "Optionen", "CBLogFile", False) Then
        Open PfadLog For Append As #1
            Print #1, Date + Time & " " & Text
        Close #1
    End If
End Function

Gruß

MarcoMarco
 
Zuletzt bearbeitet:
Wähle aus allen Kontakten

@Kruemelino

Arbeitsumgebung: WinXP Pro, OL 2000 (9.0.0.2814)

Wenn ich aus einem Kontakt aus dem KEN!-Persönlicher-Ordner Wähle erscheint Fehlernummer (error.png). Lt. OutlookSpy ist das eine fehlerhafte EntryID (error2.png)

Nach meinen Test funktioniert das Ganze, wenn die StoreID mit übergeben wird.

Zur Sicherheit habe ich in dem KEN-PO nochmal einen neuen Kontakteordner mit einem neuen Kontakt angelegt => gleiche Misere...

Gruss Ingolf
 

Anhänge

  • error.png
    error.png
    3.8 KB · Aufrufe: 5
  • error2.png
    error2.png
    3.7 KB · Aufrufe: 5
v2.23: Wählen & Zugriffsabfrage für OL-Ordner

Hallo zusammen,

seit der Umstellung auf v2.23 erscheint die Abfrage, ob ich den Zugriff auf OL-Ordner zulassen möchte, wenn ich bei markierter Email auf "Wählen" klicke.

Ich finde, dass dies etwas stört. Auch die Suchzeit hat sich verlängert. Kann man dieses Feature, dass auch andere OL-Kontakt-Ordner durchsucht werden, vielleicht in den Einstellungen wahlweise ein-/ausschalten?

Vielen Dank !!! Ist und bleibt aber ein super Tool !!!

Gruß
J.
 
Ausblick?

Eine Frage/Idee für die Zukunft:

wäre es nicht "schöner" aus dem Macros eine eigenständige Applikation zu basteln, die auf die Outlook-Daten zugreift. So muss OL nicht unbedingt geöffnet sein und einige "Probleme" mit dem Fenstermanagement können umgangen werden...

Am Code selber muss - soweit ich gesehen habe - nicht viel geändert werden...

Meinung dazu...??

gruss x-herbert
 
Version 2.23

... schade dass es die 'StoreID' nicht in den Quellcode geschafft hat... :(
 
.. wollte Dir nicht "auf die Füße treten"...

sieh´s als postive Motivation ;)
 
Hallo, ich bastle gerade an ein paar Dingen von euch:
Das Durchsuchen aller Kontakte ist jetzt in den Einstellungen abwählbar (bzw. einschaltbar).
Die Sache von marcomarco hab ich übernommen, mein Code war da doch etwas unfertig.
Dann werden Journaleintrage zukünftig in einer Kategorie sein, die die MSN erhällt , dann kann man sie noch besser unterscheiden.
Die Sache mit der StoreID: Probleme aufgetaucht:
Wenn ich an "Wählbox" da eine StoreID übergeben soll, ist das gar nicht so einfach. Die Funktion "Wählbox" wird 9 mal aufgerufen (z.B.: in "Wahlwiederholung" oder in "RückrufAnrListe"). Du hast nur "WählenAusKontakt" betrachtet, dort ist es einfach die StoreID zu ermitteln. Wenn der Fehler nur in "WählenAusKontakt" auftritt, würde mich das wundern.
Check mal ob der Fehler auch auftritt wenn, du aus einem Journaleintrag "wählst", oder eine Wahlwiederholung durchführst.
Dann würde ich dich bitten, dass du mal schaust, ob man die StoreID in der Funktion "Wählbox" aus der EntryID ermitteln kann. Wenn "GetItemFromID()" nicht funktioniert, geht es nicht.
Ich vermute fast, dass das Problem an deinem Ordner liegt, bei mir funktioniert es ja und Andere haben sich auch noch nicht beschwert.

Gruß Gert
 
StoreID

Hallo Kruemelino,

ich habe die V 2.23 mit OL 2003 und einer "externen" PSD (OL-Kompatibel 97-2000) getestet - hier scheint alles zu funktionieren...

Die Frage, wie fische ich die StoreID raus, ist glaube ich nicht so scher zu beantworten. - Vorweg: der Fehler bei GetItemFromID tritt natürlich immer auf, egal in welcher Funktion/Modul... -

Getestet hatte ich das Zusammenspiel zwischen AnrMonRing und FindeAnrufer (s.u.):
in FindeAnrufer hangeln wir uns ja bis zu einem ContactItem vor, welches eine EntryID (KontaktID) hat - der zugehörige Parent ist der entsprechende Ordner und der hat die StoreID => die StoreID muss nun nur noch zusätzlich zur KontaktID übergenen werden [...könnte man ja ggf. auch als Array machen...]

wie siehts also im Einzelnen für Funktionen mit GetItemFromID aus:
* AnrMonRing:
+ ruft FindeKontakt (FindeAnrufer) auf => FindeKontakt kann über aktKontakt.Parent.StoreID neben der EntryID auch die StoreID liefern
+ AnrMonRing kann StoreID auch für "letzterAnrufer" per SaveSetting speichern

* AnrMonDISCONNECT:
+ [habe hier nicht alles kapiert...] StoreID sollte per GetSetting für "letzterAnrufer" abgerufen werden können

* AnrMonEinblenden:
+ dito: StoreID per GetSetting aus "letzterAnrufer"

* Wählbox:
+ WählboxStart:
- StoreID über FindeKontakt
- StoreID muss mit in Journaleintrag
+ WählenAusKontakt:
- If .Class = olContact Then => StoreID = .Parent.StoreID
- StoreID muss mit in Journaleintrag
+ RückrufAnrListe:
- StoreID per GetSetting aus "AnrListe"
+ Wahlwiederholung:
- StoreID per GetSetting aus in "AnrListe"

* AnrMonCALL:
- StoreID über FindeKontakt

[StoreID-SaveSetting für AnrListe+letzterAnrufer: in AnrMonRing über FindeKontakt]

* formWählBox:
+ ButtonZeigeKontakt_Click:
- StoreID muss dem Form in Wählbox dito formWählbox.Tag = KontaktID übergeben werden

* Zusammenhang von oContactItems_ItemAdd und KontaktErstellen ist mir unklar

Ich habe mir natürlich die Frage gestellt, wie implementiert man die Sache relativ einfach => die erste Idee ist, die KontaktID (EntryID) und die StoreID als "Array" zu handhaben und "serialisiert" sowohl in der Registry als auch im Tag abzulegen z.B. als "EntryID|StoreID" also "098324583|52345092359".
Über split wären die zwei IDs ja auch gut zu trennen.

Hier nochmal meine alten Tests:
PHP:
Sub AnrMonRING_x()
    ' AnrMonRING(FBStatus As String, posRING As Long, anzeigen As Boolean)
    ' wertet einen eingehenden Anruf aus
    ' Parameter: FBStatus (String):   Status-String der FritzBox
    '            posRING (Long):      Position von RING im Status-String
    '            anzeigen (Boolean):  nur bei 'true' wird 'AnrMonEinblenden' ausgeführt
    
    Dim olNamespace As Outlook.NameSpace ' MAPI-Namespace
    Dim olFolder    As Outlook.MAPIFolder
    Dim TelNr       As String            ' ermittelte TelNr
    Dim Anrufer     As String            ' ermittelter Anrufer
    Dim vCard       As String            ' vCard des Anrufers
    Dim KontaktID   As String            ' ID der Kontaktdaten des Anrufers
    Dim LandesVW    As String            ' eigene Landesvorwahl
    Dim iIndx, jIndx, kIndx   As Integer
    Dim olFolderStoreID       As String        ' StoreId des Ordners
    
    LandesVW = "0049"
    TelNr = "0303416774"
    ' Daten zurücksetzen
    KontaktID = "-1;"
    Anrufer = ""
    
    ' Anrufer in den Outlook-Kontakten suchen
    Set olNamespace = CreateObject("Outlook.Application").GetNamespace("MAPI")
    ' laufe durch alle Ordner des Namespace
    For iIndx = 1 To olNamespace.Folders.Count
      ' laufe durch alle Items des/der Namespace-Ordner
      For jIndx = 1 To olNamespace.Folders.Item(iIndx).Folders.Count
        ' Setze Ordner-Variable
        Set olFolder = olNamespace.Folders.Item(iIndx).Folders.Item(jIndx)
        ' ist Ordner = Kontaktordner?
        If olFolder.DefaultItemType = olContactItem Then
          ' JA: dann...
          ' ...finde StoreID
          olFolderStoreID = olFolder.StoreID
          ' ...FindeAnrufer_x
          If FindeAnrufer_x(TelNr, LandesVW, KontaktID, olFolder, olFolderStoreID) Then
            With olNamespace.GetItemFromID(KontaktID, olFolderStoreID)
                Anrufer = Replace(.FullName & " (" & .CompanyName & ")", " ()", "")
                MsgBox Anrufer & Chr(13) & Chr(13) & olFolder.Name & Chr(13) & Chr(13) & olFolder.Parent.Name
            End With
          End If
        End If
      Next
    Next

    Set olNamespace = Nothing

End Sub

Private Function FindeAnrufer_x(TelNr As String, LandesVW As String, KontaktID As String, Ordner As Object, olFolderStoreID As String) As Boolean
    ' sucht in der Kontaktdatenbank nach der TelNr
    ' Parameter:  TelNr (String):      Telefonnummer des zu Suchenden
    '             LandesVW (String):   eigene Landesvorwahl
    '             KontaktID (String):  ID der Kontaktdaten falls was gefunden wurde (nur Rückgabewert)
    '             Ordner (Object):     der zu durchsuchende Kontaktordner (für die rekursive Suche)
    ' Rückgabewert (Boolean):          'true' wenn was gefunden wurde

    Dim iKontakt   As Long    ' Zählvariable für den aktuellen Kontakt
    Dim iOrdner    As Long    ' Zählvariable für den aktuellen Ordner
    Dim aktKontakt As Object  ' aktuelles Element
    Dim gefunden   As Boolean ' was gefunden?
    Dim alleTelNr  As Variant ' alle TelNr eines Kontakts
    Dim iTelNr     As Long    ' Zählvariable für die aktuelle TelNr
    Dim aktTelNr   As String  ' aktuelle TelNr
    
    gefunden = False
    iKontakt = 1
    Do While Not gefunden And iKontakt <= Ordner.Items.Count
        Set aktKontakt = Ordner.Items(iKontakt)
        With aktKontakt
            ' nur Kontakte werden durchsucht
            If .Class = olContact Then
                alleTelNr = Array(.AssistantTelephoneNumber, .BusinessTelephoneNumber, _
                    .Business2TelephoneNumber, .CallbackTelephoneNumber, .CarTelephoneNumber, _
                        .CompanyMainTelephoneNumber, .HomeTelephoneNumber, .Home2TelephoneNumber, _
                                .ISDNNumber, .MobileTelephoneNumber, .OtherTelephoneNumber, _
                                    .PagerNumber, .PrimaryTelephoneNumber, .RadioTelephoneNumber)
                iTelNr = LBound(alleTelNr)
                Do While Not gefunden And iTelNr <= UBound(alleTelNr)
                    If Not Len(alleTelNr(iTelNr)) = 0 Then
                        aktTelNr = nurZiffern(alleTelNr(iTelNr), LandesVW)
                        If TelNr = aktTelNr Then
                            gefunden = True
                            KontaktID = aktKontakt.EntryID
                            TelNr = alleTelNr(iTelNr)
                            olFolderStoreID = aktKontakt.Parent.StoreID
                        End If
                    End If
                    iTelNr = iTelNr + 1
                Loop
            End If
        End With
        DoEvents
        iKontakt = iKontakt + 1
    Loop
    ' Unterordner werden rekursiv durchsucht
    iOrdner = 1
    Do While iOrdner <= Ordner.Folders.Count And Not gefunden
        gefunden = FindeAnrufer_x(TelNr, LandesVW, KontaktID, Ordner.Folders.Item(iOrdner), Ordner.Folders.Item(iOrdner).StoreID)
        iOrdner = iOrdner + 1
    Loop
    FindeAnrufer_x = gefunden
    Set aktKontakt = Nothing
    'Set Ordner = Nothing ' ausgestellt für MsgBox
End Function
 
Zuletzt bearbeitet:
... wenn ich Dich irgenwie unterstützen kann??

PS: gibt es irgendwo "Release-Notes" was sich bei den jeweiligen Versionen geändert hat??
 
Zuletzt bearbeitet:
AHHH...

hatte übersehen, dass man hier scrollen kann!

alles klar!!
 
Status
Für weitere Antworten geschlossen.
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.