Outlook Wählhilfe (Makro) ohne Box zu modifizieren

Status
Für weitere Antworten geschlossen.
x-herbert schrieb:
DIRTY HACKING!!!

Thema ist immer noch "Suche alle Kontakte"

Vorweg. ich habe drei "Hauptordner" mit jeweils mehreren Kontakte-Ordnern

mein Testscript:
PHP:
Sub mytest()
    
    Dim outApp        As Outlook.Application
    Dim outNms        As Outlook.NameSpace
    Dim aktKontakt    As Object  ' aktuelles Element
    Dim iIndx, jIndx, kIndx  As Integer
    Dim sAdLName      As String
    Dim sFdrMName     As String  ' Haupt-ordner-Name
    Dim alleTelNr     As Variant ' alle TelNr eines Kontakts
    Dim outFdr        As MAPIFolder
    Dim outCon        As Object

    
    Set outApp = New Outlook.Application
    Set outNms = outApp.GetNamespace("MAPI")
 
   
    For iIndx = 1 To outNms.Folders.Count
      sFdrMName = outNms.Folders.Item(iIndx).Name
      For jIndx = 1 To outNms.Folders.Item(iIndx).Folders.Count
        Set outFdr = outNms.Folders.Item(iIndx).Folders.Item(jIndx)
        If outFdr.DefaultItemType = olContactItem Then
          For kIndx = 1 To outNms.Folders.Item(iIndx).Folders.Item(jIndx).Items.Count
            Set outCon = outNms.Folders.Item(iIndx).Folders.Item(jIndx).Items.Item(kIndx)
            With outCon
              ' nur Kontakte werden durchsucht
              If .Class = olContact Then
                  alleTelNr = Array(.AssistantTelephoneNumber, .BusinessTelephoneNumber, _
                      .Business2TelephoneNumber, .CallbackTelephoneNumber, .CarTelephoneNumber, _
                          .CompanyMainTelephoneNumber, .HomeTelephoneNumber, .Home2TelephoneNumber, _
                                  .ISDNNumber, .MobileTelephoneNumber, .OtherTelephoneNumber, _
                                      .PagerNumber, .PrimaryTelephoneNumber, .RadioTelephoneNumber)
              End If
            End With
          Next
        End If
      Next
    Next
    
    Set outFdr = outNms.GetDefaultFolder(olFolderContacts)
    For iIndx = 1 To outFdr.Items.Count
      Set outCon = outNms.GetDefaultFolder(olFolderContacts).Items(iIndx)
      With outCon
        ' nur Kontakte werden durchsucht
        If .Class = olContact Then
            alleTelNr = Array(.AssistantTelephoneNumber, .BusinessTelephoneNumber, _
                .Business2TelephoneNumber, .CallbackTelephoneNumber, .CarTelephoneNumber, _
                    .CompanyMainTelephoneNumber, .HomeTelephoneNumber, .Home2TelephoneNumber, _
                            .ISDNNumber, .MobileTelephoneNumber, .OtherTelephoneNumber, _
                                .PagerNumber, .PrimaryTelephoneNumber, .RadioTelephoneNumber)
        End If
      End With
    Next
        
End Sub

Im "ersten" Teil finde ich alle meine Kontakte mit entsprechenden Telefonnummern - leider keine Unterordner...
Wenn man das "outNms" ausgeben lässt, sind alle Elemente gut zu "sehen"

Ich habe mal den Code aus "FindeAbsender" übernommen um zu testen, ob hier auch die Unterordner gefunden werden (habe in dem Default-Kontakte ein Unterodner angelegt) - die werden aber bei der "zweiten" Schleife nicht aufgelistet???

[dass die Schleifen auch mit "each" usw. gehen is schon klaro... hier gehts ums Prinzip!]

Würde gern mal die Meinung der Fachmänner hören/lesen...

Gruss x-herbert

Hallo,

das du keine unterordner durchsuchst ist klar. Die Unterordner sind Elemente/Inhalte des hauptordners, wir durchsuchen sie Rekursiv.
Code:
    ' Unterordner werden rekursiv durchsucht
    iOrdner = 1
    Do While iOrdner <= Ordner.Folders.Count And Not gefunden
        gefunden = FindeAbsender(Absender, KontaktID, Ordner.Folders.Item(iOrdner))
        iOrdner = iOrdner + 1
    Loop
