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

Alle Verteiler erweitern

Frage Entwicklung VB for Applications

Mitglied: Uppe

Uppe (Level 1) - Jetzt verbinden

04.03.2010 um 10:31 Uhr, 2781 Aufrufe, 1 Kommentar

Hallo,

mit Hilfe diverser Foren habe ich folgenden Code zusammengebastelt:
01.
Private Sub CommandButton1_Click() 
02.
 
03.
'Deklaration 
04.
Dim OutApp As Object 
05.
Dim nspMapi As Object 
06.
Dim folMapi As Object 
07.
Dim itmAll As Object 
08.
Dim itmReal As Object 
09.
Dim itmDistList As Object 
10.
Dim strContactFilter As String 
11.
Dim excApp As Object 
12.
Dim excWkb As Object 
13.
Dim excWks As Object 
14.
Dim intRow As Integer 
15.
Dim i As Integer 
16.
Dim j As Integer 
17.
Dim k As Integer 
18.
 
19.
Set OutApp = CreateObject("Outlook.Application") 
20.
'Outlook-Objekte öffnen 
21.
Set nspMapi = OutApp.GetNamespace("MAPI") 
22.
'Set folMapi = nspMapi.GetDefaultFolder(olFolderContacts) 
23.
'Ordner auswählen 
24.
Set folMapi = nspMapi.Folders.Item("Public Folders").Folders.Item("Contacts") 
25.
Set itmAll = folMapi.Items 
26.
 
27.
'nur Verteilerlisten verwenden 
28.
strContactFilter = "[MessageClass] = 'IPM.Distlist'" 
29.
Set itmReal = itmAll.Restrict(strContactFilter) 
30.
 
31.
'Excel-Objekte öffnen 
32.
Set excApp = CreateObject("Excel.Application") 'Neue Excel-Instanz 
33.
Set excWkb = excApp.Workbooks.Add 'Neues Workbook anlegen 
34.
Set excWks = excWkb.Sheets(1) 'Erstes Sheet 
35.
 
36.
'Excel-Worksheet aufbereiten 
37.
With excWks 
38.
  'Sheet-Name 
39.
  .Name = "Outlook-Verteilerlisten" 
40.
  'Spaltenüberschriften 
41.
  .Cells(1, 1).Value = "Verteiler" 
42.
  .Cells(1, 2).Value = "Name" 
43.
  'Spaltenüberschriften fett 
44.
  .Rows("1:1").Font.Bold = True 
45.
  'Outlook-Verteilerliste nach Excel übertragen 
46.
  intRow = 1 
47.
   
48.
  'Excel einblenden 
49.
  excApp.Visible = True 
50.
 
51.
  For Each itmDistList In itmReal 
52.
      .Cells(intRow + 1, 1).Value = itmDistList.DLName 
53.
      j = 1 
54.
      k = 1 
55.
      For i = 1 To itmDistList.MemberCount 
56.
        If InStr(1, itmDistList.GetMember(i).Address, "@") Then 
57.
          .Cells(intRow + k, 2).Value = itmDistList.GetMember(i).Address 
58.
          k = k + 1 
59.
        Else 
60.
          .Cells(intRow + j, 3).Value = itmDistList.GetMember(i).Name 
61.
          j = j + 1 
62.
        End If 
63.
      Next i 
64.
      intRow = intRow + WorksheetFunction.Max(k, j) 
65.
  Next itmDistList 
66.
   
67.
  'Optimale Spaltenbreite 
68.
  .Columns.AutoFit 
69.
End With 
70.
 
71.
'Speicher freigeben 
72.
Set itmReal = Nothing 
73.
Set itmAll = Nothing 
74.
Set folMapi = Nothing 
75.
Set nspMapi = Nothing 
76.
Set excWks = Nothing 
77.
Set excWkb = Nothing 
78.
Set excApp = Nothing 
79.
 
80.
End Sub
Bisher durchsucht das Programm alle Verteilerlisten in einem Ordner und schreibt die Mitglieder dieser Listen in Spalte B und C. In B kommen alle Mail-Adressen, in C alle Verteiler, die in dem oberen Verteiler enthalten sind.

Nun möchte ich eine kleine Änderung. Ich möchte, dass er die enthaltenen Verteiler nicht mehr in Spalte C schreibt, sondern auch erweitert. Am Ende sollen zu dem obersten Verteiler nur noch Namen in Spalte B stehen.

Wie muss ich den Code verändern?

Danke und Gruß Uppe
Mitglied: RedWraith
04.03.2010 um 13:22 Uhr
Also, bei dir steht im Moment sowas wie:

Verteiler     |      Addy 
--------------------------- 
Konferenz     | Klaus@xy.de 
Konferenz     | Monika@xy.de 
Konferenz     | Mike@xy.de 
Buchhaltung   | Jenny@xy.de 
Buchhaltung   | Peter@xy.de
Und du möchtest jetzt folgendes:

Verteiler      | Addy 
----------------------------- 
Konferenz      | Klaus@xy.de 
               | Monika@xy.de 
               | Mike@xy.de 
Buchhaltung    | Jenny@xy.de 
               | Peter@xy.de
Sehe ich das richtig ?

Wenn nein, dann habe ich dich leider falsch verstanden.

Auf jeden Fall realisiert man Obiges am Einfachsten, in dem du dir merkst, welchen Verteilerlistennamen du zuletzt ausgegeben hast und wenn der zuletzt Ausgegebene derselbe ist, wie der, der als nächstes ausgegeben werden würde, dann verhinderst du das schreiben einfach.

01.
if itmDistList.DLName <> LetzterVerteiler then 
02.
	.Cells(intRow + 1, 1).Value = itmDistList.DLName  
03.
else 
04.
	.Cells(intRow + 1, 1).Value = "" 
05.
end if 
06.
 
07.
LetzterVerteiler=itmDistList.DLName  
08.
 
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Server-Hardware
HP ML350 G9 P440AR Raid5 erweitern? (10)

Frage von sirbuschi2003 zum Thema Server-Hardware ...

Hyper-V
gelöst Hardware und Lizenzfrage: Hyper-V Umgebung um Redundanz erweitern (10)

Frage von Knorkator zum Thema Hyper-V ...

Windows Server
gelöst Wie hieß das Tool nochmal um die AD Anzeige der Reiter zu erweitern? (7)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
E-Mail Weiterleitung von POP-Account an Verteiler (4)

Frage von lupolo zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...