При работе с базами данных в Excel, где в ячейках присутствуют номера телефонов, порой требуется выполнять звонки по множеству номеров, указанных в таблице.
Обычно этот процесс не автоматизирован - пользователь, глядя в таблицу Excel, набирает на своём мобильном телефоне номер из очередной ячейки.
Чем это чревато - вы и сами понимаете: мало того, что пользователь теряет время, набирая номер на телефоне, так и при наборе номера возможно ошибиться, в результате чего вы потратите лишнее время и деньги.
Предлагаю вашему вниманию макрос, который позволит нажатием одной кнопки набрать номер телефона из ячейки в популярном софтфоне EyeBeam
Sub ПримерКодаДляЗвонкаИзExcel() ' макрос запустит программу EyeBeam, и наберёт указанный номер CallWithEyeBeam "8-912-3456789" End Sub
Чуть позже я также опубликую макрос для экспорта списка номеров из таблицы Excel в контакт-лист программы eyeBeam
(формируется CSV файл, который можно импортировать в eyeBeam)
Если Вам необходимо в качестве телефона использовать обычный мобильный телефон, то для этого нужно сначала установить программку, которая бы управляла мобильным телефоном.
Телефон подойдет любой, лишь бы в нём был модем (если функция подключения к интернету есть - значит и модем есть).
Программка называется "Телефум", скачать её можно с сайта разработчика: http://telefum.com/download/
Никакой макрос в этом случае писать не придется - программа сама установит надстройку,
так что звонить Вы сможете кликнув правой кнопкой мыши по выделенной ячейке и выбрав в контекстном меню "Позвонить", только эту функцию после установки необходимо активировать, как описано вот здесь: http://telefum.com/dokument/integration/office/excel/
Форматировать номер не нужно, программа сама очистит номер от ненужных символов.
Кроме того программа умеет подключаться одновременно к нескольким телефонам, так что Вы сможете настроить звонки разным операторам с разных телефонов.
Вот небольшая видеопрезентация того, как это работает: http://telefum.com/excel_call/
Для работы этого макроса, скопируйте в стандартный модуль следующие функции:
Function eyeBeamPath() As String ' возвращает путь к файлу eyeBeam.exe ' проверяем наличие файла в папке «по-умолчанию» eyeBeamPath = Environ("ProgramFiles") & "\CounterPath\eyeBeam 1.5\eyeBeam.exe" If Dir(eyeBeamPath, vbNormal) = "" Then eyeBeamPath = "" Else Exit Function On Error Resume Next ' читаем путь к папке в реестре, и ищем файл eyeBeam.exe key$ = "HKEY_CURRENT_USER\Software\CounterPath\RegNow Enhanced\WorkingFolder" eyeBeamFolder$ = CreateObject("WScript.Shell").RegRead(key$) eyeBeamFile$ = Dir(eyeBeamFolder$ & "\*eyeBeam*.exe", vbNormal) If eyeBeamFile$ <> "" Then eyeBeamPath = eyeBeamFolder$ & "\" & eyeBeamFile$ End Function Sub CallWithEyeBeam(ByVal phoneNumber$) ' макрос проиводит вызов номера phoneNumber$ в программе eyeBeam (SIP телефония) On Error Resume Next: filePath$ = eyeBeamPath If filePath$ = "" Then msg = "Не найден файл программы eyeBeam.exe" MsgBox msg, vbCritical, "Невозможно выполнить звонок": Exit Sub End If cmd$ = """" & filePath$ & """ -dial=""" & phoneNumber$ & """" res = Shell(cmd$) End Sub
Для набора номера из выделенной ячейки, макрос будет аналогичным:
Sub ПозвонитьНаНомерИзВыделеннойЯчейкиExcel() ' макрос запустит программу EyeBeam, и наберёт номер из ячейки CallWithEyeBeam Trim(ActiveCell) End Sub
Реконмендуется предварительно проверить номер телефона на корректность, и удалить из него лишние символы.
Это можно сделать при помощи дополнительной функции SIPnumber:
(протестировано на софтфоне eyeBeam версии 1.5)
Sub ПозвонитьНаНомерИзВыделеннойЯчейкиExcel() ' макрос запустит программу EyeBeam, и наберёт номер из ячейки CallWithEyeBeam SIPnumber(ActiveCell) End Sub Function SIPnumber(ByVal txt$) As String ' функция берет из текста txt$ первый попавшийся номер телефона, ' и возвращает его, удаляя лишние символы ' Например, из текста «c/o +371-7-500431, 500432» получаем номер «8-10-371-7-500431» Application.Volatile True txt = Split(txt, ",")(0): txt = Split(txt, ";")(0) txt = Replace(txt, "c/o", ""): txt = Replace(txt, " ", "") txt = Replace(txt, "+7", "8-"): txt = Replace(txt, "+", "8-10-") txt = Replace(txt, "--", "-"): If Len(txt) < 3 Then txt = "" SIPnumber = txt End Function
Комментарии
Здравствуйте. Попробовали, действительно при использовании ГИПЕРССЫЛКА можно вызвать Скайп, но появляется только окно Скайп с номеронабирателем и все.
Способ с гиперссылкой работает, только если есть Ник, причем только если Ник на английском языке.
Пробовали несколько раз и утром, и вечером, на разных машинах, разные люди.
А какая разница, в ячейке ник из скайпа, или номер телефона?
Проверьте, — всё работает и с номерами телефонов.
Спасибо. Но в нашем случае в ячейках EXCEL содержится не Ник пользователя, а номер телефона вида 8 или (+7) 86550ХХХХХХХ.
Т.Е. нужно инициировать перенос номера в скайп, с последующим вызовом.
К вопросу о том почему не используем Телефум, нет потребности во всех дополнительных "плюшках" этой программы.
Чтобы из Excel звонить через скайп,
в первый столбец поместите ник того, кому хотите звонить,
а во второй столбец - формулу типа этой:
=ГИПЕРССЫЛКА("skype:"&$A1&"?call";"позвонить")
Вот что получится:
И никаких макросов не надо...
Через Excel звонить невозможно.
Вам надо просто инициировать звонок в скайпе, нажатием на ячейку с ником?
Так это вроде можно сделать, щелкнув по гиперссылке...
Добрый день.
Подскажите сколько будет стоить макрос для звонков из EXCEL через скайп?
Спасибо за ссылку на программу "Телефум".
давно искал что-то подобное.
Да, можно, если программа Sippoint поддерживает параметра командной строки.
Даже если не поддерживает - есть возможность набрать нужный номер (сложнее, конечно, но реально)
Добрый день. А можно этот код переделать под другую программу? Необходимо набирать номер записанный в Excel через программу Sippoint.
Отправить комментарий