ExcelVBA ~ SoftBankの「シンプルスマホ(おじいちゃん携帯=アンドロイド)」に、CSVに書き出された電話帳データを一括登録するための、そのデータ作成(vCard、VCF作成)をする方法。(準備さえできれば、実際の一括登録は500件が10秒以内に終わります。)

サンプルファイルのダウンロード
※ダウンロード要件?が厳しいブラウザの場合は、右クリックして
 「名前を付けてリンク先を保存」といった旨のメニューで
 ダウンロードしてください。
 FireFoxは普通にダウンロードできるみたいです。
  
  

●操作方法

おおまかな手順は以下です。(いつかもう少し詳しく書きます)

(01)「UTF-8N」の文字コードの、空のテキストファイルを作成。
  (文字コードが超重要)
  (Terapadの「ファイル→文字/改行コード指定保存」などでやれます。)
   メモ帳なら「BOMなし」で保存すればいいのかも?ただし未確認です。
   参考→文字コードはUTF-8? UTF-8N?

(02)電話帳のCSVファイルを用意して開きます。

(03)サンプルファイルをダウンロード・解凍して、開きます。

(04)テストするのでなければ、「Sheet1」にサンプルデータが10件ほど
  入っているので、それを消します。
  (黄色く色付けしてある部分は、のちほどそこに
   フラグを入力するので暫定で色つけしてあります。
   10件以上処理するなら、色付け部分の下の行にも
   のちほど、フラグを入力します。)

  ※逆に、サンプルデータでテストするのであれば、
   (07)へ飛んで、それ以降をおこなってください。
    

(05)「Sheet1」の必要な列に、CSVからデータをコピペ。
  (その際、行の整合性を崩さないように注意)

  また、この段階で「メモ(Note)」などのセルの値に、
  普通に改行が入ってしまっていると、
  スマホ側では一番上の行の文言しか読み込まれず、
  2行目以降は切り捨てられてしまうので、
  この段階では、「メモ(Note)」などの値は、
  1行につなげ直しておいてください。

(06)一応「連番」の列をオートフィルなどで最後まで埋めます。
  (何らかの並べ替えをしたときに原状に戻せるように)

(07)対象のデータの行の「データ化対象フラグ01」の列に1を入力。
  (全件でいいなら、全部の行に「1」を入れます)

(08)Alt+F11でVBEを開きます。

(09)出てきた画面の左側に、「vcf用_データ作成」というモジュールの名前があるので
 それをダブルクリック。

(10)「vcf用_データ作成」モジュールの中身が右側に出てきて、
 「VcfFileDataMake01()」が見える状態になります。

(11)「Dim l_Flg01 As Long」と書いてあるへんをいったんクリックして、
 カーソルが点滅するのを確認します。

(12)その状態のまま、F5キーを押します。 「VcfFileDataMake01() が実行されます。
  (選択したデータだけが全部、クリップボードに送られます。
   画面としては特に何の変化も起こりません。)

(13)テキストファイルに、Ctrl+Vでクリップボードの電話帳データを貼り付け。

(14)上書きしてファイルを閉じたのち、拡張子を「.txt」から「.vcf」に変更。

(15)シンプルスマホに添付ファイルとして送信。

(16)シンプルスマホ側でメールアプリなどで点ファイルを開く。

(17)選択登録か全件登録かを聞いてくるので、「全件登録」をします。
  これで終わりです。

  

いちおう、空白のセルの部分も、vCard形式で、「英語の項目名だけ」が書き出されます。
が、そのような項目は、シンプルスマホ側では無視されて、「無かったもの」として扱われ、データのある項目だけがスマホに吸い込まれ、残りますので、心配いりません。

あと、「メモ(Note)」などで、改行を入れてスマホ側に表示したい場合は、
「Note」と「:」のあいだに「;ENCODING=QUOTED-PRINTABLE」を挟んで、
「文言=0D=0A文言=0D=0A文言=0D=0A」とやると
おじいちゃん携帯側で、改行された状態で表示されます。



「Note」と「:」のあいだに「;ENCODING=QUOTED-PRINTABLE」を挟んで、
NOTE;ENCODING=QUOTED-PRINTABLE:社長=0D=0A会長=0D=0A部長=0D=0Aああああ
とやると、スマホ側では
社長
会長
部長
ああああ
と表示されます。

サンプルファイルでは、そうなっていませんので、
そうしたかったらそうしてください。
もちろん、吸い込んでから、必要な連絡先のものだけ、
普通に手動で改行を入れてもOKです。

なお、CSVの段階で「メモ(Note)」などに普通に改行が入ってしまっていると、
一番上の行の文言しか読み込まれず、2行目以降は切り捨てられてしまうので、
CSVの段階では、1行につなげ直しておいてください。
(上記の(05)を参照。)

※ご注意
今回、各種の「区分」は機能させていません。
一括で吸い込んだあと、気になるようなら気になるモノだけ手作業で変えてください。
電話やメールの「携帯」「勤務先」「自宅」などの区分も正常に吸い込みたいなら、
ご自分でそのような分岐処理を新たに書き加えてください。
参考URL

Android(2.3.4)の連絡先エクスポートで出力されるvCard形式について

  

  

●vCard、VCF、用の電話帳データを生成して、クリップボードに送るプログラム
(CSVの電話帳データを、vCard、VCF、のファイル形式に変換して、
 それをクリップボードに送ります。画面上の変化は特にはありません。)

  

  

●クリップボードに送受信するためのAPI(64bit、32bit、兼用)
Excelの「DataObject(Microsoft Forms 2.0 Object Library)」を使う方法が、
なぜかダメだった(短い文字列は行けたのですが)、APIのほうが確実なのでこちらでやりました。