Простой VBA скрипт для преобразования таблицы excel телефонной базы контактов в файл .vcf
Недавно я пытался перекинуть свои контакты из старого Блекберри в телефон с Андроидом и меня постигла неудача — оказалось не существует инструментов для корректного преобразования одного формата в другой.
Тогда я решил преобразовать мои контакты, полученные из старого телефона, в таблицу excel, и с помощью несложного скрипта в VBA преобразовать её файл вида .vcf, который можно скормить любому современному телефону.
Таблица у меня получилась такого вида:
Пример таблицы excel с контактами
Public Sub vcard()
Dim a(), i&, ii&, t
Dim b As String, OutDir As String
Dim fso As Object 'FileSystemObject
Dim txt As Object 'TextStream
a = [a1].CurrentRegion.Value
b = "" ' Переменная, в которую мы будем собирать информацию в формате .vcf
For i = 2 To UBound(a)
b = b & "BEGIN:VCARD" & vbNewLine & "VERSION:2.1" & vbNewLine
b = b & "FN:" & Cells(i, 1).Text & vbNewLine
If Cells(i, 2).Text <> "" Then b = b & "EMAIL:" & Cells(i, 2).Text & vbNewLine
If Cells(i, 3).Text <> "" Then b = b & "ADR:" & Cells(i, 3).Text & ", " & Cells(i, 4).Text & vbNewLine
If Cells(i, 5).Text <> "" Then b = b & "TEL;HOME:" & Cells(i, 5).Text & vbNewLine
If Cells(i, 6).Text <> "" Then b = b & "TEL;CELL;PREF:" & Cells(i, 6).Text & vbNewLine
If Cells(i, 7).Text <> "" Then b = b & "TEL;WORK:" & Cells(i, 7).Text & vbNewLine
If Cells(i, 8).Text <> "" Then b = b & "ORG:" & Cells(i, 8).Text & vbNewLine
If Cells(i, 9).Text <> "" Then b = b & "TITLE:" & Cells(i, 9).Text & vbNewLine
If Cells(i, 10).Text <> "" Then b = b & "NOTE:" & Cells(i, 10).Text & vbNewLine
b = b & "END:VCARD" & vbNewLine
Next
OutDir = "C:\out\" 'Папка, в которую сохраним полученный файл
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.CreateTextFile(OutDir & "out.vcf", 1, 1) 'Последний параметр - Unicode
txt.WriteLine b
txt.Close
End Sub
Код перебирает строки и ячейки и если находит информацию в соответствующих ячейках создаёт соответствующую строчку в файле .vcf.
Вы можете сформировать другую табличку в exsel и немого скорректировав скрипт сможете собрать свой файл .vcf.
Ничего сложного, но может кому-то понадобится.