Skip to main content
Announcements
Defect acknowledgement with Nprinting Engine May 2022 SR2, please READ HERE
cancel
Showing results for 
Search instead for 
Did you mean: 
felipessj
Contributor III
Contributor III

Macro QlikView que usa un ciclo para enviar correos no funciona en servidor NPrinting - QlikView Macro Using Cycle to Send Mail Does Not Work on NPrinting Server

Estimados,

Tengo un problema al momento de ejecutar una trabajo en el servidor de NPrinting

Versión NPrinting: 15.4.0.2 (Feature Track)

Versión QlikView: 11.0.11440.0

Al modelo QlikView lo llamaré Modelo A

El trabajo consiste en distintas tareas:

1.- Recargar el modelo A.

2.- Crear reportes de manera cíclica usando un dato definido (nombre persona) en el modelo y almacenarlos en un directorio especifico (generalmente crea 6 reportes).

3.- Ejecutar una macro que se encuentra en el modelo A.

    La macro consiste en realizar un ciclo mediante comando For en donde busca los reportes creados y los envía a los correos      correspondientes a las personas.

A nivel local, el trabajo cumple con todas las tareas, genera los reportes y envía los correos.

El problema es en el servidor de NPrinting.

Al momento de ejecutar el trabajo, la tarea de recarga (1) y generación de reportes (2) funciona correctamente, pero al ejecutar la macro (3), envía sólo 1 correo y no hace nada mas.

Como detalle al revisar el administrador de tareas encuentro que el proceso QlikView se queda pegado ocupando 929 Mb Sin título.jpg

La macro que ocupo para enviar los correos es la siguiente

sub Ciclo


set dimPersona = ActiveDocument.fields("Persona_ssf").GetPossibleValues

for i=0 to dimPersona.Count - 1

On Error Resume Next

Dim FieldValue

FieldValue = dimPersona.Item(i).text

ActiveDocument.Fields("Persona_ssf").Select FieldValue

Set var = ActiveDocument.Variables("vCorreo")

Set nombre = ActiveDocument.Variables("vNombrePersona")

'*******************************************************************************************************************

'Enviar correo por Persona

'Verificar si existe el reporte

Dim Archivo

Archivo = "\\Ruta\Informe por Persona " & dimPersona.Item(i).Text & "_" & Date() & ".xlsx"

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(Archivo) Then

'Si existe el reporte

Set objMsg = CreateObject("CDO.Message")

Set msgConf = CreateObject("CDO.Configuration")

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.security.cl" 'smtp do email

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

msgConf.Fields.Update

objMsg.To = var.GetContent.String

objMsg.From = "Correo@Correo.com"

objMsg.Subject = "Reporte por Persona"

objMsg.HTMLBody = "Hola " & nombre.GetContent.String & ",<br/> Adjunto al correo reporte por Persona"

objMsg.AddAttachment Archivo

objMsg.Sender = "Correo"

Set objMsg.Configuration = msgConf

objMsg.Send

Set objMsg = nothing

Set msgConf = nothing

   

Else

'No existe el reporte

   

End If

Next

ActiveDocument.ClearAll


End Sub

Agradeciendo de antemano toda su ayuda me despido

---------------------------------------------------------------------------------------------------------------------------------------------------------------

Dear,

I have a problem when running a job on the server of NPrinting

NPrinting Version: 15.4.0.2 (Feature Track)

QlikView Version: 11.0.11440.0

The QlikView model will call it Model A

The work consists of different tasks:

1.- Recharge the model A.

2.- Create reports in a cyclical way using a defined data (person name) in the model and store them in a specific directory (usually creates 6 reports).

3.- Execute a macro that is in model A.

    The macro consists of cycling through the For command, where it looks for the created reports and sends them to the emails corresponding to the people.

At the local level, the work fulfills all the tasks, generates the reports and sends the mails.

The problem is in the server of NPrinting.

When executing the job, the task of reloading (1) and report generation (2) works correctly, but when executing macro (3), it sends only 1 mail and does nothing else.

As a detail when reviewing the task manager I find that the QlikView process is stuck occupying 929 Mb

Sin título.jpg

The macro I used to send the emails is the following

sub Ciclo


set dimPersona = ActiveDocument.fields("Persona_ssf").GetPossibleValues

