Function Wählbox(KontaktID As String, TelNr As String)
' macht alle Eintragungen in 'formWählbox'
' aus FritzBoxDial übernommen und überarbeitet
' Parameter: KontaktID (String): ID der Kontaktdaten des Anzurufenden
' TelNr (String): Telefonnummer des Anzurufenden
Dim alleTelNr As Variant ' alle im Kontakt enthaltenen Telefonnummern
Dim alleNrTypen As Variant ' die Bezeichnungen der Telefonnummern
Dim i As Long, iTelNr As Long ' Zählvariablen
Dim pos As Long ' Position innerhalb eines Strings
Dim LandesVW As String ' eigene Landesvorwahl
Dim MyStoreID As String
MyStoreID = "0000000038A1BB1005E5101AA1BB08002B2A56C200005053545052582E444C4C00000000000000004E495441F9BFB80100AA0037D96E000000433A5C446F6B756D656E746520756E642045696E7374656C6C756E67656E5C737465696E68617264745C4C6F6B616C652045696E7374656C6C756E67656E5C416E77656E64756E6773646174656E5C4D6963726F736F66745C4F75746C6F6F6B5C313135303238363036316B656E2E70737400"
LandesVW = GetSetting("FritzBox", "Optionen", "TBLandesVW", "0049")
formWählbox.Tag = KontaktID
' Liste entleeren
formWählbox.listTel.Clear
iTelNr = 0
' Ist der Kontakt nicht vorhanden (z.B. Rückruf)?
If Left(KontaktID, 2) = "-1" Then
' Ortsvorwahl vor die Nummer setzen, falls eine Rufnummer nicht mit "0" beginnt und nicht mit "11"
' (Rufnummern die mit "11" beginnen sind Notrufnummern oder andere Sondernummern)
If Not Left(nurZiffern(TelNr, LandesVW), 1) = "0" And Not Left(nurZiffern(TelNr, LandesVW), 2) = "11" Then _
TelNr = GetSetting("FritzBox", "Optionen", "TBVorwahl", "") & TelNr
pos = InStr(KontaktID, ";")
' Fenstertitel setzen
If Mid(KontaktID, 3, pos - 3) = "" Then
formWählbox.Caption = "Anruf: " & TelNr
Else
formWählbox.Caption = "Anruf: " & Mid(KontaktID, 3, pos - 3)
End If
' Liste füllen
formWählbox.listTel.AddItem
formWählbox.listTel.List(0, 0) = 1
formWählbox.listTel.List(0, 2) = TelNr
Else
' Welche Telefonnummerntypen sollen angezeigt werden?
' http://support.microsoft.com/kb/293152/
' http://www.pcreview.co.uk/forums/thread-1840160.php
With CreateObject("Outlook.Application").GetNamespace("MAPI").GetItemFromID(KontaktID, MyStoreID)
' Fenstertitel setzen
formWählbox.Caption = Replace("Anruf: " & .FullName & " (" & .CompanyName & ")", " ()", "", , , vbTextCompare)
' labelStatus initialisieren
formWählbox.labelStatus.Caption = ""
' Die einzelnen Telefonnummern in ein Array packen
alleTelNr = Array(.AssistantTelephoneNumber, .BusinessTelephoneNumber, _
.Business2TelephoneNumber, .CallbackTelephoneNumber, .CarTelephoneNumber, _
.CompanyMainTelephoneNumber, .HomeTelephoneNumber, .Home2TelephoneNumber, _
.ISDNNumber, .MobileTelephoneNumber, .OtherTelephoneNumber, _
.PagerNumber, .PrimaryTelephoneNumber, .RadioTelephoneNumber)
' Die deutsche Bezeichnung der Nummerntypen
' für Anzeigezwecke auch in ein Array packen.
alleNrTypen = Array("Assistent", "Geschäftlich", "Geschäftlich2", "Rückmeldung", _
"Auto", "Firma", "Privat", "Privat2", "ISDN", "Mobiltelefon", "Weitere", _
"Pager", "Haupttelefon", "Funkruf")
End With
' Liste füllen
For i = LBound(alleTelNr) To UBound(alleTelNr)
If Not alleTelNr(i) = "" Then
' Wenn die Telefonnummer nicht leer ist, dann in die Liste hinzufügen
formWählbox.listTel.ColumnCount = 3
formWählbox.listTel.AddItem
formWählbox.listTel.List(iTelNr, 0) = iTelNr + 1
'Ortsvorwahl vor die Nummer setzen, falls eine Rufnummer nicht mit "0" beginnt und nicht mit "11"
'(Rufnummern die mit "11" beginnen sind Notrufnummern oder andere Sondernummern)
If Not Left(nurZiffern(alleTelNr(i), LandesVW), 1) = "0" And Not Left(nurZiffern(alleTelNr(i), LandesVW), 2) = "11" Then _
alleTelNr(i) = GetSetting("FritzBox", "Optionen", "TBVorwahl", "") & alleTelNr(i)
If alleTelNr(i) = TelNr Then
formWählbox.listTel.List(iTelNr, 1) = alleNrTypen(i) & " *"
Else
formWählbox.listTel.List(iTelNr, 1) = alleNrTypen(i)
End If
formWählbox.listTel.List(iTelNr, 2) = alleTelNr(i)
iTelNr = iTelNr + 1
End If
Next
End If
' Keine der Telefonnummern darf bereits ausgewählt werden
formWählbox.listTel.ListIndex = -1
' Wähldialog anzeigen
formWählbox.Show vbModeless
End Function