Ako vytlačiť zoznam všetkých zaneprázdnených udalostí v konkrétnom rozsahu dátumov pomocou programu Outlook VBA

Zdieľať teraz:

Tento článok vás naučí ľahkú metódu, ako vytlačiť zoznam všetkých schôdzok, ktoré sú zobrazené ako „Zaneprázdnené“ a naplánované v konkrétnom rozsahu dátumov.

Je celkom jednoduché prechádzať všetkými kalendármi a nájsť všetky zaneprázdnené schôdzky v konkrétnom rozsahu dátumov. Stačí nastaviť rozsah vyhľadávania na „Všetky položky kalendára“. Potom vyhľadať schôdzky, ktorých hodnota „Zobraziť čas ako“ sa rovná „Zaneprázdnený“ a ktoré sa nachádzajú v rámci konkrétneho dátumu začiatku a konca. Ak však chcete vytlačiť nájdené schôdzky a prejsť na „Súbor“ > „Tlačiť“, uvidíte, že je k dispozícii iba „Štýl poznámky“. To znamená, že nájdené schôdzky nie je možné vytlačiť v zozname. Ak teda chcete vytlačiť zoznam takýchto schôdzok, môžete použiť nasledujúci spôsob.

Pre nájdené udalosti je k dispozícii iba štýl memo

Vytlačte si zoznam všetkých rušných udalostí v konkrétnom rozsahu dátumov

  1. Hneď na úvod spustite editor Outlook VBA pomocou „Alt + F11“.
  2. Potom v kontextovom okne „Microsoft Visual Basic for Applications“ pridajte odkaz na „Knižnicu objektov MS Excel“ v súlade s „Ako pridať odkaz na knižnicu objektov vo VBA".
  3. Potom vložte nasledujúci kód VBA do modulu.
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

Kód VBA - vytlačte zoznam všetkých rušných udalostí v konkrétnom rozsahu dátumov

  1. Neskôr kliknite na prvý podprogram a stlačte tlačidlo „F5“.
  2. Ďalej by sa od vás požadovalo, aby ste určili rozsah dátumov vyhľadávania schôdzok.Zadajte rozsah dátumov
  3. Potom pokračujte v makre kliknutím na „OK“.
  4. Nakoniec, po dokončení makra, sa vytlačí zoznam rušných udalostí v preddefinovanom rozsahu dátumov vo všetkých priečinkoch kalendára, ako je to znázornené na snímke obrazovky nižšie.Vytlačený zoznam všetkých rušných udalostí v konkrétnom rozsahu dátumov

Riešenie znepokojujúcej korupcie v programe Outlook

Ak je váš Outlook vždy zavretý nevhodným spôsobom, neskôr sa môžete stretnúť s mnohými problémami. Medzi nimi je najhorší poškodený súbor programu Outlook. Ak nechcete prísť o svoje údaje, musíte použiť nástroj na opravu PST, napríklad DataNumen Outlook Repair. Je schopný získať späť maximum dát z poškodený Outlook súbor.

Úvod autora:

Shirley Zhang je expertkou na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane opraviť sql a výhľadové softvérové ​​produkty na opravu. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.