Come stampare l'elenco di tutti gli appuntamenti occupati in un intervallo di date specifico tramite Outlook VBA

Condividi ora:

Questo articolo ti insegnerà un metodo semplice per stampare l'elenco di tutti gli appuntamenti mostrati come "Occupato" e programmati in un intervallo di date specifico.

È abbastanza semplice scorrere tutti i calendari per trovare tutti gli appuntamenti occupati in un intervallo di date specifico. Basta impostare l'ambito di ricerca su "Tutti gli elementi del calendario". Quindi, cerca gli appuntamenti con "Mostra ora come" uguale a "Occupato" e compresi nella data di inizio e di fine specificate. Tuttavia, in questo modo, quando si intende stampare gli appuntamenti trovati e si va su "File" > "Stampa", si noterà che è disponibile solo lo "Stile Memo". Ciò significa che non è possibile stampare gli appuntamenti trovati in formato elenco. Quindi, se si desidera stampare l'elenco di tali appuntamenti, è possibile utilizzare il metodo seguente.

Solo stile promemoria disponibile per gli appuntamenti trovati

Stampa l'elenco di tutti gli appuntamenti occupati in un intervallo di date specifico

  1. All'inizio, avvia l'editor VBA di Outlook tramite "Alt + F11".
  2. Quindi, nella finestra popup “Microsoft Visual Basic for Applications”, aggiungere il riferimento a “MS Excel Object Library” secondo “Come aggiungere un riferimento a una libreria di oggetti in VBA".
  3. Successivamente, inserisci il seguente codice VBA in un modulo.
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

Codice VBA: stampa l'elenco di tutti gli appuntamenti occupati in un intervallo di date specifico

  1. Successivamente, fai clic sulla prima subroutine e premi il tasto "F5".
  2. Successivamente, ti verrà richiesto di specificare l'intervallo di date per la ricerca degli appuntamenti.Specifica l'intervallo di date
  3. Successivamente, fare clic su "OK" per continuare la macro.
  4. Infine, al termine della macro, verrà stampato l'elenco degli appuntamenti occupati nell'intervallo di date predefinito in tutte le cartelle del calendario, come mostrato nello screenshot seguente.Elenco stampato di tutti gli appuntamenti occupati in un intervallo di date specifico

Affrontare la corruzione inquietante di Outlook

Se il tuo Outlook è sempre chiuso in modo improprio, potresti riscontrare molti problemi in seguito. Tra questi, il file di Outlook danneggiato è il peggiore. Se non vuoi perdere i tuoi dati, devi utilizzare uno strumento di correzione PST, come DataNumen Outlook Repair. È in grado di recuperare il massimo dei dati da Outlook danneggiato file.

Introduzione dell'autore:

Shirley Zhang è un'esperta di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui correzione sql e prodotti software di riparazione di Outlook. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.