アプリなどの開発/試験用にダミーの個人情報を詰まった住所録を作る場合に
1件1件手で打って行くとか大変なので、2通りの方法で大量のデータを携帯電話に入れる方法について説明いたします。
ここで説明するのは、 Google連絡先を使った方法 と vCardを使った方法 です。
個人情報の作成
疑似的な個人情報を作成するサービスを提供してくれているサイト様
日本人
欧米人
Google連絡先(コンタクト)を使った方法
メリット
- CSV形式をインポート出来るので大量のデータ作成とスマホ同期が非常に簡単
デメリット
- Googleアカウントとネットワークが必要
- 顔写真のインポート/エクスポートは出来ない(Google連絡先の仕様)1
- 端末固有の細かい設定は出来ない
手順
下記リンク先の手順を参考にしてください。
Gmailにエクセルで作った連絡先をインポートしたい(PC編/2018年11月現在)
あとはスマホ端末から同じGoogleアカウントにログインして同期すれば完了です。
vCardを使った方法
メリット
- Googleアカウントとネットワーク環境が不要
- 端末固有の細かい設定が可能
デメリット
- 汎用的な変換ツールが無い
- 端末で使用できるタグを知っておく必要がある
手順
エクセルとVBAを使って作成します。
今回登録する内容は、下記のアドレス帳に必要な最小限の項目に絞りました。
BEGIN:VCARD
VERSION:3.0
FN:[名前(表示名)]
N:[姓];[名];[ミドルネーム];[敬称]
X-PHONETIC-FIRST-NAME:[ふりがな(名)]
X-PHONETIC-LAST-NAME:[ふりがな(姓)]
TEL;TYPE=WORK:[電話番号]
EMAIL;TYPE=WORK:[メールアドレス]
PHOTO;ENCODING=b;TYPE=JPEG:[連絡先画像]
END:VCARD
図のようにセル列毎に登録する項目を作ります。
エクセルVBAで下記のコードを貼り付けます。
Option Explicit
'データ開始行を指定
Global Const cstDataRow = 2
'パラメータシート列指定
Global Const cstParamCol_L_Name = "B" '表示名(姓)
Global Const cstParamCol_F_Name = "C" '表示名(名)
Global Const cstParamCol_L_Furi = "D" 'フリガナ(姓)
Global Const cstParamCol_F_Furi = "E" 'フリガナ(名)
Global Const cstParamCol_Phone_Type1 = "F" '電話番号(TYPE)
Global Const cstParamCol_Phone_Num1 = "G" '電話番号
Global Const cstParamCol_Mail_Type1 = "H" 'メール(TYPE)
Global Const cstParamCol_Mail1 = "I" 'メール
Global Const cstParamCol_Photo = "J" 'Photo(連絡先画像)
Global Const Max = 50 '住所録の数
Sub make_address_utf8() '
Dim i, row As Long
Dim adoStm As Object
Set adoStm = CreateObject("ADODB.Stream")
With adoStm
.Type = 2 ' 1:バイナリ・2:テキスト
.Charset = "UTF-8"
.Open
For i = 0 To (Max-1)
row = cstDataRow + i
.WriteText "BEGIN:VCARD", 1
.WriteText "VERSION:3.0", 1
.WriteText "FN:" & Cells(row, cstParamCol_L_Name) & " " & Cells(row, cstParamCol_F_Name), 1
.WriteText "N:" & Cells(row, cstParamCol_L_Name) & ";" & Cells(row, cstParamCol_F_Name) & ";;;", 1
.WriteText "X-PHONETIC-FIRST-NAME:" & Cells(row, cstParamCol_F_Furi), 1
.WriteText "X-PHONETIC-LAST-NAME:" & Cells(row, cstParamCol_L_Furi), 1
.WriteText "TEL;TYPE=" & Cells(row, cstParamCol_Phone_Type1) & ":" & Cells(row, cstParamCol_Phone_Num1), 1
.WriteText "EMAIL;TYPE=" & Cells(row, cstParamCol_Mail_Type1) & ":" & Cells(row, cstParamCol_Mail1), 1
.WriteText "PHOTO;ENCODING=b;TYPE=JPEG:" & Cells(row, cstParamCol_Photo), 1
.WriteText "END:VCARD", 1
Next i
' 2.Postionsを0にして、バイナリモードにする
.Position = 0 '
.Type = 1 ' adTypeBinary
' 3.Positionを3にして読込みBOM分の3バイトを除外
.Position = 3
Dim bin: bin = .Read()
.Close
End With
' BOMを除外したバイナリデータをファイルに出力する
Set adoStm = CreateObject("ADODB.Stream")
With adoStm
.Type = 1 'dTypeBinary
.Open
.Write (bin)
.SaveToFile ThisWorkbook.Path & "\contacts-utf8.vcf", 2 ' force overwrite
.Close
End With
Set adoStm = Nothing
End Sub
マクロを実行させるとcontacts.vcfがエクセルと同じ場所に作られます。
セルが空白時の例外処理とかないので必要でしたら自分で追加してください2
出来上がったvcfファイルをスマホ端末で読み込めば完了です。
連絡先画像について
電話帳で使用できる連絡先画像をvCardで使うには下記の条件があります。3
- 連絡先画像はJPEG形式であること
- 画像の大きさは最大で幅300ピクセル、高さ300ピクセルで、ファイルサイズは50kByteを超えない事
- データをbase64にエンコードする必要があります。
ファイルをbase64に変更するには下記のサービスを使ってみて下さい
"data:image/jpeg;base64,"を除いた全値がJPEGデータのbase64形式になります。
赤枠を箇所を除いた全データがbase64形式のJPEGデータになりますのでPhotoセルに貼り付ければ完了です。