das ist nicht das problem, mach es ähnlich, ich glaube damit kommst du zum Ziel. Versuche, die einzelnen Adressbücher mit der FindeAnrufer zu durchsuchen. (Kannst ja an die Findeanrufer den Pfad zum Adressbuch (Ordner As Object) übergeben)

Ich glaube das ist der weg, der am besten zum ziel führt.

Gruß Gert
 
Hallo,
habe mir das Fritzboxdingsbums 2.22 heruntergeladen. Nachdem ich nun die Installation weitgehend zustandegebracht habe, weiß ich nicht wo ich die Einstellungen vornehmen soll und die entsprechende Eingabemaske finde oder aufrufen kann. Sicherlich kann mir jemand auf die Sprünge helfen.
 
Rekursiv

@Kruemelino

wollte gerade das Thema "Rekursiv" mal ansehen... - bei Eurem Code habe ich das anscheinend überlesen -> mal sehen, wie weit ich komme...

Gruss x-herbert
 
Funzt

Habe mal ein kleines Testscript entworfen: es findet die Telefonnummer bzw. die KontaktId und die StorID (des KontakteOrdners)

Anzeige z.Z. als MsgBox
Eingabe Tel.Nr. fix

... findet bei mir sowohl in verschiedenene Hauptordnern (Persönlicher Ordner) als auch in Unterordnern eines Kontakte-Ordners

Bitte mal Testen, wie es bei anderen Konfigurationen aussieht...

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 = "0303410000099999"
    ' 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

Gruss x-herbert
 
Zuletzt bearbeitet:
Hallo Kruemelino,

vielen Dank für die Information. Hätte ich auch selbst drauf kommen können.
Unter Einstellungen läßt sich die voreingestellte IP 0.0.0.0. leider nicht mit der tatsächlichen IP überschreiben. Möglicherweise erhalte ich deshalb beim Wählversuch die Meldung: Fehler bei HTTP/POST und bei Aufruf des Anrufmonitors TCP/IP Fehler Error in open connection::connect case unknown in TCPIP::set last error code=0. Oder hat es mit der Einschaltung des internen Anrufmonitors nicht geklappt? (FRITZ!Box Fon WLAN 7141 (UI), Firmware-Version 40.04.30)
Hast Du auch hierzu eine Lösung?

Gruß Xenophon
 
aus allen Kontakten "Wählen"

Änderung:
PHP:
Function Wählbox(KontaktID As String, TelNr As String, StoreID As String)
...
        With CreateObject("Outlook.Application").GetNamespace("MAPI").GetItemFromID(KontaktID, StoreID)
....

passend dazu müssen alle Aufrufe der Wählbox um die StoreID ergänzet werden...
PHP:
Sub WählenAusKontakt()
    'Mit diesem Makro ist es möglich direkt aus einem geöffneten Kontakt oder Journaleintrag zu wählen. ähnlich wählboxstart

    Dim olAuswahl         As Inspector ' das aktuelle Inspector-Fenster (Kontakt oder Journal)
    Dim TelNr             As String    ' Telefonnummer des zu Suchenden
    Dim KontaktID         As String    ' KontaktID wird für Wählbox benötigt
    Dim vCard             As String
    Dim Name              As String
    Dim pos1              As Long
    Dim pos2              As Long
    Dim StoreID           As String
    
    Set olAuswahl = Application.ActiveInspector
    If Not olAuswahl Is Nothing Then
        With olAuswahl.CurrentItem
            If .Class = olContact Then  ' ist aktuelles Fenster ein Kontakt?
                Wählbox .EntryID, "", .Parent.StoreID
            ElseIf .Class = olJournal Then
                ' ist aktuelles Fenster ein Journal?
                If Not InStr(.Categories, "FritzBox Anrufmonitor") = 0 Then
                    ' wurde der Eintrag vom Anrufmonitor angelegt?
                    ' TelNr aus dem .Body entnehmen
                    TelNr = Mid(.Body, 11, InStr(1, .Body, vbNewLine) - 11)
                    If Not TelNr = "unbekannt" Then
                        If Not .Links.Count = 0 Then 'KontaktID des darangehangenen Kontaktes ermitteln
                            KontaktID = .Links.Item(1).Item.EntryID
                            StoreID = .Links.Item(1).Item.Parent.StoreID
                        Else
                            pos1 = InStr(1, .Body, "BEGIN:VCARD", vbTextCompare)
                            pos2 = InStr(1, .Body, "END:VCARD", vbTextCompare)
                            If Not pos1 = 0 And Not pos2 = 0 Then
                                pos2 = pos2 + 9
                                vCard = Mid(.Body, pos1, pos2 - pos1)
                                Name = Replace(ReadFromVCard(vCard, "N", ""), ";", "", , , vbTextCompare)
                                KontaktID = "-1" & Name & ";" & vCard
                            Else
                                KontaktID = "-1;"
                                StoreID = "-1;"
                            End If
                        End If
                        Wählbox KontaktID, TelNr, StoreID
                    End If
                End If
            End If
        End With
    End If
