| | auteur : Bruno2r | Pour cet exemple on suppose que l'utilisateur répond à deux invites :
- "Année ?" qui retourne une réponse de type numérique
- "Sur combien de mois ?" qui retourne une réponse de type numérique
Public Sub mesinvites()
Dim Doc As Document
Dim DpVars As Variables
Dim DpVar As Variable
Dim txt As String
Dim nbv As Integer
Application.Interactive = True
Set Doc = Application.ActiveDocument
Set DpVars = Doc.Variables
txt = ""
nbv = 0
For Each DpVar In DpVars
nbv = nbv + 1
txt = Chr(10)& Chr(10) & " [" & nbv & "] Variable "& DpVar.Name & Chr(10) & "Valeur : " & DpVar.Value
Debug.Print txt
Next
Debug.Print Chr(10) & Chr(10) & Doc.Name & " contient " & nbv & " variables :"
End Sub
|
Les réponses stockées dans anref et moisref sont alors utilisables dans la suite du script
|
| | auteur : Bruno2r |
Voici un petit script de procédure qui établit la liste dans la fenêtre d'exécution des variables créées par l'utilisateur :
Public Sub mesvariables()
Dim Doc As Document
Dim DocVars As DocumentVariables
Dim DocVar As DocumentVariable
Dim txt As String
Dim nbv As Integer
Application.Interactive = True
Set Doc = Application.ActiveDocument
Set DocVars = Doc.DocumentVariables
txt = ""
nbv = 0
For Each DocVar In DocVars
If DocVar.Name élt; > "" Then
nbv = nbv + 1
txt = Chr(10) & Chr(10) & " [" & nbv & "] Variable " & DocVar.Name & Chr(10) & DocVar.Formula
Debug.Print txt
End If
Next
Debug.Print Chr(10) & Chr(10) & Doc.Name & " contient " & nbv & " variables :"
End Sub
|
 |
Attention ! Ne pas confondre :
Application.ActiveDocument.DocumentVariables Collection des objets Variables créées dans le document par l'utilisateur
Application.ActiveDocument.Variables Collection des objets Variables créées dans le fournisseur de données (requête)
|
|
| | auteur : Bruno2r | Utiliser la propriétée Application.Interactive
Cette méthode supprime ou autorise (False/True) les demandes de confirmation et les notifications à l'utilisateur.
Private Sub Document_BeforeRefresh(Cancel As Boolean)
Application.Interactive = False
End Sub
Private Sub Document_AfterRefresh()
Application.Interactive = True
End Sub
|
 | Attention ! Cette désactivation
* porte sur le rafraichissement du document (plus de message La Requête ne retourne pas de données)
* supprime également l'affichage des invites ! (conservant les réponses antérieures)
* ne fonctionne pas si on fait exécuter dans l'éditeur de requête
|
 | Pour désactiver l'interaction sur le SQL à la carte sans invite,
