Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Outlook - VBA Parameter

Frage Entwicklung VB for Applications

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

12.06.2008, aktualisiert 13.06.2008, 11651 Aufrufe, 7 Kommentare

Hi Jungs,
ich bastel gerade mal wieder ein VBA Script zusammen. Dieses mal für meine Mutti...

Es wird folgendes realisiert: Über ein VBA Makro in Outlook 2003 werden alle Kontakte ausgelesen, die das Feld "Firma" nicht leer haben. Diese Kontakte werden dann in in eine neue Exceltabelle expotiert. Dabei werden natürlich nur bestimmte Felder importiert. Zu 95% habe ich alles zusammen, jedoch habe ich 2-3 Probleme wo ich nicht weiter komme.

1. Problem:
Es wurde in einigen Kontakten das Feld "Notizen" verwendet.

36fb40bb93163a33402b7254882f88d2-details - Klicke auf das Bild, um es zu vergrößern

Wie genau heißt das Feld im VBA? itmContacts. ???

2. Problem:
Es wurden 2 benutzerdefinierte Felder (Linie, FirmenNr) im Bereich Kontakte anlegt. Wie kann ich über VBA diese Felder auslesen. Denn wenn ich itmContacts. schreibe und dann STRG+Leertaste drücke erscheint das Drop-Down Menü. Dort werden leider nur die Standardfelder aufgeführt!

3. Problem:
Ich möchte zum Schluss aus diesem Makro heraus alle Zellen einen Rahmen verpassen. Die Möglichkeit, wie ich es bei einer einzelnen Zelle mache, habe ich gefunden aber es gibt bestimmt noch eine bessere Lösung als für jede Zelle eine VBA-Zeile zu schreiben.

Das Script wie es bis jetzt steht:
01.
ub ContactsToExcel() 
02.
 
03.
'Deklaration 
04.
Dim nspMapi As Outlook.NameSpace 
05.
Dim folMapi As Outlook.MAPIFolder 
06.
Dim itmAll As Outlook.Items 
07.
Dim itmReal As Outlook.Items 
08.
Dim itmContacts As Outlook.ContactItem 
09.
Dim strContactFilter As String 
10.
Dim excApp As Object 
11.
Dim excWkb As Object 
12.
Dim excWks As Object 
13.
Dim intRow As Integer 
14.
 
15.
'Outlook-Objekte öffnen 
16.
Set nspMapi = Application.GetNamespace("MAPI") 
17.
Set folMapi = nspMapi.GetDefaultFolder(olFolderContacts) 
18.
Set itmAll = folMapi.Items 
19.
 
20.
'Verteilerlisten herausfiltern, nur 'Richtige Kontakte' verwenden 
21.
strContactFilter = "[MessageClass] = 'IPM.Contact'" 
22.
Set itmReal = itmAll.Restrict(strContactFilter) 
23.
 
24.
'Excel-Objekte öffnen 
25.
Set excApp = CreateObject("Excel.Application") 
26.
Set excWkb = excApp.Workbooks.Add 
27.
Set excWks = excWkb.Sheets(1) 
28.
 
29.
'Erstes Sheet Excel-Worksheet aufbereiten 
30.
With excWks 
31.
 
32.
'Sheet-Name 
33.
.Name = "Outlook-Kontakte" 
34.
 
35.
'Spaltenüberschriften 
36.
.cells(1, 1).Value = "Firma" 
37.
'.cells(1, 2).Value = "Nachname" 
38.
'.cells(1, 3).Value = "Vorname" 
39.
.cells(1, 2).Value = "PLZ" 
40.
.cells(1, 3).Value = "Ort" 
41.
.cells(1, 4).Value = "Strasse" 
42.
.cells(1, 5).Value = "Land" 
43.
.cells(1, 6).Value = "Telefon" 
44.
.cells(1, 7).Value = "Fax" 
45.
.cells(1, 8).Value = "Homepage" 
46.
.cells(1, 9).Value = "E-Mail" 
47.
.cells(1, 10).Value = "KundenNr." 
48.
.cells(1, 11).Value = "Linie" 
49.
.cells(1, 12).Value = "Notizen" 
50.
 
51.
 
52.
'Spaltenüberschriften fett 
53.
.Rows("1:1").Font.Bold = True 
54.
 
55.
'Outlook-Kontakte nach Excel übertragen 
56.
intRow = 2 
57.
 
58.
For Each itmContacts In itmReal 
59.
    If (itmContacts.CompanyName <> "") Then 
60.
        .cells(intRow, 1).Value = itmContacts.CompanyName 
61.
        '.cells(intRow, 2).Value = itmContacts.LastName 
62.
        '.cells(intRow, 3).Value = itmContacts.FirstName 
63.
        .cells(intRow, 2).Value = itmContacts.BusinessAddressPostalCode 
