Skip to main content
Announcements
Save $600 on Qlik Connect registration! Sign up by Dec. 6 to get an extra $100 off with code CYBERSAVE: REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Problema con tarea automatizada

Buenas, tengo un problema a la hora de ejecutar un archivo.bat mediante el administrador de tareas de windows. Esta tarea hace lo siguiente:

me ejecuta el qlikview con un determinado fichero y  me ejecuta varias macros (crear un pdf, enviar correo, cerrar)

Si yo ejecuto esa tarea.bat haciendo doble clic sobre ella funciona perfectamente. en cambio si la programo via administrador de tareas, ahí se me queda en ejecución y no acaba.

Si yo quito la parte de crear el pdf y la programo via administrador de tareas si funciona bien. Entonces deduzco que el fallo está en la parte de crear el pdf. Yo saque el código  de el siguiente enlace:

      Qlik Tips: Printing Reports to PDF using PDFCreator

He intentado aumentar el tiempo de WScript.Sleep(20) a más segundos, por si fuera un problema que no le da tiempo de generarse el fichero, pero no consigo que funcione.

El código no puede estar mal, porque si ejecuto la tarea manualmente, o abro el archivo.qvw directamente para que se ejecuten las macros, pues si se me genera el fichero y recibo el correspondiente correo

¿Alguna sugerencia?

Un saludo

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Buenas Gerardo, gracias por la respuesta. Yo ya lo tenia separado como indicas y asi no "funcionaba". Pero he descubierto creo el problema, ando haciendo comprobaciones, y es que el PDFCreator tiene que estar en ejecución cuando lanzo el programa. En caso de que no este en ejecución antes de que yo lanze la tarea automaticamente, no me funciona.

Un saludo

View solution in original post

2 Replies
jer_2011
Creator II
Creator II

Hola,

me paso algo similar al correr una macro en qlikview, es posible que todo tu código lo ejecutes en la misma cadena, yo tuve que separar los procesos y así me funciono, te paso el ejemplo y cualquier duda me indicas.

sub CrearReporte()   // este es el que debes mandar ejecutar

Dim ValorCampo
Dim Id_Report

ValorCampo = "Reporte_x" // nombre del reporte
Id_Report = "RP02" // id del objeto que se manda a pdf, en este caso un informe qlikview

Print_PDF ValorCampo, "QVreport_", Id_Report   // manda a ejecutar la macro del pdf

// puedes agregar mas SUB's , se ejecutaran uno a uno, ejemplo: sub EnvioMail, esto me ayudo a no parar el proceso



end Sub


Sub Print_PDF(FieldValue, ReportName, ReportID)  // proceso PDF


' Designed for early bind, set reference to PDFCreator
Dim pdfjob
Dim sPDFName
Dim sPDFPath


'/// Change the output file name here! ///
sPDFName = ReportName & FieldValue
sPDFPath = "C:\reporte_qv" // carpeta donde se guarda el pdf


Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")


With pdfjob


If .cStart("/NoProcessingAtStartup") = False Then
If .cStart("/NoProcessingAtStartup", True) = False Then

Exit Sub
End if
.cVisible = True
End If


.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0 ' 0 = PDF
.cClearCache


End With



' Print the QlikView Report
ActiveDocument.PrintReport ReportID, "PDFCreator"



'Wait until the print job has entered the print queue
Do Until pdfjob.cCountOfPrintjobs = 1
ActiveDocument.GetApplication.Sleep 20
' in VBScript use WScript.Sleep(20)
Loop
pdfjob.cPrinterStop = False


'Wait until PDF creator is finished then release the objects
Do Until pdfjob.cCountOfPrintjobs = 0
ActiveDocument.GetApplication.Sleep 20
' in VBScript use WScript.Sleep(20)
Loop
pdfjob.cClose
Set pdfjob = Nothing


End Sub

Anonymous
Not applicable
Author

Buenas Gerardo, gracias por la respuesta. Yo ya lo tenia separado como indicas y asi no "funcionaba". Pero he descubierto creo el problema, ando haciendo comprobaciones, y es que el PDFCreator tiene que estar en ejecución cuando lanzo el programa. En caso de que no este en ejecución antes de que yo lanze la tarea automaticamente, no me funciona.

Un saludo