Outlook連絡先を一括更新したいときはないでしょうか。
たとえば改組などでOutlook連絡先の「部署」項目を一括変更したいときなどです。
そんな時に悩むことは、
・VBAでOutlook連絡先を一括更新したいが方法がわからない
ですよね。
今回はそんなお悩みを解決する、
Outlook連絡先を一括更新する方法について
ご紹介します。
もくじ
Outlook連絡先を一括更新するイメージ
今回のシナリオは組織改組があり、「人事総務部」から「人事部」へ部署名が変更になったということを想定します。
変更対象はOutlook連絡先に登録されている各ユーザの「部署」となります。
「人事総務部」を「人事部」へ変更する処理をしていきます。
連絡先を一括変更できるのでとても便利ですね!
それでは早速実装してみましょう!
マクロを設置する下準備をする。
以下を参考にVBAコードを配置する場所を表示させます。
この設定が終えたら一度Outlookを再起動させてください。
Outlook連絡先を一括更新するVBA
Outlook連絡先を一括更新するVBAについて説明をします。
サンプルコードは以下の通りです。
Sub Outlookの連絡先の特定文字を置換する()
'Outlook用の定義
Dim olApp As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olConItems As Outlook.Items
Dim olItem As Object
Dim SearchKey As String
Dim changeWord As String
Dim CountNum As Long
'置換対象のワード
SearchKey = "人事総務部"
'置換後のワード
ChangeWord = "人事部"
CountNum = 0
'Outlookオブジェクトを設定し、MAPI名前空間を介してOutlookの連絡先一覧を取得します。
Set olApp = New Outlook.Application
Set olNamespace = olApp.GetNamespace("MAPI")
Set olFolder = olNamespace.GetDefaultFolder(olFolderContacts)
Set olConItems = olFolder.Items
Dim rc As Integer
rc = MsgBox("連絡先を更新しますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
'連絡先のメールアドレスをキーにして連絡先を検索
Set olItem = olConItems.Find("[Department]='" & SearchKey & "'")
While TypeName(olItem) = "ContactItem"
With olItem
'連絡先の各項目へ値を代入
.Department = ChangeWord
End With
'Outlookの連絡先へ保存
olItem.Save
CountNum = CountNum + 1
Debug.Print olItem.FullName & ":" & olItem.Department & ":" & CountNum & "件"
Set olItem = olConItems.FindNext
Wend
Debug.Print "合計" & CountNum & "件、「" & SearchKey & "」を「" & ChangeWord & "」へ更新をしました"
Else
MsgBox "処理を中断します"
End If
'Null out the variables.
Set olItem = Nothing
Set olConItems = Nothing
Set olFolder = Nothing
Set olNamespace = Nothing
Set olApp = Nothing
End Sub
VBAを設定する
VBAを設定していきましょう。
以下に置換対象のワードおよび、置換後のワードを指定します。
サンプルでは「人事総務部」が検索キーワード、「人事部」が置換ワードとしました。
SearchKey = “人事総務部”
‘置換後のワード
ChangeWord = “人事部”
マクロを登録する
「開発」タブ>「Visual Basic」を押します。
「Visual Basic Editor」にて、[Project1] > [Microsoft Outlook Objects] > [ThisOutlookSession] を開きます。
右クリックし、「挿入」、「標準モジュール」を選択します。
「標準モジュール」「Module1」を選択し、右のコードエリアへ、コードを貼り付けて保存します。
今回は「イミディエイトウィンドウ」を利用しますので、VBEのメニューの「表示」から「イミディエイトウィンドウ」を選択し、表示させてください。
VBA実行前にバックアップをとる
Outlookの連絡先を更新する前にバックアップをとり、
万が一誤った情報に変わってしまった場合に切り戻しが行えるようにしましょう。
Outlook上にて以下の順で操作をするとcsvファイル形式かPST形式で出力することができますのでご参考ください。
「ファイル」>「開く/エクスポート」>「インポート/エクスポート」>「ファイルにエクスポート」>「コンマ区切り値」
「ファイル」>「開く/エクスポート」>「インポート/エクスポート」>「ファイルにエクスポート」>「Outlookデータファイル(PST)」
VBAを実行する
VBAを実行してみましょう。
メニューの➡アイコンか「F5」を押してマクロを実行します。
はい!「イミディエイトウィンドウ」に置換結果が表示されましたね!
では、連絡先をみてみましょう。
はい、[部署]が変更されていますね。
前回のFindメソッドを利用して「人事部」のリストを出してみましょう。
検索キーワードに「人事部」を設定し、メニューの➡アイコンか「F5」を押してマクロを実行します。
はい、結果は問題ないようですね。
VBAの説明
今回のVBAについて説明をします。
連絡先のメールアドレスをキーにして連絡先を検索します。
サンプルでは「部署」の値に「人事総務部」があるアイテムを検索しています。
連絡先の部署に該当するプロパティへ変更後の値を代入します。
「部署」である「Department」へ「人事部」を代入する形になります。
Outlookの連絡先へ保存します。
Saveメソッドはアイテムを保存・上書き保存します。
構文は以下の通りです。
Item単体を指定する必要があることに注意してください。
さいごに
いかがでしょうか。
今回はOutlook連絡先を一括更新する方法についてご紹介しました。
「部署」以外に「電話番号」などほかの項目も同じ要領で一括置換が可能ですので、試してみてください。
コメントを残す