Exchange 環境の複数ユーザーの予定を CSV にエクスポートするマクロ


Exchange 環境で共有されている他人の予定表のデータを取得するマクロのコメントにて以下のご要望をいただきました。


いつも参考にさせていただいています
マクロ初心者です
exchange環境で複数の予定表を取り込むには上記マクロのどの部分の変更をすればできるようになるでしょうか?
初歩的な質問で申し訳ありません、よろしくお願いします


元の記事のマクロではユーザー名を InputBox により入力してましたが、複数のユーザーの予定表をエクスポートするには、あらかじめ配列などでユーザーの名前を設定し、そのユーザーごとにエクスポートします。
以下のようなマクロで実現できます。

' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ExportOhtersCalendar()
    Const CSV_FILE_NAME = "c:\thismonth.csv" ' エクスポートするファイル名を指定してください。
    Dim arrUsers As Variant
    ' エクスポートするユーザーの名前かメールアドレスを指定します。
    arrUsers = Array("user1", "user2", "user3")
    Dim dtExport As Date
    Dim strStart As String
    Dim strEnd As String
    Dim objFSO 'As FileSystemObject
    Dim stmCSVFile 'As TextStream
    Dim strUserName As String
    Dim objRecip As Recipient
    Dim colAppts As Items
    Dim objAppt 'As AppointmentItem
    Dim strLine As String
    Dim i As Integer
    '
    dtExport = Now ' 来月の予定をエクスポートする場合は Now の代わりに DateAdd("m",1,Now) を使用します。
    ' 月単位ではなく任意の単位にする場合は以下の記述を変更します。
    strStart = Year(Now) & "/" & Month(Now) & "/1 00:00"
    strEnd = DateAdd("m", 1, CDate(strStart)) & " 00:00"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set stmCSVFile = objFSO.CreateTextFile(CSV_FILE_NAME, True)
    ' CSV ファイルのヘッダです。出力するフィールドを増減する場合はこちらも変更してください。
    stmCSVFile.WriteLine """ユーザー"",""件名"",""場所"",""開始日時"",""終了日時"",""分類項目"",""主催者"",""必須出席者"",""任意出席者"""
    For i = LBound(arrUsers) To UBound(arrUsers)
        strUserName = arrUsers(i)
        Set objRecip = Application.Session.CreateRecipient(strUserName)
        objRecip.Resolve
        If Not objRecip.Resolved Then
            MsgBox "ユーザーが特定できませんでした。", vbCritical, "共有されている予定表のエクスポート"
            Exit Sub
        End If
        Set colAppts = Application.Session.GetSharedDefaultFolder(objRecip, olFolderCalendar).Items
        colAppts.Sort "[Start]"
        colAppts.IncludeRecurrences = True
        Set objAppt = colAppts.Find("[Start] < """ & strEnd & """ AND [End] >= """ & strStart & """")
        While Not objAppt Is Nothing
            strLine = """" & objRecip.Name & _
                """,""" & objAppt.Subject & _
                """,""" & objAppt.Location & _
                """,""" & objAppt.Start & _
                """,""" & objAppt.End & _
                """,""" & objAppt.Categories & _
                """,""" & objAppt.Organizer & _
                """,""" & objAppt.RequiredAttendees & _
                """,""" & objAppt.OptionalAttendees & _
                """"
    '
           stmCSVFile.WriteLine strLine
            Set objAppt = colAppts.FindNext
        Wend
    Next
    stmCSVFile.Close
End Sub

マクロの登録方法やメニューへの追加について

広告

Exchange 環境の複数ユーザーの予定を CSV にエクスポートするマクロ」への3件のフィードバック

  1. いつも参考にさせていただいております。
    現在、こちらの記事を参考にExchange環境のスケジュールを取得しようと考えております。

    こちらのExchange環境では、参照者のフォルダへのアクセス権限が「件名」「場所」「空き時間情報」のみとなっているためか、開始時間や終了時間をキーにFindしようとしても失敗してしまいます。

    そこで、件名をキーにすべてのスケジュールを抽出したいのですがどのようにすればよろしいか教えていただいてもよろしいでしょうか。
    Findではできないかと思い、Restrictを使用したりしたのですが出力形式が違うためうまく動作しません。

    よろしくお願いいたします。

  2. いつも参考にさせていただいております。

    公開いただいた「複数ユーザの予定表をcsvにダウンロードする」コードを利用しておりますが、
    以下のエラーメッセージが表示され、特定のユーザの処理の途中で終了してしまいます。

    ===============
    -2147352567(800200009)
    Startは不明なプロパティです
    ===============

    strStart、strEnd、stmCSVFile、strLineを変更しておりますが、
    特定ユーザの180件ほどのスケジュールは取得できておりますので、
    変更した内容に問題はないと考えております。

    エラーメッセージを検索しましたが、解決につながりそうなものはないため、
    ご教示いただければ大変ありがたいです。

    よろしくお願いいたします。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中