Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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
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