როგორ ამობეჭდოთ ყველა დაკავებული შეხვედრების სია თარიღის კონკრეტულ დიაპაზონში Outlook VBA-ის საშუალებით

გააზიარე ახლა:

ეს სტატია გასწავლით მარტივ მეთოდს, რომ ამობეჭდოთ ყველა შეხვედრის სია, რომლებიც ნაჩვენებია როგორც „დაკავებული“ და დაგეგმილია კონკრეტული თარიღის დიაპაზონში.

საკმაოდ მარტივია ყველა კალენდარში ციკლურად გადახედვა, რათა იპოვოთ ყველა დაკავებული შეხვედრა კონკრეტულ თარიღთა დიაპაზონში. შეგიძლიათ უბრალოდ დააყენოთ ძიების დიაპაზონი „კალენდრის ყველა ელემენტზე“. შემდეგ, მოძებნეთ შეხვედრები „აჩვენე დრო, როგორც“ უდრის „დაკავებულს“ და შედის კონკრეტულ დაწყების და დასრულების თარიღში. თუმცა, ამ გზით, როდესაც გსურთ ნაპოვნი შეხვედრების დაბეჭდვა და გადადით „ფაილში“ > „ბეჭდვაში“, ხედავთ, რომ ხელმისაწვდომია მხოლოდ „შენიშვნების სტილი“. ეს ნიშნავს, რომ თქვენ ვერ დაბეჭდავთ ნაპოვნი შეხვედრების სიაში. ასე რომ, თუ გსურთ ასეთი შეხვედრების სიის დაბეჭდვა, შეგიძლიათ გამოიყენოთ შემდეგი მეთოდი.

ნაპოვნი შეხვედრებისთვის ხელმისაწვდომია მხოლოდ Memo Style

დაბეჭდეთ ყველა დაკავებული შეხვედრის სია კონკრეტული თარიღის დიაპაზონში

  1. თავიდანვე გაუშვით Outlook VBA რედაქტორი "Alt + F11" საშუალებით.
  2. შემდეგ, ამომხტარ ფანჯარაში „Microsoft Visual Basic for Applications“ დაამატეთ მითითება „MS Excel Object Library“-ზე „როგორ დავამატოთ ობიექტის ბიბლიოთეკის მითითება VBA-ში".
  3. ამის შემდეგ მოდულში ჩადეთ შემდეგი VBA კოდი.
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 კოდი - ამობეჭდეთ ყველა დაკავებული შეხვედრების სია კონკრეტული თარიღის დიაპაზონში

  1. მოგვიანებით, დააწკაპუნეთ პირველ ქვეპროგრამაში და დააჭირეთ ღილაკს "F5".
  2. შემდეგი, თქვენ მოგიწევთ მიუთითოთ შეხვედრების ძიების თარიღის დიაპაზონი.მიუთითეთ თარიღის დიაპაზონი
  3. შემდეგ დააწკაპუნეთ "OK" მაკროს გასაგრძელებლად.
  4. ბოლოს, როდესაც მაკრო დასრულდება, ყველა კალენდრის საქაღალდეში წინასწარ განსაზღვრულ თარიღის დიაპაზონში დაკავებული შეხვედრების სია დაიბეჭდება, როგორც ეს ნაჩვენებია ქვემოთ მოცემულ ეკრანის სურათზე.დაბეჭდილი სია ყველა დაკავებული შეხვედრების კონკრეტულ თარიღის დიაპაზონში

გაუმკლავდეთ შემაშფოთებელ მსოფლმხედველობას კორუფციას

თუ თქვენი Outlook ყოველთვის დახურულია არასათანადოდ, მოგვიანებით შეიძლება ბევრი პრობლემა შეგექმნათ. მათ შორის, Outlook ფაილი დაზიანებულია ყველაზე უარესი. თუ არ გსურთ თქვენი მონაცემების დაკარგვა, უნდა გამოიყენოთ PST დაფიქსირების ინსტრუმენტი, მაგალითად DataNumen Outlook Repair. მას შეუძლია მაქსიმალური მონაცემების დაბრუნება დაზიანებული Outlook ფაილი.

ავტორი შესავალი:

შირლი ჟანგი არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის sql შესწორება და Outlook სარემონტო პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.