Hallo!
Weiß jemand wie man ein Adressbuch, welches im Excel Format vorliegt, wieder in Outlook importieren kann?
Über die Importfunktion scheint es nicht zu funktionieren.
Grüße
Martin
Weiß jemand wie man ein Adressbuch, welches im Excel Format vorliegt, wieder in Outlook importieren kann?
Über die Importfunktion scheint es nicht zu funktionieren.
Grüße
Martin
Adressen aus Outlook nach Excel uebernehmen
-------------------------------------------
Versionen: Excel 97, 2000 und 2002
Beim Erstellen von Rechnungen, Lieferscheinen, Angeboten und
aehnlichen Dateien in Excel, wuerde man sich haeufig eine
Moeglichkeit zur Nutzung der bereits erfassten Adressen in
Outlook wuenschen. Standardmaessig bietet Excel diese
Moeglichkeit nicht, aber mit Hilfe von ein wenig VBA und
"Office-Automation" kommen Sie zum Ziel.
Office Automation ist ein Mechanismus, der den Zugriff auf
Funktionen, Daten und Einstellungen in anderen Office-
Anwendungen erlaubt. Dazu stellt jede Office-Anwendung ein
so genanntes "Objektmodell" zur Verfuegung, das in andere
Office-Anwendungen eingebunden werden kann und das einer
Office-Anwendung wie beispielsweise Excel darueber Auskunft
gibt, welche Objekte, Eigenschaften, Auflistungen und
Methoden in Outlook zur Verfuegung stehen. Fuer den Zugriff
kommt eine Objektvariable zum Einsatz, die mit einem Verweis
auf die anzusteuernde Office-Anwendung initialisiert wird.
Anschliessend koennen ueber diese Objektvariable Funktionen
der anzusteuernden Office-Anwendung ausgefuehrt,
Einstellungen ausgelesen oder Daten uebernommen werden.
So baut zum Beispiel unsere Loesung eine Verbindung zu
Outlook auf, oeffnet den Kontakteordner, liest aus den
vorhandenen Kontakten das Feld "Speichern unter" und "Ort"
aus, zeigt diese Informationen in einer Liste zur Auswahl an
und fuegt nach der Auswahl eines Kontaktes die
entsprechenden Adressdaten an der aktuellen Tabellenposition
ein.
Fuer den Einsatz der Loesung muessen Sie zunaechst einen
Verweis auf das Outlook-Objektmodell setzen und dann eine
UserForm sowie ein VBA-modul anlegen:
1. Oeffnen Sie die Arbeitsmappe, in der die Loesung
eingesetzt werden soll.
2. Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung.
3. Waehlen Sie das Menue EXTRAS-VERWEISE an, Aktivieren Sie 4. Fuegen Sie dem Projekt eine UserForm hinzu, auf der Sie * Listenfeld "lstKontakte" 5. Geben Sie im VBA-modul der UserForm das folgende Listing Option Explicit Dim objOutlook As Outlook.Application Dim arrItemIDs() As String Sub GetAdrList() Me.lstKontakte.Clear End Sub 6. Legen Sie fuer die Ereignisse "Initialize" und Private Sub UserForm_Initialize() On Error Resume Next Erase arrItemIDs() OutlEnde: OutlErr: End Sub Private Sub UserForm_Terminate() Set objFolder = Nothing End Sub 7. Geben Sie fuer das Listenfeld "lstKontakte" die folgende Private Sub lstKontakte_DblClick(ByVal Cancel As btnInsert_Click End Sub 8. Weisen Sie der Schaltflaeche "btnChoose" die folgende Private Sub btnChoose_Click() On Error Resume Next If objFolder.DefaultItemType <> olContactItem Then Set objFolder = tmpFolder End Sub 9. Fuer die Schaltflaeche "btnInsert" geben Sie ein: Private Sub btnInsert_Click() Idx = Me.lstKontakte.ListIndex Set objContact = _ strAdr = "" Application.Selection = strAdr End Sub 10. Das Abbrechen des Dialogfeldes ueber "btnCancel" Private Sub btnCancel_Click() Unload Me End Sub 11. Fuegen Sie nun dem Projekt noch ein allgemeines modul Sub OutlookAdresseWaehlen() frmOutlAdr.Show End Sub 12. Verlassen Sie die Entwicklungsumgebung und speichern Sie Wenn Sie nun eine Adresse aus Outlook in Excel einfuegen
das Kontrollkaestchen fuer das Objektmodell "Microsoft
Outlook
97/98, "9" fuer Outlook 2000 und "10" fuer Outlook 2002)
und klicken Sie auf OK, um die Aenderungen zu
uebernehmen.
die folgenden Steuerelemente anlegen:
* Schaltflaeche "btnChoose", Caption= KONTAKTEORDNER...
* Schaltflaeche "btnInsert", Caption= EINFUEGEN
* Schaltflaeche "btnCancel", Caption= ABBRECHEN
ein:
Dim objNamespace As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objContact As Outlook.ContactItem
Dim Cnt As Long
Set objItems = objFolder.Items
objItems.Sort "[FileAs]"
For Each objContact In objFolder.Items
Me.lstKontakte.AddItem objContact.FileAs & _
" (" & objContact.BusinessAddressCity & ")"
ReDim Preserve arrItemIDs(Cnt + 1)
arrItemIDs(Cnt) = objContact.EntryID
Cnt = Cnt + 1
Next
"Terminate" die folgenden Prozeduren fest:
Application.StatusBar = _
"Moment bitte, Outlook-Kontakte werden gelesen..."
Set objOutlook = GetObject(, "Outlook.Application")
If Err <> 0 Or TypeName(objOutlook) = "Nothing" Then
On Error GoTo OutlErr
Err = 0
Set objOutlook = CreateObject("Outlook.Application")
End If
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = _
objNamespace.GetDefaultFolder(olFolderContacts)
GetAdrList
Application.StatusBar = ""
DoEvents
Exit Sub '!!!
Beep
MsgBox "Zugriff auf Outlook ist nicht moeglich: " + _
Err.Description, vbOKOnly + vbCritical, _
"!!! Problem !!!"
Resume OutlEnde
Set objNamespace = Nothing
Set objOutlook = Nothing
Ereignisprozedur ein:
MSForms.ReturnBoolean)
Prozedur zu:
Dim tmpFolder As Outlook.MAPIFolder
Set tmpFolder = objNamespace.PickFolder
ActiveWindow.Activate
DoEvents
If Err <> 0 Or TypeName(tmpFolder) = "Nothing" Then
Beep
Exit Sub
End If
MsgBox "Der Ordner "" + objFolder.Name + _
"" ist kein Kontakte-Odner!", _
vbOKOnly + vbCritical, "!!! Problem !!!"
Exit Sub
End If
GetAdrList
Dim Idx As Long
Dim strAdr As String
If Idx < 0 Then
Beep
Exit Sub
End If
objNamespace.GetItemFromID(arrItemIDs(Idx))
With objContact
strAdr = strAdr & .Title & vbLf
strAdr = strAdr & .FirstName & " " & .LastName & vbLf
strAdr = strAdr & .BusinessAddressStreet & vbLf
strAdr = strAdr & .BusinessAddressPostalCode & _
" " & .BusinessAddressCity & vbLf
End With
Unload Me
erreichen Sie ueber die folgende Prozedur:
hinzu und geben Sie hier das folgende Listing ein:
die Arbeitsmappe.
moechten, markieren Sie zunaechst die gewuenschte Zelle.
Druecken Sie dann Alt+F8, um die Makroauswahl aufzurufen und
klicken Sie zweimal auf den Eintrag "OutlookAdresseWaehlen".
Daraufhin erscheint die soeben angelegte UserForm, in dem
die zur Zeit im Kontakteordner vorhandenen Elemente in der
Form "
"Schmidt, Johannes (Muenchen)", auflistet sind. Mit einem
Doppelklick auf einen Eintrag (oder Markierung des Eintrages
und Klick auf EINFUEGEN) wird die dazugehoerige Adresse dann
in die aktuelle Zelle eingefuegt.
gruss andre