Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2009, 17:28   #1
Инн@
Новичок
Джуниор
 
Регистрация: 27.08.2009
Сообщений: 1
Вопрос Макрос для набора номера из Excel

Здравствуйте! Подскажите пожалуйста можно ли в Excel создать макрос, чтобы при нажатии на ячейку, в которой записан определенный номер, этот номер телефона набирался через модем, или факс, используя программу Venta fax. Заранее спасибо за ответ.
Инн@ вне форума Ответить с цитированием
Старый 27.08.2009, 18:11   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Да, скорее всего, можно.
Даже без Venta fax
http://www.programmersforum.ru/showthread.php?t=50325

В контекстном меню Excel появляется новый пункт:



Программой Venta fax не пользовался, поэтому точно сказать не могу.
Сейчас попробую скачать, и посмотреть.

(добавлено)
Посмотрел. Возможностей у программы много, так что, наверняка, есть способ управлять ей из макроса.
Увы, помочь с макросом не могу - у меня нет модема, с которым могла бы работать Venta fax, поэтому протестировать код не получится...

---------------- добавлено позже — вдруг кому пригодится ---------------------

Недавно нашел программу, которая умеет подключаться к мобильному телефону и набирать номер.

Никакой макрос в этом случае писать не придется - программа сама установит надстройку, так что звонить Вы сможете кликнув правой кнопкой мыши по выделенной ячейке и выбрав в контекстном меню "Позвонить", только эту функцию после установки необходимо активировать, как описано вот здесь:
http://telefum.com/dokument/integration/office/excel/

Вот небольшая видеопрезентация того, как это работает: http://telefum.com/excel_call/

Если же вы хотите звонить (или отправлять СМС) при помощи макроса - то сделать это совсем несложно,
достаточно вызвать программу Zvonilka.exe с параметрами телефонного номера:
Код:
C:/Program Files/Zvonilka/Zvonilka.exe -Номер_телефона

Последний раз редактировалось EducatedFool; 30.01.2013 в 05:20.
EducatedFool вне форума Ответить с цитированием
Старый 28.08.2009, 05:09   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Великий Дж. Уокенбах приводит пример набора телефонного номера через модем, используя внешнюю программу дозвона (например, Dialer.exe) и метод SendKeys:
Код:
Sub CallTel()
    NTel = [A1] ' Ячейка, содержащая номер телефона
    Appname = "Dialer": AppFile = "Dialer.exe"
    On Error Resume Next: AppActivate (Appname)
    If Err <> 0 Then
        Err = 0: TaskID = Shell(AppFile, 1)
        If Err <> 0 Then MsgBox "Невозможно запустить " & AppFile
    End If
    With Application
        .SendKeys "%n" & NTel, True: .SendKeys "%d": .SendKeys "{TAB}~", True
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 07.01.2010, 10:20   #4
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
http://www.programmersforum.ru/showthread.php?t=50325

В контекстном меню Excel появляется новый пункт:

Как появляется контекстный меню Excel новый пункт?
Что надо делать для этого?
Aqil_f вне форума Ответить с цитированием
Старый 07.01.2010, 10:32   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Для начала проверь такой вариант:

