2016-05-20 31 views
3

件名と日付を持つ.CSVファイルから取得した予定を作成するマクロを作成しようとしています。これを他の誰かの共有カレンダーに配置します。この共有カレンダーの完全な編集者権限を持っています。共有カレンダーとは、その人のOutlookで作成された通常のカレンダーを単に「共有」をクリックして他の人にメールで送信して共有することです。Outlookの共有予定表に予定を追加する方法?

ログインしているユーザーは自分のカレンダーに予定を追加できますが、権限を持つ共有予定表は追加できないようです。

Sub ImportAppointments(full_path As String) 

'Initialize variables 
Dim exlApp As Excel.Application 
Dim exlWkb As Workbook 
Dim exlSht As Worksheet 
Dim rng As Range 
Dim itmAppt As Outlook.AppointmentItem 

' Create reference to Excel 
Set exlApp = New Excel.Application 

' Select file path, currently hardcoded to one directory, change as needed 
Dim strFilepath As String 
'strFilepath = "P:\Holiday Calendar\Holiday_Calendar_Data.csv" 
strFilepath = full_path 

' Select workbook (the above .csv file) and select the first worksheet as the data sheet 
Set exlSht = Excel.Application.Workbooks.Open(strFilepath).Worksheets(1) 

' Initialize variables 
Dim iRow As Integer 
Dim iCol As Integer 
Dim oNs As Namespace 
Dim olFldr As Outlook.MAPIFolder 
Dim objOwner As Outlook.Recipient 

' Allow accessing data stored in the user's mail stores in Outlook 
Set oNs = Outlook.GetNamespace("MAPI") 

' Set share calender owner 
Set objOwner = oNs.CreateRecipient("[email protected]") 
    objOwner.Resolve 

If objOwner.Resolved Then 

    ' Set up non-default share folder location 
    Set olFldr = oNs.GetSharedDefaultFolder(objOwner, olFolderCalendar).Folders("Holiday Calendar") 

End If 

' Start point 
iRow = 2 
iCol = 1 

' Loop through each calendar entry 
While exlSht.Cells(iRow, 1) <> "" 

    Set itmAppt = Outlook.CreateItem(olAppointmentItem) 

    ' Set appointment Subject, ie (Vacation, Sick Day, Half-Day, etc.) 
    itmAppt.Subject = exlSht.Cells(iRow, 1) 

    ' Set Date of Event 
    itmAppt.Start = exlSht.Cells(iRow, 2) 

    ' Force All Day Event 
    itmAppt.AllDayEvent = True 

    ' Save appointment 
    itmAppt.Save 

    ' Advance pointer to next row 
    iRow = iRow + 1 

    ' Transfer appointment into shared calendar folder 
    itmAppt.Move olFldr 

Wend 

' Close everything 
Excel.Application.Workbooks.Close 
exlApp.Quit 
Set exlApp = Nothing 
Set olFldr = Nothing 
Set itmAppt = Nothing 

End Sub 

私のコードは、私は他の誰かのカレンダー(Set olFldr = oNs.GetSharedDefaultFolder(objOwner, olFolderCalendar).Folders("Holiday Calendar"))ではなく、自分自身で挿入しようとしている場合"Holiday Calendar"を見つけることができません。お知らせ下さい。

答えて

1

Application.CreateItem/AppointmentItem.Moveの代わりに、olFldr.Items.Addを使用して直接項目を作成します。

関連する問題