End Sub

! Journal ist noch nicht getestet!!

Gruss x-herbert
 
Die StoreID können wir die nicht verwenden, weil es die erst ab OL07 gibt, und man nicht davon ausgehen kann, dass jeder User das hat.
(Außerdem geht es auch ohne)
Ich guck mir das an.

So angeguckt.
Hab deinen Code in den Hauptcode übernommen, ich hoffe es funktioniert ohne diese StoreID.
Meine Änderung funktioniert bei mehreren Kontaktordnern in einer PST Datei. Wenn man mehrere hat, kann es sein, dass es nicht funktioniert.
Teste doch mal. Ich habe aus deinem Code die StoreID entfernt. Hatte damit das gleiche Ergebnis.

xenophon:
Die IP wird in der nächsten Version richtig angezeigt. Wenn der Test bei x-herbert funktioniert, kommt ein Update die nächsten Tage.
 
Zuletzt bearbeitet:
dscampari schrieb:
Ich benutze WinXP mit Office 2003. Die Box ist eine ATA mit der letzten (älteren) Firmware. Eine ältere Version des Tools hatte auch schon mal funktioniert.

Hallo

Ich habe gerade das Upgrade auf die neuste Version gemacht. Leider zeigt es mir die Telefonnamen im Wählfenster auch nicht mehr an. Der Code hat sich allerdings so stark verändert, dass der Tip aus Post 206 leider nicht mehr funktioniert. Gibt es bei der aktuellen Version auch einen so einfachen Work-around?

Vielen Dank!

Gruss.
 
StoreID

@Kruemelino
Die StoreID können wir die nicht verwenden, weil es die erst ab OL07 gibt...

meist Du mit OL07 die Version 2007?

Ich habe Outlook 2000 (9.0.0.2814)...

lt.
http://support.microsoft.com/kb/324530/de
sollte die StoreID schon ab OL97 dabei sein

ab OL2000 ist sie auf alle Fälle dabei!
siehe z.B. http://support.microsoft.com/kb/201074/de

Da ich in einer Konfiguration mit AVM-KEN! "Groupware" arbeite habe ich mindestens zwei (und mehr) "Persönliche Ordner", die ich natürlich auch gern durchsucht hätte...

Gruss x-herbert
 
IP-Adresse

@Kruemelino & @xenophon

... hatt ich nicht gepostet???...

Mit dem Workaround mit dem Vergleich des Gateway wird bei mir die richtige IP des Rechners gefunden...

Gruss x-herbert
 
Hallo

In der Anhang anzeigen 17475 ist die Sache mit der IP drinne, einfach die vorhandene ersetzen, sollte dann funktionieren.

DIe zweite Sache ist ist die sache mit den Kontakten. Wir haben eine schöne Lösung gefunden: Wir übergeben olNamespace an die FindeAnrufer. Mit zwei kleinen Änderungen dadrin, durchsucht diese alle vorhandenen Ordner.
Code:
    If Ordner.Class = olFolder Then
        If Ordner.DefaultItemType = olContactItem Then
            iKontakt = 1
            Do While Not gefunden And iKontakt <= Ordner.Items.Count
            [...]
            Loop
        End If
    End If
Die zwei if-Abfragen hinzufügen, schon funktioniert der Spaß.

Meine OL07 Hilfe hat für das Element StoreID gemeint, dass es erst ab Version 2007 hinzugefügt wurde. Wenn es bei dir funktioniert, ist die Hilfe dumm.

Gruß Gert
 
StoreID

also...


ergo halte ich die Verwendung der StoreID immer noch als die saubere Lösung insb. wenn mal das Durchsuchen von Exchange-Ordnern hinzukommen soll(te)

