2016-10-20 14 views
0

OutlookでOOOを自動化するためのスクリプトを作成しています。VBS:Outlookで開始日と終了日を設定してOutlookの不在時応答を設定する

  • スクリプトは入力スプレッドシートから開始日と終了日を読み込み、それらの日付のOutlookで不在時の返信を設定します。
  • このスクリプトは現在の日付を取得し、スプレッドシートから読み取った開始日が明日の日付である場合は、ユーザーに確認を求めます。
  • アイデアは、ユーザにOOOを設定させてから、ユーザが確認すると自動的に設定することを思い出させることです。例えば、Excelシートから開始日と終了日が21-Oct-201624-Oct-2016あり、このスクリプトは20-Oct-2016上で実行される場合、(MS Outlookを開くことなく)自動的24-Oct-2016まで21-Oct-2016出発OOOを設定することができなければならない場合
  • これまでのところ、私はスプレッドシートを読んで日付を得ることができました。しかし、私は将来の期間にOOOを設定することができません。ここで

が進行中のコードです:

Sub ReadDataAndSetOOO() 

    Dim objExcel,ObjWorkbook,objsheet 
    intRow = 2 
    Dim startDateValue, endDateValue 
    Set objExcel = CreateObject("Excel.Application") 
    Set objWorkbook = objExcel.Workbooks.Open("C:\input.xlsx") 
    set objsheet = objExcel.ActiveWorkbook.Worksheets(1) 

    DateToday = FormatDateTime(Date, 1) 
    DateTomorrow = formatDate(FormatDateTime(DateAdd("d", 1, DateToday), 1)) 
    Wscript.Echo DateTomorrow 

    Do Until objExcel.Cells(intRow,1).Value = "" 
     startDateValue = formatDate(FormatDateTime(objsheet.Cells(intRow,1).value,1)) 
     endDateValue = formatDate(FormatDateTime(objsheet.Cells(intRow,2).value)) 

     Wscript.Echo "Start date=" & startDateValue 
     Wscript.Echo "End date=" & endDateValue 
     If DateTomorrow = startDateValue Then 
      'Following line to be replaced by the code to set OOO between start and end date 
      Wscript.Echo "I am on leave from " & startDateValue & " to " & endDateValue 
     End If 
     intRow = intRow + 1 
    Loop 
    objExcel.ActiveWorkbook.Close 
    objExcel.Workbooks.Close 
    objExcel.Application.Quit 
End Sub 

Function formatDate(myDate) 
    d = parse(Day(myDate)) 
    m = parse(Month(myDate))  
    y = Year(myDate) 
    formatDate= d & "-" & m & "-" & y 
End Function 

Function parse(num) 
    If(Len(num)=1) Then 
     parse="0"&num 
    Else 
     parse=num 
    End If 
End Function 

ReadDataAndSetOOO 

私はthis linkと呼ばれ、いくつかの他のリンクが、どこでも、OOOが必要な開始日と終了日のためにすぐにではなく設定されています。

どのポインタも高く評価されています。

答えて

1

OOFの時間範囲は、EWS、つまりUserOofSettingsの動詞を使用してのみ設定できます。 Outlookオブジェクトモデルまたは拡張MAPIを使用して設定することはできません。

Redemptionを使用している場合は、RDOOutOfOfficeAssistantオブジェクトが公開されます。 EWSコールを実行するため、メールボックスユーザーの資格情報が必要になります。

 set Session = CreateObject("Redemption.RDOSession") 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
    Session.Credentials.Add "*.myserver.com", "Domain\UserName", "MyPassword" 
    set OofAssistant = Session.Stores.DefaultStore.OutOfOfficeAssistant 
    OofAssistant.BeginUpdate 
    OofAssistant.StartTime = #12/21/2011# 
    OofAssistant.EndTime = #01/03/2012 9:00# 
    OofAssistant.State = 2 'rdoOofScheduled 
    OofAssistant.ExternalAudience = 1 'rdoOofAudienceKnown 
    OofAssistant.OutOfOfficeTextInternal = "<html><body>I am on vacation from 12/21/2001 until 01/03/2012. Please contact " & _ 
      "<a href=""mailto:[email protected]"">Joe User</a>" & _ 
      " if you have any questions</body></html>" 
    OofAssistant.OutOfOfficeTextExternal = "<html><body>I am on <b>vacation</b> until next year. </body></html>" 
    OofAssistant.EndUpdate 
+0

ありがとうございます。試してみてください。 –

+0

'CreateObject(" Redemption.RDOSession ")' 'ActiveXコンポーネントがオブジェクトを作成できません: 'Redemption.RDOSession''。私は問題が何かを見つけようとしています。 –

+0

正確なエラーは何ですか? Redemptionをインストールしましたか? Outlookとあなたのアプリケーションのビット数は何ですか? –

関連する問題