for i=0 to dimPersona.Count - 1

On Error Resume Next

Dim FieldValue

FieldValue = dimPersona.Item(i).text

ActiveDocument.Fields("Persona_ssf").Select FieldValue

Set var = ActiveDocument.Variables("vCorreo")

Set nombre = ActiveDocument.Variables("vNombrePersona")

'*******************************************************************************************************************

'Enviar correo por Persona

'Verificar si existe el reporte

Dim Archivo

Archivo = "\\Ruta\Informe por Persona " & dimPersona.Item(i).Text & "_" & Date() & ".xlsx"

Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(Archivo) Then

'Si existe el reporte

Set objMsg = CreateObject("CDO.Message")

Set msgConf = CreateObject("CDO.Configuration")

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.security.cl" 'smtp do email

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0

msgConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False

msgConf.Fields.Update

objMsg.To = var.GetContent.String

objMsg.From = "Correo@Correo.com"

objMsg.Subject = "Reporte por Persona"

objMsg.HTMLBody = "Hola " & nombre.GetContent.String & ",<br/> Adjunto al correo reporte por Persona"

objMsg.AddAttachment Archivo

objMsg.Sender = "Correo"

Set objMsg.Configuration = msgConf

objMsg.Send

Set objMsg = nothing

Set msgConf = nothing

 

Else

'No existe el reporte

 

End If

Next

ActiveDocument.ClearAll


End Sub


Thanking in advance all your help I say goodbye

1 Solution

Accepted Solutions
felipessj
Contributor III
Contributor III
Author

Estimados,

Al final si pude realizar el proceso de envío de correos con mi versión de NPrinting.

Todo era causa de desconocimiento.

Para hacerlo posible use la herramienta de Nprinting para obtener los destinatarios desde un objeto (tabla) QlikView, usando la opción QlikView Entity.

La tabla debe tener como mínimo esta información y debe ser establecida en el asistente de NPrinting de la siguiente manera:

Email -> correo de la persona

Filter1 -> dato de la persona que se usa en el ciclo de creación del informe.

Group1 -> Agrupación al cual pertenece esa persona (vendedores, ejecutivos, gerentes, etc.)

FullName -> Nombre de la persona

El importar destinatarios debe ser establecido como una tarea previa a la creación de los informes.

Para enlazar estos destinatarios con los informes, en la opción de tarea, pestaña destinatarios, se debe colocar el grupo al cual pertenecen los destinatarios,

NPrinting se encarga de enviar el correo a quien corresponda.

Recuerden activar la opción enviar correo electrónico.

Espero que les sirva este ultra resumido tutorial.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Dear,
In the end if I could perform the process of sending emails with my version of NPrinting.
Everything was cause of ignorance.
To make this possible, use the Nprinting tool to obtain the recipients from a QlikView object (table), using the QlikView Entity option.

The table must have at least this information and must be established in the NPrinting wizard as follows:
Email -> person's email
Filter1 -> data of the person used in the report creation cycle.
Group1 -> Group to which that person belongs (salespersons, executives, managers, etc.)
FullName -> Name of the person

Importing recipients must be established as a task prior to the creation of the reports.

To link these recipients with the reports, in the task option, recipients tab, the group to which the recipients belong must be placed,
NPrinting is responsible for sending the mail to whom it may concern.

Remember to activate the option to send email.

I hope you can use this ultra-short tutorial.

View solution in original post

5 Replies
Ruggero_Piccoli
Support
Support

Hi,

You are using a very old version, so I suggest you to update your installation.

Remember that Qlik NPrinting 16.* supports Office macros in the meaning that the VBA code is copied from the report template to the generated reports but NEVER executed for security reasons. Qlik NPrinting 17, at the moment, doesn't support Office macros.

Qlik NPrinting is designed to deliver reports via email without the needs to create Office macros. So please evalute to develop a full Qlik NPrinting solution to send your reports without using macros.

Qlik NPrinting 16 tutorials are available at the page QlikView Resource Library, then click on Qlik NPrinting on the left column.

Best Regards,

Ruggero

---------------------------------------------

