予定の件名と場所の文字列を一括で置き換えるマクロ


コメントにて以下のご要望をいただきました。


別件(祝日追加)でマクロを利用させて頂き大変助かりました。
可能であればマクロ作成をご検討頂きたいのです。
OS:Windows 7 Professional(64bit)
Outlook2013
Outlook.comのアカウントの予定を個人の予定表として利用する為
アカウント登録し、Outlook2013側で
Outlook.comアカウントの予定を入力しております。
Outlook2013の予定表でも同様だとは思うのですが
予定の【件名】【場所】に入力した文字を検索は可能なのですが
置換をしたいのです。
よろしくお願い申し上げます。


現在表示している予定表フォルダーのアイテムの件名と場所を検索し、指定された文字列に置き換えるマクロは以下のようになります。

' ここをトリプルクリックでマクロ全体を選択できます。        
Public Sub ReplaceTextInSubjectAndLocation()
    Dim strFind As String ' 検索する文字列
    Dim strReplace As String ' 置き換える文字列
    '
    Dim colItems As Items
    Dim apptItem As AppointmentItem
    Dim fDirty As Boolean
    '
    strFind = InputBox("検索文字列:")
    strReplace = InputBox("置換文字列:")
    Set colItems = ActiveExplorer.CurrentFolder.Items
    For Each apptItem In colItems
        fDirty = False
        With apptItem
            '
            If .Subject Like "*" & strFind & "*" Then
                .Subject = Replace(.Subject, strFind, strReplace)
                fDirty = True
            End If
            '
            If .Location Like "*" & strFind & "*" Then
                .Location = Replace(.Location, strFind, strReplace)
                fDirty = True
            End If
            '
            If fDirty Then
                .Save
            End If
        End With
    Next
End Sub

   

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

広告

予定の件名と場所の文字列を一括で置き換えるマクロ」への6件のフィードバック

  1. 要望をお願いした者です。早々の対応ありがとうございます。
    早速、マクロを登録して実行してみました。

    一点気になる点があります。
    件名欄の文字列の置換え時と場所欄の置換え時の動作に違いあります。

    具体的に申しますと、例えば 件名欄に”あいうえお” 場所欄に”xyz” のデータを入力しており

    件名欄の ”あいうえお” を”かきくけこ” へ
    Const KEY_FIND = “あいうえお” ‘ 検索する文字列を指定
    Const KEY_REPLACE = “かきくけこ” ‘ 置き換える文字列を指定

    問題なく置換えられました。予定表のビュー(週,月)どれでもアイテムを開かない状態で
    置換えられている文字の確認がとれます。アイテムを開いても置換えされています。

    場所欄 ”xyz” を”abc” へ
    Const KEY_FIND = “xyz” ‘ 検索する文字列を指定
    Const KEY_REPLACE = “abc” ‘ 置き換える文字列を指定

    画面に変化がありません。
    予定表のビュー(週,月)どれでもアイテムを開かない状態では置換えされていません。
    アイテムを開くと”abc”に変換されています。
    閉じる時に変更を確認するダイアログがでます。
    変更するにしないと当然もとの”xyz”となります。

    件名欄と同様の動作なるように改善できないでしょうか?

    また、更なる要望として

    検索する文字列 と置き換える文字列を をダイアログを出現させて
    随時入力する方法は可能でしょうか?

    毎回:マクロの画面で文字列を指定する方法を避けたい。
    (マクロを使えない人の端末に登録は当方がするが)
    実行はツールにボタンとしてマクロを登録し、
    ボタン押すと文字指定のダイアログが出現させて運用したいのです。

    よろしくお願い申し上げます。

    • 件名を置き換えた際に更新されない不具合を修正しました。
      また、検索文字と置き換え文字をダイアログから入力するように変更しました。

  2. moonです。

    早速、ご対応頂きありがとうございます。
    確認させて頂きました。

    件名、場所どちらも、置換えされず、空欄となってしまいます。

    前回のと見比べて以下の部分を修正致しましたら問題なく検索(置換)できました。

    18行目
    .Subject = Replace(.Subject, strFind, KEY_REPLACE)
    ↓↓
    .Subject = Replace(.Subject, strFind, strReplace)

    23行目
    .Location = Replace(.Location, strFind, KEY_REPLACE)
    ↓↓
    .Location = Replace(.Location, strFind, strReplace)

    次々と大変恐縮ですが、現在の全ての予定表に対しての検索(置換)も残しつつ
    場合によっては、検索(置換)の対象を任意に指定する事は可能でしょうか?

    具体例で申し上げますと、検索した結果に対して検索(置換)や
    ビュー(一覧)で任意の予定を複数選択したし、選択した予定に対しての検索(置換)という具合です。

    よろしくお願い申し上げます。

  3. ご確認、ありがとうございます。
    要望についても改めてご検討を頂けるとのこと
    よろしくお願い申し上げます。

  4. お世話になります。

    公開して頂いたこちらのマクロを
    大変便利に利用させて頂いております。

    使用者のひとりが置換文字列を何も入れず(空白)のまま実行してしまい。
    件名が空白となったものがあります。
    解決策 件名が空白の場合の検索(置換)方法 をご教授頂ければと思います。

    strFind = InputBox(“検索文字列:”) を空白のまま検索しましたが無理でした。

    検索する文字列 と置き換える文字列を をダイアログを出現させて
    随時入力する方法以前(初期公開)に

    Const KEY_FIND = “xyz” ‘ 検索する文字列を指定
    Const KEY_REPLACE = “abc” ‘ 置き換える文字列を指定

    というのがあったので
    Const KEY_FIND = “ ” ‘ 検索する文字列を指定
    とすればよいのかと思いましたが
    前後の構文は既に見れないので前後をどう記述していたか不明で試すことができません。

    件名が空白の場合の検索(置換)方法をご検討下さい。

    よろしくお願い申し上げます。

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中