Код:
Private Declare Function tapiRequestMakeCall Lib "TAPI32.DLL" (ByVal Dest As String, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Long

Private Sub PhoneCall(sNumber As String, sName As String)
    Dim lRetVal As Long
    lRetVal = tapiRequestMakeCall(Trim$(sNumber), Application.Name, Trim$(sName), "")
    If lRetVal <> 0 Then
        MsgBox "error"
        'Couldn't make the call.
        'Take appropriate action
    End If
End Sub

Sub test()
    PhoneCall "89122222222", "EducatedFool"
End Sub


Нажми зеленую кнопку. Если получится позвонить - тогда всё сделаем быстро.


Цитата:
Как появляется контекстный меню Excel новый пункт?
Подключаем надстройку из этого поста, и смотрим исходный код:

Код:
'------------------------------------------------------------------------------
' Module "ClassApp"  in  VBAProject
'------------------------------------------------------------------------------
' (c) 27.05.2009   EducatedFool       http://ExcelVBA.ru/
'------------------------------------------------------------------------------

Public WithEvents AppEv As Application

Private Sub AppEv_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    CommandBars("cell").Reset:
    'On Error Resume Next
    N = GetPhoneNumber(Target):  If N = "" Then Exit Sub
    CommandBars("cell").Controls(1).BeginGroup = True
    Add_Control_New CommandBars("cell"), 1, 568, "TryCall", "Позвонить на номер  " & UserFormat(N), True
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 07.01.2010, 10:32   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Продолжение кода:

Код:
'------------------------------------------------------------------------------
' Module "Module1"  in  VBAProject
'------------------------------------------------------------------------------
' (c) 27.05.2009   EducatedFool       http://ExcelVBA.ru/
'------------------------------------------------------------------------------

Public App As New ClassApp, N As String
Public Const CallString = """C:\Program Files\Windows Mobile Developer Power Toys\RAPI_Start\rapistart.exe"" cprog.exe -n -url tel:@@@"

Function GetPhoneNumber(ByVal txt As String) As String
    For i = 1 To Len(txt)
        letter = Mid(txt, i, 1): If IsNumeric(letter) Then GetPhoneNumber = GetPhoneNumber & letter
    Next i
    If GetPhoneNumber Like "80#########" Then Exit Function
    'Debug.Print "Error:  ", GetPhoneNumber:
    GetPhoneNumber = ""
End Function

Function UserFormat(ByVal txt As String) As String
    UserFormat = Format(txt, "#-###-###-##-##")
End Function

Sub TryCall()
    ' txt = """C:\Program Files\Microsoft Office\OFFICE11\excel.exe"" -N"
    ExecCommand = Replace(CallString, "@@@", N)
    On Error Resume Next: Err.Clear
    CreateObject("WScript.Shell").Run ExecCommand
    If Err.Number = 0 Then Exit Sub
    MsgBox "Команда  " & ExecCommand & vbNewLine & "не выполнена!", vbExclamation, "Ошибка"
End Sub

Function Add_Control_New(ByRef Comm_Bar, ByVal B_Type As Integer, ByVal B_Face As Integer, _
                         ByVal On_Action As String, ByVal B_Caption As String, Optional ByVal Begin_Group As Boolean = False, Optional Tag As String = "") As CommandBarControl
    ' добавляет контролы в меню Comm_Bar ' type=1 - это кнопка, type=4 - это комбобокс, 10 - popup
    On Error Resume Next
    Set Add_Control = Comm_Bar.Controls.Add(Type:=B_Type, Before:=1, Temporary:=True)
    With Add_Control
        If B_Face > 0 Then .FaceId = B_Face:
        .Tag = Tag: .onaction = On_Action: .Caption = B_Caption: If Begin_Group Then .BeginGroup = True
    End With
End Function
EducatedFool вне форума Ответить с цитированием
Старый 07.01.2010, 10:44   #7
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Нажимю на зеленую кнопку.

Позвонить не получается 'по неизвестный причине'
Aqil_f вне форума Ответить с цитированием
Старый 07.01.2010, 10:50   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Позвонить не получается 'по неизвестный причине'
А телефон к компу подключен, и настроен?
EducatedFool вне форума Ответить с цитированием
Старый 07.01.2010, 11:01   #9
Aqil_f
Форумчанин
 
Регистрация: 12.05.2009
Сообщений: 273
По умолчанию

Телефон к компу подключен.

А что нужно настроить и как ?

COPY con com5
ATDномертелефона,
Это работает, значить настроен?
Aqil_f вне форума Ответить с цитированием
Старый 26.01.2010, 19:00   #10
sasha_prof
Форумчанин
 
Регистрация: 06.01.2010
Сообщений: 292
По умолчанию

Скажите пожалуйста, у меня телефон CISCO IP PHONE 7911.

Возможно ли на него посылать запрос на совершения звонка? И что для этого нужно?
sasha_prof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо макрос для Excel для перестановки букв dionisprf Microsoft Office Excel 2 10.06.2009 06:04
Интересный макрос для создания писем в Outlook через Excel Neo007 Microsoft Office Excel 17 19.04.2009 20:44
помогите, пожалуйсто, написать макрос для excel bacalavr Microsoft Office Excel 2 04.04.2008 11:39
Макрос VBA EXCEl - простановка в ячейку номера страницы Обыватель Microsoft Office Excel 1 14.02.2008 12:49
Макрос в Excel для обработки группы файлов ad_sum Microsoft Office Excel 1 29.12.2007 16:56