Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola a todos, tengo algún informe realizado en QV y necesito que cuando se acabe la recarga nocturna de los datos se envía automaticamente un mail a las direcciones especificadas. (no utilizo Qv Server). Alguien sabe como hacerlo?
Buenos dias
Te recomiendo la lectura del Manual de Referencia, desde su pag 207 a la 221 (ALERTAS)
Desde la version 8.5 "creo", existen las ALERTAS, incluso con un ASISTENTE que te ayudara a crear una ALERTA y enviar un correo con el asunto que quieras y a las personas que quieras
Espero que te ayude
Saludos
Muchas gracias Luis,
ya había revisado estas alertas, pero lo que yo necesito no es enviar un mail predeterminado sino enviar el gráfico que genera el informe. No se si me explico?
Muchas gracias de nuevo
Hola Bucky,
nose si te puede servir, pero yo he usado en alguna ocasión la macro que adjunto para enviar mails, y funciona. Hay poco que configurar, y puede que haya algo en catalán, pero si necesitas más ayuda me lo comentas.
'====================================================
sub enviaMailOld
ruta_base = "C:\Informes\PowerPoints\"
envio_funcio "mail@mail.com","Frase sujeto","Cuerpo Mensaje",ruta_base & "Informe.ppt"
end sub
Function envio_funcio (desti,remit,subj,cosmis,adjun)
'Definir el puerto de envío
Const cdoSendUsingPort = 2
Const cdoSMTPAuthenticate = 1
'Enviar un mail utilizando CDO (Collaboration Data Object, componente de Win 2000)
Set objCDOMail = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")
objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
'Introducir el smtp correspondiente
objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mail.com"
objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoSMTPAuthenticate
objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "b"
objConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "g"
objConf.Fields.Update
Set objCDOMail.configuration = objConf
'Usuario que recibirá el correo:
objCDOMail.To = desti
'Usuario que envía el correo:
objCDOMail.From = remit
'Texto del asunto del mensaje:
objCDOMail.Subject = subj
'Texto del cuerpo del mensaje:
strHTML = cosmis
objCDOMail.HTMLBody = strHTML
'Si fuese necesario podríamos adjuntar un archivo:
objCDOMail.AddAttachment adjun
objCDOMail.Send
Set objCDOMail = Nothing
Set objConf = Nothing
end function
Espero que te sirva!!
Pol
Primero, muchísimas gracias por contestar
estoy comprobando y por ahora me está fallando el "Set objCDOMail = CreateObject("CDO.Message", veo en foros varias opciones pero por ahora no me funciona. También he añadido aquí el remitente:
"mail@mail.com", "remitente@remitente.com","Frase sujeto","Cuerpo Mensaje",ruta_base & "Informe.ppt" ya que me fallaba en ese punto.
Cuando lo consiga (si lo consigo ) seguramente me valdrá para otra ocasión, pero en este caso lo que necesito es enviar solamente un gráfico del informe, no el informe. Es decir un objeto en el que se muestran unos datos, y exportar este como un xls o una imagen para enviarlo a usuarios que no tengan Qlikview instalado.
Muchas gracias de nuevo!
Si lo que necesitas es generar un excel con una imagen, o tabla, o cualquier gráfico, puedes usar este código:
'PARTE COMUN EN TODOS LOS INFORMES EXCEL
sub A_InformeExcel_ParteComun
dim oDQVInformeExcel
dim oDQVUtils
dim bError
dim auxiliar
dim var
dim linea
dim columna
dim avanza
bError = false
Set oDQVInformeExcel = CreateObject("QlikTech.QlikView")
Set oDQVUtils = CreateObject("QlikTech.QlikView")
Set xls = CreateObject("EXCEL.APPLICATION")
ruta = ActiveDocument.GetPathName
pos = InstrRev(ruta,"\")
ruta_bona = left(ruta,pos)
''MENSAJE ASINCRONO
'if (not oDllUtils.Inicializar(ActiveDocument)) then bError=true
'oDllUtils.MostrarMsgAsincronico "Espere por favor...", "Creando Informe Excel"
''
TemplateFile = ruta_bona & "Informes\Plantilla\INFO_MENSUAL.xls"
If Not xls Is Nothing Then
Set objWorkbook = xls.Workbooks.open (TemplateFile)
If objWorkbook Is Nothing Then
msgbox "No se ha podido acceder al fichero < "& TemplateFile & " >. Por favor mire si la ruta existe."
exit sub
else
'msgbox "Abierto el informe de Excel"
xls.Visible = False
end if
else
msgbox "No se ha podido acceder a Microsoft EXCEL"
exit sub
end if
'xls.Visible = True
'=================================================================================================
'CUERPO DE LA MACRO
'=============================================================================================
ActiveDocument.GetSheetObject("CH345").CopyBitmapToClipboard
xls.Cells(traslado+1,6).Select
xls.ActiveSheet.Paste
xls.Selection.ShapeRange.ScaleWidth 1, 0, 0
xls.Selection.ShapeRange.ScaleHeight 1, 0, 0
'' Cerramos y guardamos
'OPCION 2 --> Salvar en un directorio normal
salva = ruta_bona & "Informes\INFO"&right(year(now()),2) &"_"&month(now)&"_"&day(now())&".xls"
xls.ActiveWorkbook.SaveAs salva
'fem visible l'excel
xls.Visible = True
'Ocultar Mensage asíncrono
'oDllUtils.OcultarMsgActual
if (bError) then Msgbox "Ha sucedido un error durante la generación del informe", vbCritical or vbOKOnly, "Error"
end sub
En la parte cuerpo de la macro puedes modificar el tamaño y la posición del gráfico.
Saludos!
Pol
EDITO: Lo siento, ha quedado un poco chungo el código, pero funciona... jeje
Excelente!!!!
Muchísimas gracias!! al final el error que me daba era una tontería que no tenía nada que ver con el código, simplemente era cambiar la Seguridad de Módulo Requerida a "Acceso al Sistema" (en la ventana de Editor de módulo, abajo a la izquierda).
Con tú código perfecto, al final he utilizado los dos y primero cojo los datos de la tabla:
ActiveDocument.GetSheetObject("Grafico").CopyTableToClipboard True, los guardo en un xls y luego los envío por correo a los usuarios.
Lo dicho. Muchas gracias!
De nada! Me alegro que te haya servido... que al final uno se siente como un chupoptero siempre preguntando pero nunca respondiendo.. jeje
Hasta la próxima!
Pol