Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
J'utilise pour un client la version NPrinting Novembre 2018 et pour importer mes recipients, il faut le faire via un fichier Excel (3 onglets).
Une partie des recipients sont créés via une source de donnée donc j'ai dû créer ce fichier recipients via une application QVW et un module VBscript dans ce QVW (lancer en auto via un déclencheur après le reload du QVW) :
Sub ExportFichierExcel() Path = Left(ActiveDocument.GetProperties.MyWorkingDirectory,InstrRev(ActiveDocument.GetProperties.MyWorkingDirectory,"\")) & "3 - IMPORT EXCEL\" FileName = "ImportExcelNP" & ".xlsx" Set XLApp = CreateObject("Excel.Application") XLApp.Visible = False set XLDoc = XLApp.Workbooks.Add XLApp.DisplayAlerts = True XLApp.EnableEvents = True 'Partie Filtres ActiveDocument.GetSheetObject("FILTRE").CopyTableToClipboard true XLDoc.Sheets(1).Paste() XLDoc.Sheets(1).Columns("A:H").EntireColumn.AutoFit XLDoc.Sheets(1).Range("A1").value = "Name" XLDoc.Sheets(1).Range("B1").value = "Description" XLDoc.Sheets(1).Range("C1").value = "App" XLDoc.Sheets(1).Range("D1").value = "Enabled" XLDoc.Sheets(1).Range("E1").value = "Connection" XLDoc.Sheets(1).Range("F1").value = "Values" XLDoc.Sheets(1).Range("G1").value = "Numeric Values" XLDoc.Sheets(1).Range("H1").value = "Formulas" XLDoc.Sheets(1).Name = "Filters" 'Partie Utilisateurs ActiveDocument.GetSheetObject("UTILISATEUR").CopyTableToClipboard true XLDoc.Sheets(2).Paste() XLDoc.Sheets(2).Columns("A:P").EntireColumn.AutoFit XLDoc.Sheets(2).Range("A1").value = "E-mail" XLDoc.Sheets(2).Range("B1").value = "Username" XLDoc.Sheets(2).Range("C1").value = "Password" XLDoc.Sheets(2).Range("D1").value = "Domain Account" XLDoc.Sheets(2).Range("E1").value = "Enabled" XLDoc.Sheets(2).Range("F1").value = "Time Zone" XLDoc.Sheets(2).Range("G1").value = "Locale" XLDoc.Sheets(2).Range("H1").value = "Nickname" XLDoc.Sheets(2).Range("I1").value = "Title" XLDoc.Sheets(2).Range("J1").value = "Company" XLDoc.Sheets(2).Range("K1").value = "Job Title" XLDoc.Sheets(2).Range("L1").value = "Department" XLDoc.Sheets(2).Range("M1").value = "Office" XLDoc.Sheets(2).Range("N1").value = "Filters" XLDoc.Sheets(2).Range("O1").value = "Groups" XLDoc.Sheets(2).Range("P1").value = "Roles" XLDoc.Sheets(2).Name = "Utilisateurs" 'Partie Groupes ActiveDocument.GetSheetObject("GROUPE").CopyTableToClipboard true XLDoc.Sheets(3).Paste() XLDoc.Sheets(3).Columns("A:B").EntireColumn.AutoFit XLDoc.Sheets(3).Range("A1").value = "Name" XLDoc.Sheets(3).Range("B1").value = "Description" XLDoc.Sheets(3).Name = "Groups" 'Supprimer les messages d'alerte (pour sauvegarder et remplacer le fichier Excel) XLApp.DisplayAlerts = False 'Sauvegarde et fermeture du fichier XLApp.EnableEvents = False XLDoc.SaveAs Path & FileName XLDoc.Close True XLApp.EnableEvents = True 'Remettre les messages d'alerte XLApp.DisplayAlerts = True 'MsgBox("Import OK") 'Supprimer la tâche de l'application Excel XLApp.Quit Set XLDoc = Nothing Set XLApp = Nothing End Sub
Après des recherches sur internet, j'ai compris que le module VBscript ne se lancerais pas via la QMC, du coup, j'ai créé un .bat pour lancer mon QVW qui contient le module VBscript :
ECHO OFF "\\NomServeur\C$\Program Files\QlikView\qv.exe" /NoSecurity /r "\\NomServeur\Data\Nprinting\DEV\2 - APPLICATIONS\1 - NPRINTING_IMPORT_EXCEL.qvw" exit
Pour lancer le .bat, j'ai créé un autre QVW pour le lancer avec un EXECUTE :
Execute cmd.exe /C "\\irntsv-dvqlikv2\Data\Nprinting\DEV\0 - CommandeExterne\Run_QVW.bat";
J'ai modifié les sécurités :
- Script ==> cocher "Permettre l'exécution des programmes externes" sur les 2 QVW
- Préférences utilisateurs ==> cocher "Script" et "Module" dans l'onglet sécurité pour mon compte et le compte de service (utilisé par la QMC)
- Modifiction de la ligne "AllowExecuteCommand" égal à 1 dans le fichier C:\Windows\System32\config\systemprofile\AppData\Roaming\QlikTech\QlikViewBatch\Settings.ini
Au final, quand je lance mon QVW (celui qui lance mon .bat) sur le client lourd, ça marche et ça me créer mon fichier Excel quand j'utlise mon compte et le compte de service.
Par contre, cela ne marche pas quand je lance depuis la QMC, cela tourne en boucle sans se mettre en échec (sauf si je laisse la tâche jusqu'au TimeOut). Quand je regarde les processus ouverts, le .bat à l'air de se lancer et d'ouvrir le QVW (celui avec le module VBscript) car pour stopper la tâche QMC, je dois killer le processus cmd.exe ce qui arrête la tâche et la met en succès puis je dois killer le QV.exe car sinon le QVW reste ouvert et je n'arrive plus à le sauvegarder si je l'ouvre sur le client lourd.
Est-ce que quelqu'un aurait une idée sur mon problème ? Ou une autre solution ?
Merci d'avance pour votre aide.