Gruss x-herbert
 
@Kruemelino

was sollen "ex-ordner" sein??

Ich habe zwei (eigentlich drei) "Persönliche Ordner" (PO) mit jeweils verschiedenen Kontakte-Ordnern. Die "Ordnertiefe" in den PO ist 1, dh. keine inenandergeschachtelten (Kontakte-)Ordner.

Der Haupt-PO liegt auf meinem Rechner - der zweite PO liegt auf dem Server und wird mit anderen Rechnern "geteilt".

Mit meinem Testscript siehe #305
finde ich alle Kontakte in
* verschiedenen POs
* in verschachtelten Kontakteordnern (Thema rekursiv)

... im IRQ, Chat o.ä. bin ich nicht aktiv aber ich kann Dir/Euch auf Wunsch meine VoIP-Nummer geben, sofern direkte Fragen sind

Gruss x-herbert

PS: Bitte mal den Quelltext austauschen...

PHP:
If cbRequired > 0 Then
    ReDim buff(0 To cbRequired - 1) As Byte
    If GetAdaptersInfo(buff(0), cbRequired) = 0 Then
        'Zeiger (Pointer) zu den gespeicherten Daten (buff) ermitteln
        ptr1 = VarPtr(buff(0))
        'ptr1 ist 0 wenn keine weiteren Adapter vorhanden sind
        Do While Not ptr1 = 0
            'aktuellen Zeiger auf Datenstruktur (Adapter) zuweisen
            CopyMemory Adapter, ByVal ptr1, LenB(Adapter)
            With Adapter
                'IP-Adresse des Adapters auslesen
                sIPAddr = TrimNull(StrConv(.IpAddressList.ipaddress.ipAddr, vbUnicode))
                ' IP-Adresse des zugehörigen Gateways auslesen
                sGWAddr = TrimNull(StrConv(.GatewayList.ipaddress.ipAddr, vbUnicode))
                If Not InStr(1, sGWAddr, FB_ADD, vbTextCompare) = 0 Or Not InStr(1, sIPAddr, FB_ADD, vbTextCompare) = 0 Then
                  LocalIPAddress = sIPAddr
                End If
                'Poiner auf nächsten Adapter setzen
                ptr1 = .dwNext
            End With
        Loop
    End If
End If
 
@xenophon:

Hast Du den Code von x-herbert, bzw. Kruemelino getestet, um die IP-Adresse der Netzwerkkarte richtig erkennen zu lassen???
Ansonsten versuche bitte folgenden Weg:

Ändere doch mal die Reihenfolge der Netzwerkkarten in der Netzwerkumgebung:
Eigenschaften der Netzwerkumgebung->Erweitert->Erweiterte Einstellungen.
Unter Verbindungen stelle Deine Netzwerkarte als erste Karte ein...

Gruß

MarcoMarco
 
Suche alle Kontakte

@Kruemelino

ich bin mir mit der Namenskonvention nicht ganz sicher, aber wir meinen warscheinlich das Selbe.

Kannst Du die Dateien mit den Änderungen mal komplett zum Download bereitstellen...

... ich teste die Sachen dann mal!

Gruss x-herbert
 
@xenophon & @Kruemelino

sorry, hatte noch an einer anderen Baustelle zu tun. Nach ersetzen der Datei steht zwar eine andere IP im Feld als vorher, eine Änderung des Feldinhaltes auf meine IP ist aber weiterhin nicht möglich. Auch die Positionsänderung nach marcomarco hat nichts gebracht. Alle anderen Felder lassen sich bearbeiten. ?????
 
IP-Adresse

@xenophon

ich glaube, man braucht zur Lösung des problems mehr Informationen über Deine Konfiguration
* wird die IP statisch oder dynamsich (DHCP-Server) zugewiesen
* wenn statisch
- wie lautet die IP Adresse
- wie die IP der FB
- was gibt es sonnst noch für Einstellungen Gateway usw.

mit dem folgenden Script kannst Du dir alle Netzwerkadapter ausgeben lassen
PHP:
Option Explicit

'IP-Adressen ermitteln
Private Declare Function GetAdaptersInfo Lib "iphlpapi.dll" (pTcpTable As Any, pdwSize As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)

