So drucken Sie die Liste aller ausgelasteten Termine in einem bestimmten Datumsbereich über Outlook VBA

Jetzt teilen:

In diesem Artikel erfahren Sie, wie Sie auf einfache Weise die Liste aller Termine ausdrucken können, die als "Besetzt" angezeigt und in einem bestimmten Zeitraum geplant sind.

Es ist recht einfach, alle Kalender zu durchlaufen, um alle belegten Termine in einem bestimmten Zeitraum zu finden. Stellen Sie dazu einfach den Suchbereich auf „Alle Kalendereinträge“ ein. Suchen Sie anschließend nach Terminen, bei denen „Zeit anzeigen als“ auf „Belegt“ eingestellt ist und die innerhalb des angegebenen Start- und Enddatums liegen. Wenn Sie die gefundenen Termine jedoch ausdrucken möchten und auf „Datei“ > „Drucken“ klicken, sehen Sie, dass nur der Stil „Memo“ verfügbar ist. Das bedeutet, dass Sie die gefundenen Termine nicht als Liste drucken können. Um die Liste dieser Termine auszudrucken, gehen Sie wie folgt vor.

Nur Memostil für gefundene Termine verfügbar

Drucken Sie die Liste aller besetzten Termine in einem bestimmten Zeitraum

  1. Starten Sie den Outlook VBA-Editor gleich zu Beginn über „Alt + F11“.
  2. Fügen Sie anschließend im Popup-Fenster „Microsoft Visual Basic for Applications“ den Verweis auf die „MS Excel Object Library“ gemäß „Wie man in VBA einen Objektbibliotheksverweis hinzufügt".
  3. Fügen Sie danach den folgenden VBA-Code in ein Modul ein.
Dim dStart, dEnd As Date
Dim objExcelApp As Excel.Application
Dim objExcelWorkbook As Excel.Workbook
Dim objExcelWorksheet As Excel.Worksheet

Sub PrintListOfAllBusyAppointments()
    Dim objStore As Store
    Dim objFolder As Folder
 
    dStart = InputBox("Enter the start date:", , Date)
    dEnd = InputBox("Enter the end date:", , Date + 30)
 
    Set objExcelApp = CreateObject("Excel.Application")
    Set objExcelWorkbook = objExcelApp.Workbooks.Add
    Set objExcelWorksheet = objExcelWorkbook.Sheets(1)
    objExcelApp.Visible = True
 
    With objExcelWorksheet
         .Cells(1, 1) = "Subject"
         .Cells(1, 1).Font.Bold = True
         .Cells(1, 2) = "Location"
         .Cells(1, 2).Font.Bold = True
         .Cells(1, 3) = "Start"
         .Cells(1, 3).Font.Bold = True
         .Cells(1, 4) = "End"
         .Cells(1, 4).Font.Bold = True
         .Cells(1, 5) = "In Folder"
         .Cells(1, 5).Font.Bold = True
    End With
 
    For Each objStore In Application.Session.Stores
        For Each objFolder In objStore.GetRootFolder.Folders
            If objFolder.DefaultItemType = olAppointmentItem Then
               Call ProcessFolders(objFolder)
            End If
        Next
    Next
 
    objExcelWorksheet.Columns("A:E").AutoFit
    objExcelWorksheet.PrintOut
    objExcelWorkbook.Close False
    objExcelApp.Quit
End Sub

Sub ProcessFolders(ByVal objCurFolder As Folder)
    Dim strFilter As String
    Dim objItems As Outlook.Items
    Dim objRestrictedItems As Outlook.Items
    Dim objAppointment As AppointmentItem
    Dim nLastRow As Integer
    Dim objSubFolder As Folder
 
    Set objItems = objCurFolder.Items
    objItems.IncludeRecurrences = True
    objItems.Sort "[Start]"
 
    'Get the appointments in the specific date range
    strFilter = "[Start] >= " & Chr(34) & dStart & " 00:00 AM" & Chr(34) & " AND [End] <= " & Chr(34) & dEnd & " 11:59 PM" & Chr(34)
    Set objRestrictedItems = objItems.Restrict(strFilter)

    For Each objAppointment In objRestrictedItems
        If objAppointment.BusyStatus = olBusy Then
           nLastRow = objExcelWorksheet.Range("A" & objExcelWorksheet.Rows.Count).End(xlUp).Row + 1
 
           With objExcelWorksheet
                .Range("A" & nLastRow) = objAppointment.Subject
                .Range("B" & nLastRow) = objAppointment.Location
                .Range("C" & nLastRow) = objAppointment.Start
                .Range("D" & nLastRow) = objAppointment.End
                .Range("E" & nLastRow) = objCurFolder.FolderPath
           End With
        End If
    Next

    'Process all subfolders recursively
    If objCurFolder.Folders.Count > 0 Then
       For Each objSubFolder In objCurFolder.Folders
           Call ProcessFolders(objSubFolder)
       Next
    End If
End Sub

VBA-Code - Drucken Sie die Liste aller besetzten Termine in einem bestimmten Datumsbereich

  1. Klicken Sie später in die erste Unterroutine und drücken Sie die Taste „F5“.
  2. Als Nächstes müssen Sie den Datumsbereich für die Suche nach Terminen angeben.Datumsbereich angeben
  3. Klicken Sie anschließend auf "OK", um das Makro fortzusetzen.
  4. Wenn das Makro beendet ist, wird die Liste der ausgelasteten Termine im vordefinierten Datumsbereich in allen Kalenderordnern gedruckt, wie im folgenden Screenshot gezeigt.Gedruckte Liste aller besetzten Termine im bestimmten Datumsbereich

Bekämpfung der störenden Outlook-Korruption

Wenn Ihr Outlook immer nicht ordnungsgemäß geschlossen wird, können später viele Probleme auftreten. Unter diesen ist die beschädigte Outlook-Datei die schlimmste. Wenn Sie Ihre Daten nicht verlieren möchten, müssen Sie ein PST-Fix-Tool wie z DataNumen Outlook Repair. Es ist in der Lage, maximale Daten von zurückzugewinnen Outlook beschädigt Datei.

Einführung des Autors:

Shirley Zhang ist eine Datenrettungsexpertin in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich SQL Fix und Outlook-Reparatursoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.