When applicable please mark the appropriate replies as CORRECT. This will help community members and Qlik Employees know which discussions have already been addressed and have a possible known solution. Please mark threads as HELPFUL if the provided solution is helpful to the problem, but does not necessarily solve the indicated problem. You can mark multiple threads as HELPFUL if you feel additional info is useful to others.



Best Regards,
Ruggero
---------------------------------------------
When applicable please mark the appropriate replies as CORRECT. This will help community members and Qlik Employees know which discussions have already been addressed and have a possible known solution. Please mark threads with a LIKE if the provided solution is helpful to the problem, but does not necessarily solve the indicated problem. You can mark multiple threads with LIKEs if you feel additional info is useful to others.
Lech_Miszkiewicz
Partner Ambassador/MVP
Partner Ambassador/MVP

I suggets you make a Windows session 0 visible (google how to do it) and see where is your NPrinting process stopped in executing QlikVIew macro..

As an alternative yo umay want to login to QlikView server as a NPrinting Server accont and run manual NPrinting task as this user and see if it hass all required privilages to run macros.

cheers

Lech

cheers Lech, When applicable please mark the correct/appropriate replies as "solution" (you can mark up to 3 "solutions". Please LIKE threads if the provided solution is helpful to the problem.
felipessj
Contributor III
Contributor III
Author

Gracias por sus respuestas,

La version de NPrinting utilizada es la que tenemos como empresa, está fuera de mi manos actualizar la version.

En cuanto al uso de macros, es la opción que tenía en el momento.

La solución que encontré al problema es ejecutar un .exe que realice el envío de correos una vez finalizado el proceso de creación de reportes.

---------------------------------------------------------------------------------------------------------------------------------------------------------------


Thank you for your answers,

The version of NPrinting used is the one we have as a company, it is out of my hands to update the version.

As for the use of macros, it is the option that I had at the time.

The solution that I found to the problem is to execute an .exe that performs the sending of emails once the process of creating reports has finished.

felipessj
Contributor III
Contributor III
Author

Estimados,

Al final si pude realizar el proceso de envío de correos con mi versión de NPrinting.

Todo era causa de desconocimiento.

Para hacerlo posible use la herramienta de Nprinting para obtener los destinatarios desde un objeto (tabla) QlikView, usando la opción QlikView Entity.

La tabla debe tener como mínimo esta información y debe ser establecida en el asistente de NPrinting de la siguiente manera:

Email -> correo de la persona

Filter1 -> dato de la persona que se usa en el ciclo de creación del informe.

Group1 -> Agrupación al cual pertenece esa persona (vendedores, ejecutivos, gerentes, etc.)

FullName -> Nombre de la persona

El importar destinatarios debe ser establecido como una tarea previa a la creación de los informes.

Para enlazar estos destinatarios con los informes, en la opción de tarea, pestaña destinatarios, se debe colocar el grupo al cual pertenecen los destinatarios,

NPrinting se encarga de enviar el correo a quien corresponda.

Recuerden activar la opción enviar correo electrónico.

Espero que les sirva este ultra resumido tutorial.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

Dear,
In the end if I could perform the process of sending emails with my version of NPrinting.
Everything was cause of ignorance.
To make this possible, use the Nprinting tool to obtain the recipients from a QlikView object (table), using the QlikView Entity option.

The table must have at least this information and must be established in the NPrinting wizard as follows:
Email -> person's email
Filter1 -> data of the person used in the report creation cycle.
Group1 -> Group to which that person belongs (salespersons, executives, managers, etc.)
FullName -> Name of the person

Importing recipients must be established as a task prior to the creation of the reports.

To link these recipients with the reports, in the task option, recipients tab, the group to which the recipients belong must be placed,
NPrinting is responsible for sending the mail to whom it may concern.

Remember to activate the option to send email.

I hope you can use this ultra-short tutorial.

Anonymous
Not applicable

buen dia, espero estes bien.

Te comento que estoy iniciandome en este mundo y no tengo demasiadas herramientas para solucionar algunos problemas. 

En concreto estoy necesitando enviar via mail reportes desde una versión gratuita de qlikview y entiendo que con la macro que desarrollaste funcionaria, pero hay cosas que no entiendo del todo. como por ejemplo si Persona_ssf es un archivo con los datos de la gente a la que le quieres enviar el mail?? .

En conclusión, me podrías ayudar a entender un poco el código?

Desde ya muchas gracias