Страницы: 1
RSS
Как Звонить через Excel
 
Всем доброго времени суток. Недавно я задался таким вопросом: пользуясь IP телефонией, через программу Sippoint, как звонить не набирая номер в ручную, а щелкая по ячейке с номером.
В инете нашел такой макрос:
Код
Sub ПозвонитьНаНомерИзВыделеннойЯчейкиExcel()
   CallWithSIPPOINT Trim(ActiveCell)
End Sub
 
Sub CallWithSIPPOINT(ByVal number$)
    ' пытается набрать номер number$ в программе SIPPOINT
   On Error Resume Next: Err.Clear: res = 0

    Hwnd& = FindWindow("TForm1", "Sippoint ")    ' получаем Hwnd& окна запущенного приложения
   If Hwnd& = 0 Then    ' программа не найдена среди запущенных приложений
       SIPPOINTpath$ = Environ("ProgramFiles") & "\Sippoint\Sippoint.exe"
        If Dir(SIPPOINTpath$, vbNormal) = "" Then Exit Sub    ' выход (программа не найдена)
       ' pid& = Shell(SIPPOINTpath$): DoEvents    ' запускаем программу
       MsgBox "Программа «Sippoint» не запущена!", vbExclamation, "Набор номера невозможен": ExitSub
    End If
    If Hwnd& = 0 Or Err > 0 Then Exit Sub    ' так и не удалось запустить программу - выходим из макроса

    TsPanel1& = FindWindowEx(Hwnd&, 0, "TsPanel", vbNullString)
    TsPanel2& = FindWindowEx(Hwnd&, TsPanel1&, "TsPanel", vbNullString)
    TsPageControl& = FindWindowEx(TsPanel2&, 0, "TsPageControl", vbNullString)
    TsTabSheet& = FindWindowEx(TsPageControl&, 0, "TsTabSheet", vbNullString)
    While FindWindowEx(TsTabSheet&, 0, "TVirtualStringTree", vbNullString) <> 0
        TsTabSheet& = FindWindowEx(TsPageControl&, TsTabSheet&, "TsTabSheet", vbNullString)
    Wend
    TsEdit& = FindWindowEx(TsTabSheet&, 0, "TsEdit", vbNullString)
    SendButton& = FindWindowEx(TsTabSheet&, 0, "TsBitBtn", vbNullString)

    ' вводим заданный текст в поле для номера в программе sippoint
   res = res - SendMessage(TsEdit&, WM_SETTEXT, 3, number$)

    ' нажимаем кнопку ВЫЗОВ
   res = res - SendMessage(SendButton&, WM_LBUTTONDOWN, 0, vbNullString)
    res = res - SendMessage(SendButton&, WM_LBUTTONUP, 0, vbNullString)
    
    If TsEdit& * SendButton& Then Debug.Print "Набран номер " & number$
End Sub 
 
Но что-то он не хочет работать. Выделяет FindWindow и пишет: Compile error: Sub or Function not defined Разобраться почему, у меня не получается.

Может кто подскажет как тут быть?
 
Вы бы хоть дали ссылку на статью, где взяли код:
http://excelvba.ru/code/Sippoint

Надо объявить все константы и API-функции, - тогда все заработает
В прикрепленном к статье файле все это сделано.

PS: Сами не сможете разобраться, - обращайтесь, сделаю (не бесплатно)
 
Там где нашли, выше не было нечто похожее на
Код
Private Declare Function FindWindow _ 
Lib "user32.dll" Alias "FindWindowA" ( _ 
ByVal lpClassName As String, _ 
ByVal lpWindowName As String) As Long 

Ну и с FindWindowEx тоже вероятно нужно разобраться.
 
Вставьте это над макросом:

Скрытый текст
Изменено: EducatedFool - 07.09.2013 14:09:28
 
EducatedFool, большое спасибо. Но у меня все равно пока не получается. Буду пробовать...
 
Все работает, разобрался. Большое, огромное спасибо!!!
Страницы: 1
Читают тему
Наверх