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, 2819 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
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 ...

Batch & Shell
gelöst Powershell Script für VHD Sicherung erweitern (7)

Frage von Emheonivek zum Thema Batch & Shell ...

Neue Wissensbeiträge
Notebook & Zubehör

WOL bei HP Notebooks

(3)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

LAN, WAN, Wireless

Neue Cisco Catalyst-Serie 9000

Information von Kuemmel zum Thema LAN, WAN, Wireless ...

Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Windows 10
Netzwerkkarte schaltet sich erst nach dem Logon ein (19)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (15)

Frage von Yaimael zum Thema Windows Server ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (14)

Frage von Spitzbube zum Thema Netzwerke ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (14)

Frage von Voiper zum Thema Weiterbildung ...