Zu Content springen
Deutsch
  • Es gibt keine Vorschläge, da das Suchfeld leer ist.

Kontakte in Outlook importieren (.vcf)

Ich habe mehrere Kontakte als .vcf Datei, aber Outlook kann nur immer einen Kontakten importieren, wie kann ich alle auf einmal importieren?

Wir brauchen Outlook Classic.

 

1. Ordner erstellen z.B. auf C: den Ordner XYZ. (c:\XYZ)
2. Kopieren Sie alle ihre .vcf Files in diesen Ordner.
3. Öffnen Sie Outlook und gehen Sie links oben auf Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center -> Makroeinstellungen.
4. Stellen sie um auf “Alle Makros Aktivieren” und schließen Sie mit “2x ok”. (Alte Einstellung merken!)
5. Drücken Sie ALT+F11. Es öffnet sich der VBA Editor.
6. Gehen Sie zu Extras -> Verweise und wählen Sie Microsoft Scripting Runtime und Windows Script Host Object Model aus. Danach OK.
7. Gehen Sie zu Einfügen -> Modul und kopieren Sie nachfolgenden Code in das offene Fenster des leeren Modules.  Danach drücken Sie STRG+S.

Option Explicit

Public Sub ImportAlleVCards()
    Dim sRoot As String
    sRoot = "C:\XYZ"   ' <-- HIER DEN PFAD ANPASSEN WENN NÖTIG

    If Dir(sRoot, vbDirectory) = "" Then
        MsgBox "Ordner nicht gefunden: " & sRoot, vbExclamation
        Exit Sub
    End If

    On Error GoTo ErrHandler
    Dim cnt As Long
    cnt = ImportVcfAusOrdner(sRoot)
    MsgBox cnt & " vCard(s) importiert.", vbInformation
    Exit Sub

ErrHandler:
    MsgBox "Fehler: " & Err.Number & " - " & Err.Description, vbCritical
End Sub

Private Function ImportVcfAusOrdner(ByVal sPath As String) As Long
    Dim fso As Object, folder As Object, file As Object, subf As Object
    Dim ns As Outlook.NameSpace
    Dim itm As Object
    Dim count As Long

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(sPath)
    Set ns = Application.Session  ' wir sind in Outlook

    ' Dateien im aktuellen Ordner
    For Each file In folder.Files
        If LCase$(fso.GetExtensionName(file)) = "vcf" Then
            On Error Resume Next
            Set itm = ns.OpenSharedItem(file.Path) ' öffnet .vcf als Kontakt
            If Err.Number <> 0 Then
                Debug.Print "VCF konnte nicht geöffnet werden: " & file.Path & " | " & Err.Description
                Err.Clear
            Else
                If TypeOf itm Is Outlook.ContactItem Then
                    Dim c As Outlook.ContactItem
                    Set c = itm
                    c.Save  ' speichert in Standard-Kontakte
                    count = count + 1
                End If
            End If
            On Error GoTo 0
        End If
    Next file

    ' Rekursiv durch Unterordner (ohne Hidden/System)
    For Each subf In folder.SubFolders
        If ((subf.Attributes And 2) = 0) And ((subf.Attributes And 4) = 0) Then
            count = count + ImportVcfAusOrdner(subf.Path)
        End If
    Next subf

    ImportVcfAusOrdner = count
End Function

 

 

8. Drücken Sie nun F5 und gehen Sie auf Ausführen um das Makro zu starten.
9. Die vCards werden nun automatisch in Outlook importiert. Warten Sie bis alles importiert ist.
10. Danach gehen Sie, wie in Punkt 3, links oben auf Datei -> Optionen -> Trust Center -> Einstellungen für das Trust Center -> Makroeinstellungen und ändern Sie die Einstellung wieder auf Ihre vorherige.