Hur man skriver ut en lista över alla upptagen möten i ett specifikt datumintervall via Outlook VBA

Den här artikeln lär dig en enkel metod för att skriva ut listan över alla möten som visas som "Upptagen" och schemalagda i ett visst datumintervall.

Det är ganska enkelt att gå igenom alla kalendrar för att hitta alla upptagen möten i ett visst datumintervall. Du kan bara ställa in sökområdet till "Alla kalenderobjekt". Sök sedan efter möten med "Visa tid som" lika med "upptagen" och inom specifika start datum och slutdatum. Men på detta sätt, när du tänker skriva ut de hittade mötena och gå till "File"> "Print", kan du se att det bara finns "Memo Style" tillgängligt. Det betyder att du inte kan skriva ut de hittade mötena i listan. Så om du vill skriva ut listan över sådana möten kan du använda följande sätt.

Endast memostil tillgänglig för hittade möten

Skriv ut listan över alla upptagen möten inom ett specifikt datumintervall

  1. Starta Outlook VBA-redigeraren redan från början via “Alt + F11”.
  2. I popup-fönstret ”Microsoft Visual Basic for Applications” lägger du till referensen till “MS Excel Object Library "i enlighet med"Hur man lägger till ett objekt Library Referens i VBA".
  3. Därefter sätter du följande VBA-kod 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-kod - Skriv ut listan över alla upptagen möten i ett specifikt datumintervall

  1. Senare klickar du in i den första underrutinen och trycker på knappen “F5”.
  2. Därefter måste du ange datumintervallet för sökning på möten.Ange datumintervall
  3. Klicka sedan på “OK” för att fortsätta makrot.
  4. Slutligen, när makrot är klart, kommer listan över upptagen möten i det fördefinierade datumintervallet i alla kalendermappar att skrivas ut, som visas på skärmdumpen nedan.Tryckt lista över alla upptagen möten i specifikt datumintervall

Ta itu med störande Outlook-korruption

Om din Outlook alltid är stängd på ett felaktigt sätt kan du stöta på många problem senare. Bland dem är Outlook-filen som är skadad den värsta. Om du inte vill förlora dina data måste du använda ett PST-fixverktyg, som DataNumen Outlook Repair. Det kan få tillbaka maximal data från skadade Outlook fil.

Författarintroduktion:

Shirley Zhang är expert på dataåterställning DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive sql fix och Outlook-programvara för reparationsprogramvara. För mer information besök www.datanumen.com

Kommentarer är stängda.