Excel VBA 質問スレッド №2031 (解決済)

テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい

投稿者 : ボールペン     投稿日時 : 2024/10/21(Mon) 16:03:10     OS : Windows 10     EXCEL : Excel 2013
下記の①~③の作業を行いたいです。
①②は手動で行いますが、③は件数が多いためVBAで行いたいと思っています。



①iPhoneに登録されている電話帳のリストをvcardへ出力
②出力されたvcardの内容をメモ帳へ出力
③出力されたメモ帳のデータの中から、「名前」、「電話番号」、「ふりがな」を抽出してExcelの各セルへ貼り付け



以下は②で出力したvcardデータのサンプルです。



BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 17.6.1//EN
N:○○○○(名前);;;;
FN:名前
X-PHONETIC-LAST-NAME:フリガナ
item1.TEL;type=pref:012 3456 7890(ハイフンなしの電話番号)
item1.X-ABLabel:社用携帯
TEL;type=CELL;type=VOICE:012 3456 7890(ハイフンなしの電話番号)
REV:2024-08-22T07:30:00Z
END:VCARD
BEGIN:VCARD
VERSION:3.0
.
.
.

上記のデータから
名前(○○○○)、
ふりがな(「X-PHONETIC-LAST-NAME:」から行末までの部分)、
電話番号(「item1.TEL;type=pref:」から行末まで、「TEL;type=CELL;type=VOICE:」から行末までの部分)

を抽出して

名前 ふりがな 電話番号(1) 電話番号(2) …
名前 ふりがな 電話番号(1) 電話番号(2) …
名前 ふりがな 電話番号(1) 電話番号(2) …


とExcelに貼り付けていきたいです。
(BEGIN:VCARD~END:VCARDで電話帳1人分のデータ)

※サンプルでは電話番号は2つですが、3つ以上登録している人もいるので、その場合は同じ行に続けて貼り付けたい
※サンプル9行目の「TEL;type=CELL;」は「TEL;type=HOME」や「TEL;type=WORK」の場合もあります。
※Excelのバージョンは2013と2021の2台分あります。


以上です。
長文で申し訳ありませんが、よろしくお願いします。

スポンサーリンク
[返信 1] Re : テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい
投稿者 : ボールペン     投稿日時 : 2024/10/21(Mon) 16:20:46
すみません。タイトル脱字してました。
「テキストファイルから特定の文字列を Excel(できればcsv)ファイルへ転記したい」です。

[返信 2] Re : テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい
投稿者 : ボールペン     投稿日時 : 2024/10/21(Mon) 16:49:01
Excelのバージョンの件ですが、
PCは2台あり2013、2021どちらも使えるということを言いたかったです。
言葉足らずで申し訳ないです。

[返信 3] Re : テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい
投稿者 : ピロリ     投稿日時 : 2024/10/21(Mon) 20:16:29
■[質問] ボールペンさん(2024-10-21 16:03:10)の記事
> ①②は手動で行いますが、③は件数が多いためVBAで行いたいと思っています。

> ①iPhoneに登録されている電話帳のリストをvcardへ出力
> ②出力されたvcardの内容をメモ帳へ出力
> ③出力されたメモ帳のデータの中から、「名前」、「電話番号」、「ふりがな」を抽出してExcelの各セルへ貼り付け
出力されたテキストデータの形式が書かれてないので、文字コードが UTF-8コード,改行コードが CRLF 前提のサンプルです。
csvファイルへの出力については割愛しますが、 <vba csv出力> などで検索できると思います。

Sub Sample()
    Dim Target As String, buf As String, tmp As Variant
    Dim i As Long, r As Long, c As Long
    Target = ThisWorkbook.Path & "\" & "vcard.txt"  'このブックと同フォルダに「vcard.txt」
    With CreateObject("ADODB.Stream")
        .Charset = "UTF-8"                          '文字コード:UTF-8コードの前提
        .Open
        .LoadFromFile Target
        buf = .ReadText
        .Close
        tmp = Split(buf, vbCrLf)                    '改行コード:CRLFの前提
        For i = 0 To UBound(tmp)
            If InStr(tmp(i), "N:") = 1 Then                         '名前ならば、
                r = r + 1: c = 3
                Cells(r, "A") = Replace(Mid(tmp(i), 3), ";", "")
            End If
            If InStr(tmp(i), "X-PHONETIC-LAST-NAME:") = 1 Then      'フリガナならば、
                Cells(r, "B") = Mid(tmp(i), 22)
            End If
            If InStr(tmp(i), "TEL;type=") > 0 Then                  '電話番号ならば、
                Cells(r, c) = Mid(tmp(i), InStrRev(tmp(i), ":") + 1)
                c = c + 1
            End If
        Next i
    End With
End Sub

[返信 4] Re : テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい
投稿者 : ボールペン     投稿日時 : 2024/10/22(Tue) 09:23:05
ピロリさん、回答いただきありがとうございます。
VBA初心者なのでいろいろ言葉足らずですみません。
いただいたコードで試してみて、次は自分で作れるよう勉強します。
ありがとうございました。

[返信 5] Re : テキストファイルから特定の文字Excel(できればcsv)ファイルへ転記したい
投稿者 : ボールペン     投稿日時 : 2024/10/22(Tue) 09:47:05
少し動かしてみましたが、問題なさそうです。
ありがとうございました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-05 18:18:35 )
タイトルとURLをコピーしました