et la réactiver sur les autres requêtes avec invite,
il faudrait à l'ouverture par exemple :
* parcourir les dataproviders
* et avec un select case basé sur le nom ou le type faire précéder le refresh d'une gestion de l'interactivité
|
|
| | auteur : Bruno2r |
Dès la version 5 de Business Objects, il est possible d'appliquer la méthode ExportAsPdf à chaque rapport.
On peut également poser un test sur le non du rapport pour ne pas appliquer cet export à l'un d'entre eux.
| Utiliser le script suivant : | Private Sub Document_AfterRefresh()
Dim Doc As Document
Dim reps As Reports
Dim rep As Report
Dim repname As String
Dim chemin As String
chemin = "C:\"
Set Doc = Application.ActiveDocument
Set reps = Doc.Reports
For Each rep In reps
repname = rep.Name
repname = Replace(repname, Chr(34), "_")
repname = Replace(repname, Chr(42), "_")
repname = Replace(repname, Chr(47), "_")
repname = Replace(repname, Chr(58), "_")
repname = Replace(repname, Chr(60), "_")
repname = Replace(repname, Chr(62), "_")
repname = Replace(repname, Chr(63), "_")
repname = Replace(repname, Chr(92), "_")
repname = Replace(repname, Chr(124), "_")
If repname < > "PasCeluiLà" Then
rep.ExportAsText chemin & repname & ".pdf"
End If
Next
|
|
| | auteur : Bruno2r | En Version 5 les exports possibles en VBA sont :
- DataProvider.ExportToRDBMS
- Document.ExportAsPDF
- Document.ExportSheetsAsHtml
- Report.ExportAsHtml
- Report.ExportAsPDF
- Report.ExportAsRtf
- Report.ExportAsText
A partir de la Version 6 sont ajoutés :
- Document.ExportAsXML
- Report.ExportAsExcel
- Report.ExportAsHtmlPage
|
| | auteur : Bruno2r | L'objectif est de réaliser automatiquement après chaque rafraichissement les tâches suivantes :
- Déterminer le nombre de rapports (onglets) dans le document.
- Parcourir ces différents rapports.
- Appliquer sur chacun d'eux un filtre.
- Recalculer le document BO.
- Exporter en pdf.
Document_AfterRefresh()
Dim Dpc As Document
Dim Reps As Reports, Rep As Report
Dim nbr As Integer, nir As Integer
Dim AnneeRef As String
Set Doc = Application.ActiveDocument
Set Reps = Doc.Reports
nbr = Reps.Count
AnneeRef = "2008"
For Each Rep In Reps
Rep.Activate
Rep.AddComplexFilter "Exercice", "[Exercice] = " & AnneeRef
Rep.ForceCompute
Next
Rep.ExportAsPDF ("C:\le chemin....\DocsPDF\NomFichier_" & AnneeRef & ".pdf")
End Sub
|
|
| | auteur : Runs59 |
Comment exécuter des mises à jour et exports de requêtes BO depuis des macros VBA dans des documents Microsoft Office.
Tout cela fonctionnait très bien à l'époque de BO V5 mais depuis le passage à BO XI R2 et son mode d'authentification différent, les lignes de code ne fonctionnent plus.
| Voici la ligne de commande qui fonctionne sous BO XI R2: | VariableApplicationBO.Logon "Identifiant", "MotDePasse", "Ce que l'on trouve dans la case système de la fenêtre de login BOXI R2", "LDAP", False, False
|
Pour savoir quoi mettre dans "Ce que l'on trouve dans la case système de la fenêtre de login BOXI R2" si votre société utilise un lanceur pour s'authentifier à BO, il peut être nécessaire de double-cliquer sur la requête .rep pour obtenir la fenêtre d'authentification de BO plutôt que le lanceur "maison".
| Un exemple sous forme de code: |
Dim Appli_BO As busobj.Application 'Charger la référence "Business Objects 11.5 Object Library"'
Dim Document_BO As busobj.Document
Set Appli_BO = New busobj.Application
Appli_BO.Interactive = False 'Pour ne pas avoir d invite inutiles de la part de BO.'
Appli_BO.Logon "L123456", "toto1900", "NOMSERVEUR:NuméroPort", "LDAP", False, False
'Ci dessous, on ouvre un fichier BO:'
Set Document_BO = Appli_BO.Documents.Open("c:\Fichier_requete_BO.rep")
'On lance le rafraîchissement:'
Document_BO.Refresh
'Ici, pour l exemple j exporte le premier rapport en PDF mais on peut exporter dans d autres formats:'
Document_BO.Reports(1).ExportAsPDF "c:\Nom_en_PDF"
'Pour mes besoins, j enregistre aussi mon .rep:'
Document_BO.Close boSaveIfModified
'Je quitte l application:'
Appli_BO.Quit
'Et je libère l objet application BO:'
Set Appli_BO = Nothing
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2008
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|