Добрый день, всем участникам форума. Уперся в стенку с задачей по экспорту календарей Outlook в Excel. Пробовал через стандартный способ экспорта в самом Outlook. Получается, но только основной свой календарь экспортируется. Календарь с предоставленным мне полным доступом от другого сотрудника не скачивается. Пробовал через VBA код (нашел в интернете): [vba]
Код
Sub ListAppointments2() Dim olApp As Object Dim olNS As Object Dim olFolder As Object Dim olApt As Object Dim NextRow As Long Dim FromDate As Date Dim ToDate As Date
On Error Resume Next Set olApp = GetObject(, "Outlook.Application") If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application") On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI") Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar NextRow = 2
With Sheets("Лист1") 'Change the name of the sheet here .Range("A1:D1").Value = Array("Subject", "StartDate", "EndDate", "Category") For Each olApt In olFolder.Items If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then .Cells(NextRow, "A").Value = olApt.Subject .Cells(NextRow, "B").Value = CDate(olApt.Start) .Cells(NextRow, "C").Value = olApt.End - olApt.Start .Cells(NextRow, "C").NumberFormat = "HH:MM:SS" .Cells(NextRow, "D").Value = olApt.Location .Cells(NextRow, "E").Value = olApt.Categories NextRow = NextRow + 1 Else End If Next olApt .Columns.AutoFit End With
Set olApt = Nothing Set olFolder = Nothing Set olNS = Nothing Set olApp = Nothing End Sub
[/vba] Ругается на эту строку: [vba]
Код
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
[/vba] Вроде правильный формат даты указываю и период корректный, все равно ошибка.
Пробовал такой код: [vba]
Код
Option Explicit
Sub ListAppointments() Dim olApp As Object Dim olNS As Object Dim olFolder As Object Dim olApt As Object Dim NextRow As Long Dim FromDate As Date Dim ToDate As Date
FromDate = CDate("01/01/2021") ToDate = Now()
On Error Resume Next Set olApp = GetObject(, "Outlook.Application") If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application") On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI") Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar NextRow = 2
With Sheets("Лист1") 'Change the name of the sheet here .Range("A1:G1").Value = Array("Project", "Date", "Time spent", "Location", "Categories", "Start Hour", "End Hour") For Each olApt In olFolder.Items If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then .Cells(NextRow, "A").Value = olApt.Subject .Cells(NextRow, "B").Value = CDate(olApt.Start) .Cells(NextRow, "C").Value = olApt.End - olApt.Start .Cells(NextRow, "C").NumberFormat = "HH:MM:SS" .Cells(NextRow, "D").Value = olApt.Location .Cells(NextRow, "E").Value = olApt.Categories .Cells(NextRow, "F").Value = olApt.Start .Cells(NextRow, "G").Value = olApt.End NextRow = NextRow + 1 Else End If Next olApt .Columns.AutoFit End With
Set olApt = Nothing Set olFolder = Nothing Set olNS = Nothing Set olApp = Nothing End Sub
[/vba] Та же ошибка на аналогичную строку: [vba]
Код
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
[/vba]
Подскажите, пожалуйста, в чем может быть ошибка? Поможет ли этот код получить данные с расшаренного календаря?
Добрый день, всем участникам форума. Уперся в стенку с задачей по экспорту календарей Outlook в Excel. Пробовал через стандартный способ экспорта в самом Outlook. Получается, но только основной свой календарь экспортируется. Календарь с предоставленным мне полным доступом от другого сотрудника не скачивается. Пробовал через VBA код (нашел в интернете): [vba]
Код
Sub ListAppointments2() Dim olApp As Object Dim olNS As Object Dim olFolder As Object Dim olApt As Object Dim NextRow As Long Dim FromDate As Date Dim ToDate As Date
On Error Resume Next Set olApp = GetObject(, "Outlook.Application") If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application") On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI") Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar NextRow = 2
With Sheets("Лист1") 'Change the name of the sheet here .Range("A1:D1").Value = Array("Subject", "StartDate", "EndDate", "Category") For Each olApt In olFolder.Items If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then .Cells(NextRow, "A").Value = olApt.Subject .Cells(NextRow, "B").Value = CDate(olApt.Start) .Cells(NextRow, "C").Value = olApt.End - olApt.Start .Cells(NextRow, "C").NumberFormat = "HH:MM:SS" .Cells(NextRow, "D").Value = olApt.Location .Cells(NextRow, "E").Value = olApt.Categories NextRow = NextRow + 1 Else End If Next olApt .Columns.AutoFit End With
Set olApt = Nothing Set olFolder = Nothing Set olNS = Nothing Set olApp = Nothing End Sub
[/vba] Ругается на эту строку: [vba]
Код
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
[/vba] Вроде правильный формат даты указываю и период корректный, все равно ошибка.
Пробовал такой код: [vba]
Код
Option Explicit
Sub ListAppointments() Dim olApp As Object Dim olNS As Object Dim olFolder As Object Dim olApt As Object Dim NextRow As Long Dim FromDate As Date Dim ToDate As Date
FromDate = CDate("01/01/2021") ToDate = Now()
On Error Resume Next Set olApp = GetObject(, "Outlook.Application") If Err.Number > 0 Then Set olApp = CreateObject("Outlook.Application") On Error GoTo 0
Set olNS = olApp.GetNamespace("MAPI") Set olFolder = olNS.GetDefaultFolder(9) 'olFolderCalendar NextRow = 2
With Sheets("Лист1") 'Change the name of the sheet here .Range("A1:G1").Value = Array("Project", "Date", "Time spent", "Location", "Categories", "Start Hour", "End Hour") For Each olApt In olFolder.Items If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then .Cells(NextRow, "A").Value = olApt.Subject .Cells(NextRow, "B").Value = CDate(olApt.Start) .Cells(NextRow, "C").Value = olApt.End - olApt.Start .Cells(NextRow, "C").NumberFormat = "HH:MM:SS" .Cells(NextRow, "D").Value = olApt.Location .Cells(NextRow, "E").Value = olApt.Categories .Cells(NextRow, "F").Value = olApt.Start .Cells(NextRow, "G").Value = olApt.End NextRow = NextRow + 1 Else End If Next olApt .Columns.AutoFit End With
Set olApt = Nothing Set olFolder = Nothing Set olNS = Nothing Set olApp = Nothing End Sub
[/vba] Та же ошибка на аналогичную строку: [vba]
Код
If (olApt.Start >= FromDate And olApt.Start <= ToDate) Then
[/vba]
Подскажите, пожалуйста, в чем может быть ошибка? Поможет ли этот код получить данные с расшаренного календаря?Anis625