Outlook2013のアドレス帳をThunderbirdに移す件でググったら、ジャストのサイトが見つかった。
- ThunderbirdとOutlook間でアドレス帳を移行する方法(synclogue navi 2014年4月8日)
n2−1.Outlook からエクスポート(取り出し)
- まず、Outlook 左上のタブ「ファイル」をクリックします。
- 左側の「オプション」をクリックします。
- 左側の「詳細設定」をクリックします。
- 「エクスポート」をクリックします。
- 「ファイルにエクスポート」を選択し、「次へ」をクリックします。
- 「テキストファイル(Windows、カンマ区切り)」を選択し、「次へ」をクリックします。
- そして、移行したいアドレス帳のフォルダを選択し、「次へ」をクリックします。
- ※一度に1フォルダしかエクスポートできないため、このように複数のアドレス帳フォルダを作成している場合は、本項の作業を繰り返して一つずつエクスポートします。
- 「参照」をクリックし、
- 保存先を聞かれるので、デスクトップなど自分のわかりやすい場所を選択し、わかりやすい名前(ここでは「Outlook アドレス帳」としました)を入力し、「OK」をクリックします。
- そして、「次へ」をクリックします。
- 「完了」をクリックします。
- これで、Outlook のアドレス帳のデータをエクスポートできました。
n2−2.Thunderbird にインポート(取り込み)
前項でエクスポートしたファイルをThunderbird にインポートしましょう。
- まず、Thunderbird のメイン画面で、「ツール」→「設定とデータのインポート」をクリックします。
- 表示されたウィンドウで、「アドレス帳」を選択し、「次へ」をクリックします。
- 「テキストファイル」を選択し、「次へ」をクリックします。
- ファイル選択画面が開くので、ファイルの種類を「カンマ区切り(*.csv)」に設定し、先ほどOutlookからエクスポートしたCSVファイルを選択し、「開く」をクリックします。
- エクスポート元(Outlook)のアドレス帳の項目と、Thunderbird のアドレス帳の項目が違う場合があるので、ここで項目合わせをします。
- 右側がエクスポート元(Outlook)の項目で、左側が Thunderbird の項目です。
- 一致している場合がほとんどですが、もし一致しない項目があれば、右側の「上へ」「下へ」のボタンで項目を移動させて一致させて、「OK」をクリックします。
- ここでチェックを外した項目はインポートされないので、インポート不要な項目がある場合はチェックを外します。
- すると、インポート完了の画面が表示されるので、「完了」で閉じます。
- ちゃんとインポートされているか確認のために、アドレス帳を開くと、エクスポート時のCSVファイル名がそのままフォルダ名(今回は「アドレス帳」)となって追加されています。
エクスポート元の Outlookで、アドレス帳をフォルダ分けしていた場合は、フォルダごとにCSVファイルとしてエクスポートし、フォルダごとに一つ一つ Thunderbird にインポートしてください。
- 「CSVで移行」なので、難しいことはない‥‥
- 更に、項目の対応で「一致している場合がほとんどです」とあったので、楽勝‥‥
と思ったが、意外に手こずった。その理由は、アドレス帳の項目の対応で一致していない‥‥
Outlookのバージョンの違いもあろうが、マイクロソフト社は「簡単に移行させない」と暗に仕組んでいるのではないか...(性悪説)
そこで、ThunderbirdとOutlook2013のcsvファイルの項目を羅列(ここを参照)した。
- Thunderbirdで実際に入力しているのは10項目程度であるが、Outlook2013 のcsvは全部で95項目もある。
なんということでしょう♪ - Outlook2013のアドレス帳は、単独の住所録としても十分な項目を持っていると言えよう。
- しかし、Microsoft コミュニティには「Outlook2013のアドレス帳は、単独に開くことはできない」とあった。
- Thunderbirdでは、アドレス帳を単独で開くショートカットアイコンの作り方が紹介されている。
今日の結論
- 空データの列を削除するEcelマクロの作成(後述)
- Outlook2013のcsvファイル、あまりに項目数が多い。実際に使っている項目は10%程度。
必要最低限の項目に絞った方が効率よく移行できるはず‥‥ と言う観点から作成した。
- Outlook2013のcsvファイル、あまりに項目数が多い。実際に使っている項目は10%程度。
- 移行の方法は synclogue naviさんのサイトどおりで、全く問題無かった。
ThunderbirdとOutlook2013のCSVファイル出力時の項目
「入力」は私が、Thunderbirdで、○:必ず入力している項目 △:必要に応じ入力している項目
T-No | Thunderbird | 入力 | | | O-No | Outlook2013 |
---|---|---|---|---|---|
1 | 名 | ○ | | | 1 | 肩書き |
2 | 姓 | ○ | | | 2 | 名 |
3 | 表示名 | ○ | | | 3 | ミドル ネーム |
4 | ニックネーム | | | 4 | 姓 | |
5 | メールアドレス | ○ | | | 5 | 敬称 |
6 | 別のメールアドレス | | | 6 | 会社名 | |
7 | スクリーンネーム | | | 7 | 部署 | |
8 | 勤務先の電話番号 | | | 8 | 役職 | |
9 | 自宅の電話番号 | △ | | | 9 | 番地 (会社) |
10 | FAX 番号 | △ | | | 10 | 住所 2 (会社) |
11 | ポケットベル番号 | | | 11 | 住所 3 (会社) | |
12 | 携帯電話番号 | △ | | | 12 | 市町村 (会社) |
13 | 番地 (自宅) | △ | | | 13 | 都道府県 (会社) |
14 | 番地 (自宅) 2 | | | 14 | 郵便番号 (会社) | |
15 | 市区町村 (自宅) | △ | | | 15 | 国 (会社)/地域 |
16 | 都道府県 (自宅) | △ | | | 16 | 番地 (自宅) |
17 | 郵便番号 (自宅) | △ | | | 17 | 住所 2 (自宅) |
18 | 国 (自宅) | | | 18 | 住所 3 (自宅) | |
19 | 番地 (勤務先) | | | 19 | 市町村 (自宅) | |
20 | 番地 (勤務先) 2 | | | 20 | 都道府県 (自宅) | |
21 | 市区町村 (勤務先) | | | 21 | 郵便番号 (自宅) | |
22 | 都道府県 (勤務先) | | | 22 | 国 (自宅)/地域 | |
23 | 郵便番号 (勤務先) | | | 23 | 番地 (その他) | |
24 | 国 (勤務先) | | | 24 | 住所 2 (その他) | |
25 | 役職 | | | 25 | 住所 3 (その他) | |
26 | 部門 | | | 26 | 市町村 (その他) | |
27 | 組織 | | | 27 | 都道府県 (その他) | |
28 | Web ページ 1 | | | 28 | 郵便番号 (その他) | |
29 | Web ページ 2 | | | 29 | 国 (その他)/地域 | |
30 | 誕生年 | | | 30 | 秘書の電話 | |
31 | 誕生月 | | | 31 | 会社 FAX | |
32 | 誕生日 | | | 32 | 会社電話 | |
33 | 追加情報 1 | | | 33 | 会社電話 2 | |
34 | 追加情報 2 | | | 34 | コールバック | |
35 | 追加情報 3 | | | 35 | 自動車電話 | |
36 | 追加情報 4 | | | 36 | 会社代表電話 | |
37 | メモ | △ | | | 37 | 自宅 FAX |
| | 38 | 自宅電話 | |||
| | 39 | 自宅電話 2 | |||
| | 40 | ISDN | |||
| | 41 | 携帯電話 | |||
| | 42 | その他の FAX | |||
| | 43 | その他の電話 | |||
| | 44 | ポケットベル | |||
| | 45 | 通常の電話 | |||
| | 46 | 無線電話 | |||
| | 47 | TTY/TDD | |||
| | 48 | テレックス | |||
| | 49 | ID 番号 | |||
| | 50 | Web ページ | |||
| | 51 | アカウント | |||
| | 52 | イニシャル | |||
| | 53 | インターネット空き時間情報 | |||
| | 54 | キーワード | |||
| | 55 | その他住所私書箱 | |||
| | 56 | ディレクトリ サーバー | |||
| | 57 | プライベート | |||
| | 58 | マネージャー | |||
| | 59 | メモ | |||
| | 60 | ユーザー 1 | |||
| | 61 | ユーザー 2 | |||
| | 62 | ユーザー 3 | |||
| | 63 | ユーザー 4 | |||
| | 64 | 会社 ID | |||
| | 65 | 会社住所私書箱 | |||
| | 66 | 会社名フリガナ | |||
| | 67 | 記念日 | |||
| | 68 | 経費情報 | |||
| | 69 | 言語 | |||
| | 70 | 参照事項 | |||
| | 71 | 子供 | |||
| | 72 | 支払い条件 | |||
| | 73 | 事業所 | |||
| | 74 | 自宅住所私書箱 | |||
| | 75 | 趣味 | |||
| | 76 | 場所 | |||
| | 77 | 職業 | |||
| | 78 | 姓フリガナ | |||
| | 79 | 性別 | |||
| | 80 | 誕生日 | |||
| | 81 | 電子メール アドレス | |||
| | 82 | 電子メールの種類 | |||
| | 83 | 電子メール表示名 | |||
| | 84 | 電子メール 2 アドレス | |||
| | 85 | 電子メール 2 の種類 | |||
| | 86 | 電子メール 2 表示名 | |||
| | 87 | 電子メール 3 アドレス | |||
| | 88 | 電子メール 3 の種類 | |||
| | 89 | 電子メール 3 表示名 | |||
| | 90 | 配偶者 | |||
| | 91 | 秘書の氏名 | |||
| | 92 | 秘密度 | |||
| | 93 | 分類 | |||
| | 94 | 名前フリガナ | |||
| | 95 | 優先度 |
- アドレス帳の項目は、Thunderbird 37項目に対し、Outlook2013は95項目。
- これは吉か凶か‥‥ は、使う人次第。
- 一般的には「項目が多い=重い」につながるであろう。
- 個人的には「シンプル is ベスト」を盲信している。
- 個人的には「アドレス帳」は、メールのアドレス帳の機能のみ保持していれば良いのではないか‥‥ と思う。
リスト形式で空データの列を削除するExcel VBAのコード
-
- まりふのひとの「公開」OneDrive ⇒ ZipLib と進み、
- マクロ集v0004a.zip を開く。
- マクロ集.xlsm の sub「リスト形式で空データ列を削除する」
- Public Sub リスト形式で空データ列を削除する()
- Dim mbTitle As String
- Dim isAll As Boolean 'True:全て同じデータの列も削除する。
- Dim isKakunin As Boolean
- Dim isMatch As Boolean
- Dim c As Long, r As Long
- Dim lastCol As Long, lastRow As Long
- Dim firstString As String
- Call Auto_Open
- mbTitle = "リスト形式で空データ列を削除する/" & MBVersion
- LNGAns = MsgBox("リスト形式前提で、空データの列を削除します。" & vbCrLf & vbCrLf _
- & " ■リスト形式(1行目が項目名)が大前提です。" & vbCrLf & vbCrLf _
- & " ■[はい]:空データの時は列削除する。" & vbCrLf _
- & " ■[いいえ]:全て同じデータの列も削除する。" & vbCrLf _
- & " ■[キャンセル]:処理を中断する。" _
- , vbYesNoCancel + vbQuestion, mbTitle)
- If LNGAns = vbCancel Then Exit Sub
- If LNGAns = vbNo Then isAll = True Else isAll = False
- 'まず空データ時、列削除する。
- lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
- For c = lastCol To 1 Step -1
- LNGAns = Cells(Rows.Count, c).End(xlUp).Row
- If LNGAns = 1 Then Columns(c).Delete
- Next
- If isAll = False Then Exit Sub
- '全て同じデータ時、列削除する。
- lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
- Cells(1, lastCol).Select
- LNGAns = MsgBox("空データ時の列削除が終わりました。" & vbCrLf _
- & "引き続き、全て同じデータの列を削除します。" & vbCrLf & vbCrLf _
- & " ■[はい]:列毎に 削除する/しない を確認する。" & vbCrLf _
- & " ■[いいえ]:一括 削除する。" & vbCrLf _
- & " ■[キャンセル]:中止する。" & vbCrLf _
- , vbYesNoCancel + vbQuestion, mbTitle)
- If LNGAns = vbCancel Then Exit Sub
- If LNGAns = vbYes Then isKakunin = True Else isKakunin = False
- 'Ctrl+Shift+* で最終行を取得する。
- Range("A1").SpecialCells(xlLastCell).Select
- lastRow = ActiveCell.Row
- For c = lastCol To 1 Step -1
- Cells(1, c).Select
- firstString = Cells(2, c)
- isMatch = True
- For r = 3 To lastRow
- If Cells(r, c) <> firstString Then
- isMatch = False
- Exit For
- End If
- Next
- If isMatch Then
- If isKakunin Then
- Columns(c).Select
- If MsgBox("選択されている列を削除します。", vbOKCancel, mbTitle) = vbOK Then Columns(c).Delete
- Else
- Columns(c).Delete
- End If
- End If
- Next
- End Sub
- 10. Auto_Open はこんな感じ。
- Public Sub Auto_Open()
- Windows(ThisWorkbook.Name).ActivateNext
- STRAns = ThisWorkbook.Name
- MBVersion = Left(STRAns, InStrRev(STRAns, ".") - 1) _
- & " ver." & ThisWorkbook.Sheets("更新履歴").Range("A4")
- End Sub
- 11.MBVersion は、その上の Auto_Open で作っており、機能上は不要。