Private Const MAX_ADAPTER_NAME_LENGTH         As Long = 256
Private Const MAX_ADAPTER_DESCRIPTION_LENGTH  As Long = 128
Private Const MAX_ADAPTER_ADDRESS_LENGTH      As Long = 8

Private Type IP_ADDRESS_STRING
    ipAddr(0 To 15)  As Byte
End Type

Private Type IP_MASK_STRING
    IpMask(0 To 15)  As Byte
End Type

Private Type IP_ADDR_STRING
    dwNext     As Long
    ipaddress  As IP_ADDRESS_STRING
    IpMask     As IP_MASK_STRING
    dwContext  As Long
End Type

Private Type IP_ADAPTER_INFO
  dwNext                As Long
  ComboIndex            As Long
  sAdapterName(0 To (MAX_ADAPTER_NAME_LENGTH + 3))        As Byte
  sDescription(0 To (MAX_ADAPTER_DESCRIPTION_LENGTH + 3)) As Byte
  dwAddressLength       As Long
  sIPAddress(0 To (MAX_ADAPTER_ADDRESS_LENGTH - 1))       As Byte
  dwIndex               As Long
  uType                 As Long
  uDhcpEnabled          As Long
  CurrentIpAddress      As Long
  IpAddressList         As IP_ADDR_STRING
  GatewayList           As IP_ADDR_STRING
  DhcpServer            As IP_ADDR_STRING
  bHaveWins             As Long
  PrimaryWinsServer     As IP_ADDR_STRING
  SecondaryWinsServer   As IP_ADDR_STRING
  LeaseObtained         As Long
  LeaseExpires          As Long
End Type



Private Function LocalIPAddresses() As String
On Error Resume Next
'für API-Aufrufe
Dim cbRequired  As Long
Dim buff()      As Byte
Dim Adapter     As IP_ADAPTER_INFO
Dim AdapterStr  As IP_ADDR_STRING
'allgemeine Variablen
Dim ptr1        As Long
Dim sIPAddr     As String
Dim sAllAddr    As String
   
Call GetAdaptersInfo(ByVal 0&, cbRequired)
If cbRequired > 0 Then
    ReDim buff(0 To cbRequired - 1) As Byte
    If GetAdaptersInfo(buff(0), cbRequired) = 0 Then
        'Zeiger (Pointer) zu den gespeicherten Daten (buff) ermitteln
        ptr1 = VarPtr(buff(0))
        'ptr1 ist 0 wenn keine weiteren Adapter vorhanden sind
        Do While (ptr1 <> 0)
            'aktuellen Zeiger auf Datenstrucktur (Adapter) zuweisen
            CopyMemory Adapter, ByVal ptr1, LenB(Adapter)
            With Adapter
                'IP-Adresse des adapters auslesen
                sIPAddr = TrimNull(StrConv(.IpAddressList.ipaddress.ipAddr, vbUnicode))
                'und Name des Adapters durch das Ascii-Zeichen 1 getrennt, anfügen
                sAllAddr = sAllAddr & sIPAddr & Chr(1) & TrimNull(StrConv(.sDescription, vbUnicode)) & vbCrLf
                'Poiner auf nächsten Adapter setzen
                ptr1 = .dwNext
            End With
        Loop
    End If
End If

'letzes vbcrlf entfernen, wenn Adapter gefunden wurden
If Len(sAllAddr) > 0 Then sAllAddr = Left(sAllAddr, Len(sAllAddr) - 2)
'und Liste der Adapter mit ihren IP-Adressen ausgeben
LocalIPAddresses = sAllAddr
End Function


Private Function TrimNull(ByVal str As String) As String
On Error Resume Next

TrimNull = Trim(Left(str, InStr(str, Chr(0)) - 1))
End Function


Private Sub cmdRefresh_Click()
'IP-Adressen incl. Adapter ermitteln
'und das Ascii-Zeichen 1 durch das Trennzeichen " / " ersetzen
txtIPs.Text = Replace(LocalIPAddresses, Chr(1), " / ")
End Sub

erstelle eine Userform mit Button cmdRefresh und Textbox txtIPs

In der Textbox werden alle Netzwerkadapter mit IP und Namen aufgelistet.

zur Konfigform: die IP-Adresse kann nicht verändert werden (steht in Klammern)

@Kruemelino
vielleicht sollte für das Feld Enabled auf False gesetzt werden damit das "nur lesen" deutlicher wird

Gruss x-herbert
 
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.