Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 2825 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
Exchange Server
Exchange: Verteilergruppen lassen sich nach Genehmigung nicht erweitern

Frage von lupolo zum Thema Exchange Server ...

Microsoft Office
MS Office History erweitern (1)

Frage von leofabian zum Thema Microsoft Office ...

Hardware
Multimediadosen erweitern? (1)

Frage von derRAV3N zum Thema Hardware ...

Batch & Shell
Batch Skript erweitern (1)

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

Neue Wissensbeiträge
Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin zum Thema Vmware ...

Datenschutz

Session-Replay: Viele beliebte Webseiten zeichnen jegliche Texteingabe auf

Information von Penny.Cilin zum Thema Datenschutz ...

Sicherheit

Zufällige Speicherzuweisung: Windows-Bug hebelt Sicherheitsmechanismus ASLR aus

Information von Penny.Cilin zum Thema Sicherheit ...

Multimedia

Raspberry Pi als Digital-Signage-Computer

(1)

Information von BassFishFox zum Thema Multimedia ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Freigabe aus anderem Netz nicht erreichbar (44)

Frage von McLion zum Thema Router & Routing ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail (24)

Frage von ahstax zum Thema Visual Studio ...

Windows Netzwerk
Netzwerk Neustrukturierung (16)

Frage von IT-Dreamer zum Thema Windows Netzwerk ...

Windows Server
RDP macht Server schneller??? (15)

Frage von JaniDJ zum Thema Windows Server ...