Ouverture d'un report business objects 5 via script windows/vba

Contenu du snippet

Ce script permet d'ouvrir un report Business Objects 5 par l'intermédiaire d'un fichier de paramètres. Pour lancer le script avec comme paramètre le fichier de variables utiliser l'option Exécuter.

C:\Temp\BOScript.vbs C:\Temp\BOVar.var

Pour mes test le report que j'ai créé utilise un SQL à la carte avec une variable en paramètres sur le centre. Pour éviter de mettre le login et le password dans un fichier de variables vous pouvez également passer ces variables en argument, mais dans ce cas il faudra faire quelques modification dans le script sur la récupération des variables.

C:\Temp\BOScript.vbs C:\Temp\BOVar.var LOGIN PASSWORD

- Modification Enregistrement du fichier au format PDf
- Ajout de la fermeture de BO après enregistrement

Source / Exemple :


' ---------------------------------------------------------------------------------------------------------------
' Windows Script Host Ouverture d'une édition Business Objects
' Date de création le 02/06/2003
'     Modification : 03/01/2004 - Enregistrement du fichier *.rep sous le format *.pdf
'                               - Ajout d'une nouvelle variable Nom de 'Fichier.pdf' dans le fichier de variable
'     Modification : 08/01/2004 - Suppression du fichier de variables à la fin du script
'     Modification : 16/04/2004 - Ajout de l'option ouverture de la fenêtre BO au maximum et non plus par défault 
'     Modification : 21/10/2004 - Gestion de l'utilisation du fichier BOMainxxx.key
' ----------------------------------------------------------------------------------------------------------------

     ' Lecture du fichier de paramètres 'BOVar.var'
     ' Exemple sur le contenu du fichier de paramètres
     ' LOGIN,PASSWORD,C:\Temp\BOReport.rep,C:\Temp\BOReport.pdf,APERCU,CENTRE,E%
     ' -------------------------------------------------------------------------
         Const ForReading = 1, ForWriting = 2, ForAppending = 8
         Dim Fichier,FichierParam
         Set Fichier = CreateObject("Scripting.FileSystemObject")
         Set FichierParam = Fichier.OpenTextFile(WScript.Arguments.Unnamed.Item(0), ForReading)
         FichierLigne = FichierParam.ReadLine
         FichierParam.Close

     ' Permet de définir le nombre de paramètres
     ' ------------------------------------------
        Counter = 0
        NbreParam = 0                                       ' Taille du tableau
        While Counter < Len(FichierLigne)          	    ' Teste la valeur du compteur.
            Counter = Counter + 1                           ' Incrémente le compteur.
            If (Mid(FichierLigne,Counter,1) = ",") Then
                    NbreParam = NbreParam + 1
            End If
        Wend                            		    ' Fin de la boucle While
                
     ' Permet l'ouverture d'un fichier BO avec des paramètres
     ' -------------------------------------------------------
        Set AppBO = Wscript.CreateObject("BusinessObjects.Application")

     ' Gestion du fichier BOMainxxx.key (Modif. 21/10/2004)
     ' ----------------------------------------------------
        Dim RepBoLocData, RepBo, FichRepBo, Fich
        Dim BoKey, BoKeyB, BoKeyC, BoKeySelect
        RepBoLocData = AppBO.GetInstallDirectory(boLocDataDirectory) & "\LocData\"	' Récupération du répertoire d'installation de BO
        Set RepBo = Fichier.GetFolder(RepBoLocData)
        Set FichRepBo = RepBo.Files

        For Each Fich in FichRepBo
           If (InStr(1, Fich.name, ".key") > 0) Then 					
	      BoKey = Mid(Fich.name, 1, Len(Fich.name) - 4)	 ' Calcul de la longueur du fichier moins l'extension du fichier (.key)
              Select Case LCase(BoKey)				 ' Récupération de la caste du fichier (.key), car BO est très pointilleux
                     Case "bomain_a"  	
                        BoKeySelect = BoKey			 ' La version la plus récente
                        Exit For
      		     Case "bomain_b"   	
      		        BoKeyB = BoKey
      		     Case "bomain_c"   		
      		        BoKeyC = BoKey
	      End Select
           End If
        Next

        If (Len(BoKeySelect)=0 and Len(BoKeyB)>0) Then 		 ' Permet de gérer les priorités sur les anciennes versions (.key)
           BoKeySelect = BoKeyB
        ElseIf (Len(BoKeySelect)=0 and Len(BoKeyC)>0) Then 
           BoKeySelect = BoKeyC
        End If

        ' Fin de la gestion du Bomain.Key
        ' -------------------------------
        
        If (Len(BoKeySelect)>0) Then
        	
           Dim Parametres
           Parametres = Split(FichierLigne,",",-1,1)                  ' Création du tableau - La valeur de l'indice commence à 0

           AppBO.LoginAs Parametres(0),Parametres(1),False    	      ' Le Parametres(0) correspond au Login User et le Parametre(1) correspond au Password
           AppBO.Documents.Open Parametres(2),True,True 	      ' Le Parametres(2) correspond au fichier report

           Set Variables = AppBO.Variables

           Counter = 5
           While Counter <= NbreParam                                                    ' Teste la valeur du compteur.
              Variables.Item(Parametres(Counter)).value = Parametres(Counter+1)  	 ' Counter représente le champ et Counter+1 représente la valeur
              Counter = Counter + 2                                                      ' Incrémente le compteur.
           Wend                                                                          ' Fin de la boucle While

           AppBO.ActiveDocument.Refresh

          If Parametres(4) = "IMPRESSION" Then    		    ' Le Parametres(4) correspond au type d'ouverture Aperçu ou Impression
             AppBO.ActiveDocument.PrintOut
             AppBO.ActiveDocument.Close  
             AppBO.Quit
          ElseIf Parametres(4) = "APERCU" Then
             AppBO.Visible = True                           	    ' Affiche l'application.
             AppBO.Window.State = 3				    ' 1=boNormal, 2=boMnimized, 3=boMaximized (Modif. 16/04/2004)
             AppBO.Interactive = True
          ElseIf Parametres(4) = "FICHIER" Then         	    ' Parametres(3) correspond au nom du fichier 
             AppBO.ActiveDocument.SaveAs Parametres(3) , 1	    ' Enregistre dans un fichier PDF (Modif. 03/01/2004)
             AppBO.ActiveDocument.Close  
             AppBO.Quit
          End If

        Else
           MsgBox "Il manque le fichier BoMain_xxx.key sur votre poste"
        End If								' Fin Ctrl BoKeySelect
        
       Set AppBO = Nothing                 		   	        ' Libère la variable objet.
                    
      ' Supression du fichier paramètres xxx.var (Modif. 08/01/2004)
      ' ------------------------------------------------------------
      If (Fichier.FileExists(WScript.Arguments.Item(0))) Then
         Fichier.DeleteFile(WScript.Arguments.Item(0))
      End If

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.