marcar telefono

15/02/2005 - 05:29 por Pablo el apurado | Informe spam
tengo un registro de numeros telefonicos a los que debo llamar desde excel,
¿como logro que una macro aperture el modem, marque el numero seleccionado
del registro existente, que cuente el tiempo que se lleva la llamada y al
finalizar la llamada imprima el tiempo total? lo he logrado insertando un
objeto dialer y copiando el numero pero no lo hace automaticamente ni me
puede contar el tiempo de la llamada, les agradezco la ayuda, se que se puede
con alguna instruccion desde los modulos pero no se como hacerlo.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/02/2005 - 10:02 | Informe spam
hola, Pablo !

... numeros telefonicos a los que debo llamar desde excel
... lo he logrado insertando un objeto dialer
... pero no lo hace automaticamente ni me puede contar el tiempo de la llamada [...]



para 'automatizar' el lanzamiento del dialer encontraras varios ejemplos en: http://tinyurl.com/6phdw
para 'registrar' el tiempo de duracion de la llamada...
-> ¿comentas que y como lo haces actualmente?
y... ¿donde ocurre la falla? [o donde 'se atora']

saludos,
hector.
Respuesta Responder a este mensaje
#2 pablo el apurado
15/02/2005 - 20:23 | Informe spam
gracias Hector mira el siguiente modulo me hace lo mismo que yo estoy
haciendo con objetos, abrir el diale.exe y pegar el numero, lo que me falta
es que cuente el tiempo que dura la llamada y me la coloque en una celda
todavia no lo logro.

Sub CellToDialer()
'By John Walkenbach
' Transfers active cell contents to Dialer
' And then dials the phone

' Get the phone number
CellContents = ActiveCell.Value


If CellContents = "" Then
MsgBox "Select a cell that contains a phone number."
Exit Sub
End If

' Activate (or start) Dialer
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 "Can't start " & AppFile
End If

' Transfer cell contents to Dialer
Application.SendKeys "%n" & CellContents, True

' Click Dial button
Application.SendKeys "%d", True

End Sub


"Héctor Miguel" escribió:

hola, Pablo !

> ... numeros telefonicos a los que debo llamar desde excel
> ... lo he logrado insertando un objeto dialer
> ... pero no lo hace automaticamente ni me puede contar el tiempo de la llamada [...]

para 'automatizar' el lanzamiento del dialer encontraras varios ejemplos en: http://tinyurl.com/6phdw
para 'registrar' el tiempo de duracion de la llamada...
-> ¿comentas que y como lo haces actualmente?
y... ¿donde ocurre la falla? [o donde 'se atora']

saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
16/02/2005 - 01:25 | Informe spam
hola, pablo !

... el siguiente modulo me hace lo mismo que yo... con objetos, abrir el dialer.exe y pegar el numero
... me falta... que cuente el tiempo que dura la llamada y me la coloque en una celda [...]



hay una 'ligera' diferencia entre el codigo que te voy a 'proponer' y el que usas [de John Walkenbach]...
-> el de John 'activa' el dialer [si ya esta en ejecucion] o... lo ejecuta por una instruccion 'Shell'
-> la propuesta 'necesita' [por cada llamada] =>'ejecutar'... [bla, bla, bla]... y CERRAR<= el dialer
a traves de una llamadas a las API's la macro 'se espera' hasta que se cierra la ventana del dialer

[para utilizar hora 'de arranque' y hora 'de cierre' como 'tiempo de...' la llamada]
-> corrige/modifica/adapta las celdas donde se pone la hora segun sea requerido, ok?

si cualquier duda... ¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==' las llamadas a las API's
Private Declare Function AbrirProceso Lib "Kernel32" Alias "OpenProcess" ( _
ByVal Par1 As Long, ByVal Par2 As Long, ByVal Par3 As Long) As Long
Private Declare Function ConsultarProceso Lib "Kernel32" Alias "GetExitCodeProcess" ( _
ByVal Par1 As Long, Par2 As Long) As Long
' la macro [o las lineas para agregar al proceso que ya estas usando] <= OJO
Sub MarcacionTelefonica()
Dim Proceso As Long, Estado As Long, Activo As Long
Range("a1") = Time
Proceso = AbrirProceso(&H400, 0, Shell("Dialer.exe", vbNormalFocus))
Do
Estado = ConsultarProceso(Proceso, Activo)
DoEvents
Loop While Activo = &H103
Range("b1") = Time
End Sub
Respuesta Responder a este mensaje
#4 pablo el apurado
16/02/2005 - 19:23 | Informe spam
gracias hector estoy intentando integrarlo al codigo anterior todavia no
logro que trabaje pues no me reconoce las apis como comando pero estoy en
ello gracias
Respuesta Responder a este mensaje
#5 pablo el apurado
17/02/2005 - 01:16 | Informe spam
gracias Hector por la manota, es medio imperfecto y le faltan algunas
correcciones pero este codigo trabaja super bien para el que lo necesite
toma un numero, lo pega al dialer, cuenta la duracion del dialer "abierto" y
al cerrar entrega tiempo final y la fecha del evento.


Private Declare Function AbrirProceso Lib "Kernel32" Alias "OpenProcess" ( _
ByVal Par1 As Long, ByVal Par2 As Long, ByVal Par3 As Long) As Long
Private Declare Function ConsultarProceso Lib "Kernel32" Alias
"GetExitCodeProcess" ( _
ByVal Par1 As Long, Par2 As Long) As Long
Sub contaryllamar()
' Transfers active cell contents to Dialer
' And then dials the phone
' las llamadas a las API's

CellContents = ActiveCell.Value
If CellContents = "" Then
MsgBox "Select a cell that contains a phone number."
Exit Sub
End If

Dim Proceso As Long, Estado As Long, Activo As Long
ActiveCell.Offset(0, 1) = Time
Proceso = AbrirProceso(&H400, 0, Shell("Dialer.exe", vbNormalFocus))
' Transfer cell contents to Dialer
Application.SendKeys "%n" & CellContents, True

' Click Dial button
Application.SendKeys "%d", True
Do
Estado = ConsultarProceso(Proceso, Activo)
DoEvents
Loop While Activo = &H103
ActiveCell.Offset(0, 2) = Time
ActiveCell.Offset(0, 3) = Date
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida