13martin37
Goto Top

Abgleich von Outlookkontaktfeldern mit einer externen Datei

Mittels eines VBA-Makros soll ein Feld innerhalb eines Kontakts auf seine Korrektheit untersucht werden.

Hallo!

ich hab nur eine kleine Frage zu einer für mich schwierigen Problemstellung face-smile Ich will gar keine Programmierlösung (die will ich schon selber machen face-smile ), sondern will eigentlich nur wissen, ob es generell machbar ist (kenne mich noch nicht mit VBA aus).

Darum gehts:
Es müssen benutzerdefinierte Felder innerhalb eines Kontakts, die nur mit den Werten "Ja" und "Nein" belegt werden können, mit einer Excelliste (oder irgendeiner anderen externen Datei (Textliste)) abgeglichen werden.
Stimmt der Eintrag in Outlook nicht mit dem Eintrag in der Exceltabelle überein, sollte er mit dem Excelwert überschrieben werden.
Dabei sollten mehrere tausend Kontakte am besten anhand der E-Mailadresse des Kontakts abgeglichen werden.

Mich interessiert vor allem, ob der Abgleich mit einer Text- oder Exceldatei möglich ist. Und wenn ja, wieviel Aufwand sich hinter der ganzen Aufgabe verbirgt.

Vielen Dank schon mal im Vorraus,
Martin

EDIT:
Die Aufgabenstellung ein bisschen logischer/einfacher:
In der Excelliste/Textdatei stehen Emailadressen für die das Checkboxfeld im Kontakt auf "Nein" stehen sollte. Jetzt soll überprüft werden, ob die zugehörigen Emailadressen in den Outlook Kontakten auch auf "Nein" stehen und gegebenenfalls überschrieben werden.

Content-ID: 105801

Url: https://administrator.de/contentid/105801

Ausgedruckt am: 17.11.2024 um 05:11 Uhr

kruder
kruder 15.01.2009 um 02:05:29 Uhr
Goto Top
Hi Martin,

möglich ist es. Der Aufwand sollte nicht allzu groß sein.
Als Neuling in VB/VBA dauert es evt. nen bisschen länger
aber es ist machbar... Du musst letzten Endes nur die
externe Datei strukturiert, einlesen und einen paar Vergleiche
vollziehen und entsprechend agieren.

Wenn Du mit einer Excel-Datei arbeitest, dann solltest
Du diese der Einfachheit halber als *.csv (DOS) speichern.
Diese Datei dann einlesen und die Split-Funktion mit
dem Delimiter ";" nutzen. (Die *.csv benutzt das Semikolon
als Begrenzer zwischen den Zellen.)

Viel Spaß
kruder
kruder
kruder 15.01.2009 um 02:22:32 Uhr
Goto Top
Hi Martin,

ich nochmal...
Da ich nicht weiß wieviel Hintergrundwissen Du hast :

- lege dir vorm testen sicherheitskopien an!
- man spricht i.d.r von booleschen werten: "true" oder "false" und nicht von "Ja" und "Nein"
- die booleschen werte werden i.d.r. über ein objekt zugewiesen zb objectname.value=true
- mit strg+space bekommst du zu der aktuellen eingabe im editor möglichkeiten aufgezeigt, was unter anderen
zeitsparend und unter umständen auch wissenserweiternd sein kann...
- wenn du nicht weißt wie was gemacht wird, dann kann unter umständen das aufzeichnen eines
makros mit anschließender sichtung des quelltextes helfen...

genug der klug###erei, ich hoffe ich konnte ein
wenig helfen...

gruß
kruder
13martin37
13martin37 15.01.2009 um 13:15:33 Uhr
Goto Top
Hi Kruder,

danke für die Infos. Ein bisschen Hintergrundwissen hab ich =) Kann relativ gut C programmieren, deswegen sollte es auch kein großes Ding sein.
Danke für den Typ mit den .csv Datein, das dürfte das Auslesen ja einfacher machen.

Vielen Dank, ich mach mich jetzt mal an die Arbeit =)

Gruß, Martin
13martin37
13martin37 22.01.2009 um 19:20:11 Uhr
Goto Top
Hab das Programm jetzt soweit gelöst, hab jedoch ein anderes Problem. Es funktionier alles soweit so gut. Wenn ich jedoch zu viele Kontakte (ab 100) arbeitet das Programm nicht mehr richtig. Die Personen werden nicht gefunden, obwohl sie in den Kontakten drin stehen. Hier mal der Quelltext

Option Explicit

Private Sub CommandButton1_Click()
Dim Kontakt As ContactItem
Dim eMailAdresse As String
Dim i As Integer
On Error Resume Next

Open "U:\Outlook\Abmeldungen.txt" For Input As #1
For i = 0 To 30
Line Input #1, eMailAdresse
MsgBox eMailAdresse + " wird gesucht!"

For Each Kontakt In Session.GetDefaultFolder(olFolderContacts).Items
If Kontakt.Email1Address = eMailAdresse Then
MsgBox Kontakt.LastNameAndFirstName + " mit der Emailadresse " + eMailAdresse + " gefunden" _
+ vbCr + "Markierung entfernt!"
Kontakt.UserProperties("News").Value = False
Kontakt.Save
End If
Next
Next

Close #1
MsgBox "Aufgabe erledigt"
Unload Me
End Sub