Hvordan skrive ut listen over alle opptatte avtaler i en bestemt datoperiode via Outlook VBA

Denne artikkelen vil lære deg en enkel metode for å skrive ut listen over alle avtaler som vises som "Opptatt" og er planlagt i en bestemt datoperiode.

Det er ganske enkelt å gå gjennom alle kalenderne for å finne alle travle avtaler i en bestemt datoperiode. Du kan bare sette søkeomfang til "Alle kalenderelementer". Søk deretter avtaler med "Vis tid som" lik "Opptatt" og innenfor de spesifikke start-dato og sluttdato. Men på denne måten, når du har tenkt å skrive ut de funnet avtalene og går til "Fil"> "Skriv ut", kan du se at det bare er "Memo Style" tilgjengelig. Det betyr at du ikke kan skrive ut de funnet avtalene i listen. Så hvis du vil skrive ut listen over slike avtaler, kan du bruke følgende måte.

Kun memostil tilgjengelig for funnet avtaler

Skriv ut listen over alle opptatte avtaler i en bestemt datoperiode

  1. Helt i begynnelsen, start Outlook VBA-redigering via "Alt + F11".
  2. I popup-vinduet "Microsoft Visual Basic for Applications" legger du til referansen til "MS Excel Object Library" i henhold til "Hvordan legge til et objekt Library Referanse i VBA".
  3. Deretter legger du følgende VBA-kode i en modul.
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-kode - Skriv ut listen over alle opptatte avtaler i en bestemt datoperiode

  1. Senere klikker du på den første subrutinen og trykker på "F5"-tasten.
  2. Deretter må du spesifisere datointervallet for å søke etter avtaler.Spesifiser datoperiode
  3. Klikk deretter "OK" for å fortsette makroen.
  4. Til slutt, når makroen er ferdig, vil listen over opptatte avtaler i det forhåndsdefinerte datointervallet i alle kalendermapper bli skrevet ut, som vist på skjermbildet nedenfor.Utskrevet liste over alle opptatte avtaler i en bestemt datoperiode

Håndtere forstyrrende Outlook-korrupsjon

Hvis Outlook alltid er stengt på en feil måte, kan du støte på mange problemer senere. Blant dem er Outlook-filen som er ødelagt den verste. Hvis du ikke vil miste dataene dine, må du bruke et PST-fixverktøy, som DataNumen Outlook Repair. Den er i stand til å få tilbake maksimal data fra skadet Outlook filen.

Forfatterintroduksjon:

Shirley Zhang er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert sql fikse og Outlook-reparasjonsprodukter. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.