Jak wydrukować listę wszystkich zajętych spotkań w określonym zakresie dat za pośrednictwem programu Outlook VBA

Podziel się teraz:

W tym artykule nauczysz się, jak łatwo wydrukować listę wszystkich spotkań, które są wyświetlane jako „Zajęty” i zaplanowane w określonym zakresie dat.

Przejście przez wszystkie kalendarze w celu znalezienia wszystkich zajętych spotkań w określonym przedziale dat jest dość proste. Wystarczy ustawić zakres wyszukiwania na „Wszystkie elementy kalendarza”. Następnie wyszukaj spotkania z parametrem „Pokaż czas jako” równym „Zajęty” i z określoną datą rozpoczęcia i zakończenia. W ten sposób, chcąc wydrukować znalezione spotkania i przejść do „Plik” > „Drukuj”, zobaczysz, że dostępny jest tylko styl „Notatka”. Oznacza to, że nie można wydrukować znalezionych spotkań na liście. Aby wydrukować listę takich spotkań, możesz skorzystać z poniższej metody.

Tylko styl notatek dostępny dla znalezionych spotkań

Wydrukuj listę wszystkich zajętych spotkań w określonym zakresie dat

  1. Na samym początku uruchom edytor VBA programu Outlook za pomocą „Alt + F11”.
  2. Następnie w oknie podręcznym „Microsoft Visual Basic for Applications” dodaj odwołanie do „Biblioteki obiektów MS Excel” zgodnie z „Jak dodać odwołanie do biblioteki obiektów w języku VBA".
  3. Następnie umieść następujący kod VBA w module.
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

Kod VBA - wydrukuj listę wszystkich zajętych spotkań w określonym zakresie dat

  1. Później kliknij pierwszy podprogram i naciśnij klawisz „F5”.
  2. Następnie należałoby określić zakres dat wyszukiwania spotkań.Określ zakres dat
  3. Następnie kliknij „OK”, aby kontynuować makro.
  4. Wreszcie, po zakończeniu działania makra, zostanie wydrukowana lista zajętych spotkań we wstępnie zdefiniowanym zakresie dat we wszystkich folderach kalendarza, jak pokazano na zrzucie ekranu poniżej.Wydrukowana lista wszystkich zajętych spotkań w określonym zakresie dat

Zwalczanie niepokojącej korupcji prognoz

Jeśli Twój Outlook jest zawsze zamknięty w nieprawidłowy sposób, możesz później napotkać wiele problemów. Wśród nich najgorszy jest uszkodzony plik Outlooka. Jeśli nie chcesz stracić swoich danych, musisz użyć narzędzia do naprawy pliku PST, takiego jak DataNumen Outlook Repair. Jest w stanie odzyskać maksimum danych z uszkodzony Outlook plik.

Wprowadzenie autora:

Shirley Zhang jest ekspertem w dziedzinie odzyskiwania danych w DataNumen, Inc., która jest światowym liderem w technologiach odzyskiwania danych, w tym poprawka sql i oprogramowanie do naprawy programu Outlook. po więcej informacji odwiedź www.datanumen.com

Podziel się teraz:

Możliwość dodawania komentarzy nie jest dostępna.