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, 2791 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 ..
Ähnliche Inhalte
LAN, WAN, Wireless
Glasfaser Switch als Verteiler (7)

Frage von Vancouverona zum Thema LAN, WAN, Wireless ...

Batch & Shell
gelöst String automatisch anpassen (erweitern oder kürzen) (9)

Frage von CreatorX zum Thema Batch & Shell ...

Microsoft Office
MS Office History erweitern (1)

Frage von leofabian zum Thema Microsoft Office ...

Batch & Shell
Batch Skript erweitern (1)

Frage von michi-ffm zum Thema Batch & Shell ...

Neue Wissensbeiträge
Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(5)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(5)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Viren und Trojaner

Neue Magazin Ausgabe: Malware und Angriffe abwehren

Information von Frank zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Windows Systemdateien
Warum System auf "C:" (29)

Frage von DzumoPRO zum Thema Windows Systemdateien ...

LAN, WAN, Wireless
Cisco SG200: Auf bestimmtem vLAN bestimmte TCP-Ports sperren (19)

Frage von SarekHL zum Thema LAN, WAN, Wireless ...

Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...