Kuinka tulostaa luettelo kaikista varattuista tapaamisista tietyllä ajanjaksolla Outlook VBA: n kautta

Tämä artikkeli opettaa sinulle helpon tavan tulostaa luettelo kaikista tapaamisista, jotka näytetään "Varattu" ja ajoitettu tietylle ajanjaksolle.

Kaikkien kalenterien läpikäyminen ja kaikkien tietyn päivämäärävälin varattujen tapaamisten löytäminen on melko helppoa. Voit asettaa hakukentän arvoksi "Kaikki kalenterimerkinnät". Hae sitten tapaamisia, joiden "Näytä aika" -asetus on "Varattu" ja jotka ovat tietyn alkamis- ja päättymispäivämäärän sisällä. Mutta tällä tavalla, kun aiot tulostaa löydetyt tapaamiset ja menet kohtaan "Tiedosto" > "Tulosta", näet, että käytettävissä on vain "Muistiotyyli". Tämä tarkoittaa, että et voi tulostaa löydettyjä tapaamisia luettelosta. Joten jos haluat tulostaa tällaisten tapaamisten luettelon, voit käyttää seuraavaa tapaa.

Löydetyille tapaamisille on käytettävissä vain muistiotyyli

Tulosta luettelo kaikista varattuista tapaamisista tietyllä ajanjaksolla

  1. Käynnistä Outlook VBA -editori heti alusta alkaen “Alt + F11” -toiminnon avulla.
  2. Lisää sitten ponnahdusikkunaan ”Microsoft Visual Basic for Applications” viittaus ”MS Excel Object Library” kohdan ”Objektikirjastoviittauksen lisääminen VBA:ssa".
  3. Tämän jälkeen laita seuraava VBA-koodi moduuliin.
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-koodi - Tulosta luettelo kaikista varattuista tapaamisista tietyllä ajanjaksolla

  1. Napsauta myöhemmin ensimmäistä alirutiinia ja paina “F5” -näppäintä.
  2. Seuraavaksi sinun on määritettävä ajanjakso tapaamisten hakemiseksi.Määritä ajanjakso
  3. Napsauta sitten “OK” jatkaaksesi makroa.
  4. Lopuksi, kun makro on valmis, luettelo kiireisistä tapaamisista ennalta määritetyllä ajanjaksolla kaikissa kalenterikansioissa tulostetaan, kuten alla olevassa kuvakaappauksessa näkyy.Tulostettu luettelo kaikista varattuista tapaamisista tietyllä ajanjaksolla

Käsittele häiritsevää Outlook-korruptiota

Jos Outlookisi on aina suljettu väärin, saatat kohdata paljon ongelmia myöhemmin. Niistä vioittunut Outlook-tiedosto on pahin. Jos et halua menettää tietojasi, sinun on käytettävä esimerkiksi PST-korjaustyökalua DataNumen Outlook Repair. Se pystyy saamaan takaisin enimmäistiedot vahingoittunut Outlook tiedosto.

Tekijän esittely:

Shirley Zhang on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien sql-korjaus ja Outlookin korjausohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.