Kontaktimport Excel nach Outlook inkl. benutzerdefinierter Felder (VB6 Code)
Vb6-Code für den Import von Kontaktdaten aus einer Exceldatei nach Outlook inklusive benutzerdefinierter Felder
Hallo,
hab mir schon diverse Import und Export Tools für unsere Kontaktdatenbank gebastelt, da bei der in Outlook integrierten Lösung keine benutzerdefinierten Felder übernommen werden.
Dabei hab ich mir nun ein Addin für Outlook geschrieben, welches diese Aufgabe übernimmt.
Das Formular besteht aus einem Button, einem CommonDialog und einer Listbox.
Die erste Zeile in der Exceldatei enthält dabei die Feldnamen für die Outlookdatenbank (Diese müssen exakt passen).
Mfg
Benny
Hallo,
hab mir schon diverse Import und Export Tools für unsere Kontaktdatenbank gebastelt, da bei der in Outlook integrierten Lösung keine benutzerdefinierten Felder übernommen werden.
Dabei hab ich mir nun ein Addin für Outlook geschrieben, welches diese Aufgabe übernimmt.
Das Formular besteht aus einem Button, einem CommonDialog und einer Listbox.
Die erste Zeile in der Exceldatei enthält dabei die Feldnamen für die Outlookdatenbank (Diese müssen exakt passen).
Private Sub Command1_Click()
On Error GoTo ErrHandler
Dim vFiles As Variant
Dim lFile As Long
With CommonDialog1
.FileName = ""
.CancelError = True
.DialogTitle = "Select File"
.Filter = "Excel-Datei (*.xls)|*.xls;"
.ShowOpen
vFiles = Split(.FileName, Chr(0))
If UBound(vFiles) <> 0 Then
MsgBox ("Nur eine Datei auswählen")
Goto Ende
End If
End With
Dim Excel As Object
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
Excel.Workbooks.Open CommonDialog1.FileName
Dim x As Integer
Dim Y As Integer
x = Excel.worksheets.Item(1).usedrange.Columns.Count
Y = Excel.worksheets.Item(1).usedrange.Rows.Count
Dim i As Integer
Dim j As Integer
Dim aOutlook As Object
Dim Contacts As Object
Dim Contact As Object
Dim Filter As String
Dim DubContact As Object
'Set aOutlook = Application
set aOutlook = CreateObject("Outlook.Application")
Set Contacts = aOutlook.GetNameSpace("MAPI").Folders.Item("Öffentliche Ordner").Folders("Alle öffentlichen Ordner").Folders("Kontakte von Test")
For j = 2 To Y 'Jede Zeile in der Excelliste lesen
List1.Clear
List1.AddItem ("Index: " + CStr(j))
Set Contact = Contacts.Items.Add
For i = 1 To x 'Alle Eigenschaften in der Liste
Contact.itemProperties.Item(Excel.cells(1, i).Value).Value = Excel.cells(j, i).Value
List1.AddItem ("Schreibe " + Excel.cells(1, i).Value)
Next i
Filter = "[LastName] = '" + Contact.LastName + "' AND [BusinessAddressPostalCode] = '" + Contact.BusinessAddressPostalCode + "' AND [BusinessAddressStreet] = '" + Contact.BusinessAddressStreet + "' AND [CompanyName]= '" + Contact.CompanyName + "'"
Set DubContact = Contacts.Items.Find(Filter)
If DubContact Is Nothing Then
List1.AddItem ("Kontakt nicht doppelt")
List1.AddItem ("Kontakt gespeichert")
Contact.Save
Else
List1.AddItem ("***Kontakt doppelt***")
End If
Set Contact = Nothing
Next j
Exit Sub
ErrHandler:
If Err <> cdlCancel Then
MsgBox Err.Description
End If
Ende:
End Sub
Mfg
Benny
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 112138
Url: https://administrator.de/contentid/112138
Ausgedruckt am: 04.11.2024 um 22:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo Benny,
danke für die Anleitung bzw. eher das Skript.
Ich werde sie die Tage austesten. Meine Frage dazu: Welche Outlook-Version bedient sie (2003/2007) bzw. ist das für beide?
Viele Grüße
Jörg
PS: Vielleicht hast Du nen konzeptionellen Tipp für mich, wie man aus Outlook 2003 Adressen herausbekommt (im Sinne von Drag&Drop von Outlook nach Excel, ggf. auch per Export), wo die Postanschrift (Häcken gesetzt "Ist die Postanschrift") nicht in _einem_ Feld exportiert wird. Im Prinzip müsste es wohl ein Skript (?) sein, das abprüft, welche der beiden Adressen (Geschäftlich/Privat) die Postanschrift ist und dann alle Felder von AdressePrivat ODER AdresseGeschäftlich exportiert (Straße, PLZ, Ort).
danke für die Anleitung bzw. eher das Skript.
Ich werde sie die Tage austesten. Meine Frage dazu: Welche Outlook-Version bedient sie (2003/2007) bzw. ist das für beide?
Viele Grüße
Jörg
PS: Vielleicht hast Du nen konzeptionellen Tipp für mich, wie man aus Outlook 2003 Adressen herausbekommt (im Sinne von Drag&Drop von Outlook nach Excel, ggf. auch per Export), wo die Postanschrift (Häcken gesetzt "Ist die Postanschrift") nicht in _einem_ Feld exportiert wird. Im Prinzip müsste es wohl ein Skript (?) sein, das abprüft, welche der beiden Adressen (Geschäftlich/Privat) die Postanschrift ist und dann alle Felder von AdressePrivat ODER AdresseGeschäftlich exportiert (Straße, PLZ, Ort).
Hi Benny.
man, bist Du schnell!
Wir haben hier auch nur Outlook 2003, das ist auch völlig ok für uns.
Hinsichtlich meines Export-Problems:
Ich hab das natürlich gleich ausprobiert, allerdings hängts an Zeile 20: Fehlermeldung Laufzeitfehler 438. Objekt unterstützt diese Eigenschaft oder Methode nicht.
BREAK: war nen _l_ zuviel bei Mailling
Jau, geht! Die als Postanschrift markierte Adresse wird separiert nach Straße, PLZ, Ort in eine neue Excel-Tabelle ausgegeben. Klasse!
Allerdings nur genau eine Adresse (da, wo in Outlook der Cursor drin steht (aktiv ist in der Telefonlistenansicht).
Mehrere Zeilen markieren hat leider nicht geholfen. (vermute, dass die Selektion in Zeile 14 abgefragt wird?)
Kannst Du noch mal bitte gucken, was da das Problem ist?
Wo kann ich nachschauen, wie die Outlook-Felder für Anrede, Vorname, Name, Firma und Telex laueten? (nicht wundern. Im Feld Telex steht bei uns die Anzahl von zu liefernden Publikationen )
Herzlichen Dank
Jörg
man, bist Du schnell!
Wir haben hier auch nur Outlook 2003, das ist auch völlig ok für uns.
Hinsichtlich meines Export-Problems:
Ich hab das natürlich gleich ausprobiert, allerdings hängts an Zeile 20: Fehlermeldung Laufzeitfehler 438. Objekt unterstützt diese Eigenschaft oder Methode nicht.
BREAK: war nen _l_ zuviel bei Mailling
Jau, geht! Die als Postanschrift markierte Adresse wird separiert nach Straße, PLZ, Ort in eine neue Excel-Tabelle ausgegeben. Klasse!
Allerdings nur genau eine Adresse (da, wo in Outlook der Cursor drin steht (aktiv ist in der Telefonlistenansicht).
Mehrere Zeilen markieren hat leider nicht geholfen. (vermute, dass die Selektion in Zeile 14 abgefragt wird?)
Kannst Du noch mal bitte gucken, was da das Problem ist?
Wo kann ich nachschauen, wie die Outlook-Felder für Anrede, Vorname, Name, Firma und Telex laueten? (nicht wundern. Im Feld Telex steht bei uns die Anzahl von zu liefernden Publikationen )
Herzlichen Dank
Jörg
Hallo Benny,
ich hab das Skript probiert. An sich läuft es, jedoch gibt es noch eine kleine ""Macke"".
Die Variable Y bleibt immer auf 2, sie zählt offensichtlich in Zeile 19 nicht hoch.
Die Folge ist, dass ich beim Starten des Skriptes sehe, wie in der Excel-Tabelle in Zeile 2 alle im Outlook markieten Namensdatensätze ""durchrauschen"" (sieht cool aus ) und am Ende nur der letzte Datensatz in Zeile steht.
Könntest Du da bitte mal schauen? Ich krieg das nicht hin, habs probiert.
Ich muss mich mal mit den enormen Möglichkeiten von VB6 beschäftigen, wenn ich mal Zeit hab. Ist schon Klasse!
Viele Grüße
Jörg
ich hab das Skript probiert. An sich läuft es, jedoch gibt es noch eine kleine ""Macke"".
Die Variable Y bleibt immer auf 2, sie zählt offensichtlich in Zeile 19 nicht hoch.
Die Folge ist, dass ich beim Starten des Skriptes sehe, wie in der Excel-Tabelle in Zeile 2 alle im Outlook markieten Namensdatensätze ""durchrauschen"" (sieht cool aus ) und am Ende nur der letzte Datensatz in Zeile steht.
Könntest Du da bitte mal schauen? Ich krieg das nicht hin, habs probiert.
Ich muss mich mal mit den enormen Möglichkeiten von VB6 beschäftigen, wenn ich mal Zeit hab. Ist schon Klasse!
Viele Grüße
Jörg
Hi Benny,
ich danke Dir für Deine Mühe, das Skript geht!
Es bleibt zwar reproduzierbar immer genau nach 232 Adressen mit ner Fehlermeldung (Laufzeitfehler -142852667 (ab404005) ) stecken, aber vielleicht krieg ich das selber raus (i dimensionieren?)
Danke Dir nochmals.
Wenn ich es hinbekommen habe, werde ich es mit Verweis auf Deine Vorarbeit posten, damit alle was davon haben.
Viele Grüße
Jörg
ich danke Dir für Deine Mühe, das Skript geht!
Es bleibt zwar reproduzierbar immer genau nach 232 Adressen mit ner Fehlermeldung (Laufzeitfehler -142852667 (ab404005) ) stecken, aber vielleicht krieg ich das selber raus (i dimensionieren?)
Danke Dir nochmals.
Wenn ich es hinbekommen habe, werde ich es mit Verweis auf Deine Vorarbeit posten, damit alle was davon haben.
Viele Grüße
Jörg
Moin Benny,
könntest Du wohl noch dazu schreiben, an welche Stelle im Outlook dieser Code geschrieben werden muss?
Dann hätte Dein Beitrag den Titel "Anleitung" auch wirklich verdient...!
Ich hab's einfach mal in "DieseOutlookSitzung" kopiert.
Konnte aber nach einem Outlook-Neustart keine Änderungen feststellen.
Gruß CeMeNt
könntest Du wohl noch dazu schreiben, an welche Stelle im Outlook dieser Code geschrieben werden muss?
Dann hätte Dein Beitrag den Titel "Anleitung" auch wirklich verdient...!
Ich hab's einfach mal in "DieseOutlookSitzung" kopiert.
Konnte aber nach einem Outlook-Neustart keine Änderungen feststellen.
Gruß CeMeNt