64.
        .cells(intRow, 3).Value = itmContacts.BusinessAddressCity 
65.
        .cells(intRow, 4).Value = itmContacts.BusinessAddressStreet 
66.
        .cells(intRow, 5).Value = itmContacts.BusinessAddressCountry 
67.
        .cells(intRow, 6).Value = itmContacts.BusinessTelephoneNumber 
68.
        .cells(intRow, 7).Value = itmContacts.BusinessFaxNumber 
69.
        .cells(intRow, 8).Value = itmContacts.BusinessHomePage 
70.
        .cells(intRow, 9).Value = itmContacts.Email1Address 
71.
        .cells(intRow, 10).Value = itmContacts.CustomerID 
72.
        '.cells(intRow, 11).Value = itmContacts.im 
73.
         
74.
        intRow = intRow + 1 
75.
    End If 
76.
 
77.
 
78.
Next itmContacts 
79.
 
80.
'Optimale Spaltenbreite 
81.
.Columns.AutoFit 
82.
End With 
83.
 
84.
'Excel einblenden 
85.
excApp.Visible = True 
86.
 
87.
'Speicher freigeben 
88.
Set itmReal = Nothing 
89.
Set itmAll = Nothing 
90.
Set folMapi = Nothing 
91.
Set nspMapi = Nothing 
92.
Set excWks = Nothing 
93.
Set excWkb = Nothing 
94.
Set excApp = Nothing 
95.
 
96.
End Sub

Gruss,
Dani
Mitglied: bastla
12.06.2008 um 22:39 Uhr
Hallo Dani!

Leider habe ich nur für (das vermutlich kleinste) Problem 3 einen Tipp:
01.
For i = 7 To 12 
02.
    With .Cells(1, 1).CurrentRegion.Borders(i) 
03.
        .LineStyle = xlContinuous 
04.
        .Weight = xlThin 
05.
    End With 
06.
Next
Damit wird über den gesamten Datenbereich ein einfaches Gitternetz gelegt.

Grüße
bastla
Bitte warten ..
Mitglied: Dani
12.06.2008 um 22:54 Uhr
Hi bastla,
besser wir gar nicht...

Ich habe die paar Zeilen gerade in meinem Outlook in den VBA-Editor kopiert. Jedoch erhalte ich die Meldung, dass "xlContinuous" nicht definiert ist. <grübel>


Gruss,
Dani
Bitte warten ..
Mitglied: bastla
12.06.2008 um 22:59 Uhr
Hallo Dani!

Sorry - habe ich zu ersetzen vergessen (Outlook kennt natürlich keine Excel-VBA-Konstanten).

Nimm für "xlContinuous" den Wert 1 und für "xlThin" den Wert 2 (oder lege Konstante mit diesen Werten fest, um den Code lesbarer zu halten).

Grüße
bastla
Bitte warten ..
Mitglied: Dani
12.06.2008 um 23:17 Uhr
Hi bastla,
also da passt noch was nicht....er zeigt mir auch "With..." als Error an ("Sub oder Function nicht definiert").

An welcher Position genau, soll ich die 5 Zeilen einfügen. Vllt liegts daran..


Gruss,
Dani
Bitte warten ..
Mitglied: bastla
12.06.2008 um 23:24 Uhr
Hallo Dani!

Füge den Code zwischen den Zeilen 81 und 82 ein (und setze vor "Cells ..." noch einen Punkt - den trage ich oben auch noch nach).

Grüße
bastla
Bitte warten ..
Mitglied: Dani
12.06.2008 um 23:30 Uhr
Ok, die Stelle hat gepasst. Aber auf den Punkt bin ich nicht gekommen. Funktioniert.... Danke!

Hier noch der Nachtrag für die beiden anderen Probleme:
01.
        .Cells(intRow, 11).Value = itmContacts.User1 
02.
        .Cells(intRow, 12).Value = itmContacts.Body
Es gibt noch 4 standardmäßig vorhandene Benutzerdefinierte Felder und die Notizen findet man unter "Body". Naja, M$ eben...


Danke für deine Zeit.


Gruss,
Dani
Bitte warten ..
Mitglied: Aenex77
13.06.2008 um 09:41 Uhr
Vielleicht noch ein kleiner Hinweis, wenn man Openoffice hat kann man über Base direkt das Outlook Adressbuch als Datenbankquelle einbinden. Dort sieht man dann auch die Feldbezeichner sämmtlicher Einträge....

Gruss Andreas
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
Importieren von excel daten in outlook vba - Teil 2 (5)

Frage von Bgervais zum Thema Outlook & Mail ...

Microsoft Office
gelöst Importieren von excel daten in outlook vba (10)

Frage von Bgervais zum Thema Microsoft Office ...

VB for Applications
gelöst Outlook VBA, Alternative zu NewMailEx, neue bereits gelesene Email im Posteingang (12)

Frage von joha1908 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...