Exportation vers fichier excel avec BO

vialstephane Messages postés 89 Date d'inscription mercredi 29 octobre 2003 Statut Membre Dernière intervention 22 mai 2008 - 1 juin 2004 à 18:53
Djibril2 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 mai 2006 - 30 janv. 2006 à 19:43
Bonjour,

Je voudrais exporter les données d' une requete Business Object vers un fichier excel en automatique.

Je suis arrivé en modifiant la macro dans un fichier script.rep, a enregistrer sous le format PDF avec un SaveAS dans la macro.
Mais le format XLS,CSV ne passe pas !
J'aimerais savoir si quelqu'un connaitrait la commande en VBA pour exporter les données plutot que les sauvées (SaveAS).

Je vous remercie d'avance

5 réponses

cs_katiouchka Messages postés 1 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 28 septembre 2005
28 sept. 2005 à 22:23
Il faudrait étudier la commande suivante : ConvertTo d'après sa
desciption elle traduit la commande interne exporter le fournisseur de
données vers un fichier excel.



Converts a microcube of the data provider into a designated format and stores the converted microcube in an external file.



Definition



Sub ConvertTo(Type As BoConvertToType, CubeNb As Long, [FileName As String])



Syntax



var.ConvertTo(type, numCube, [filename])



var is the name of the DataProvider variable that you declare.



type indicates the file format of the destination file. This is a
BoConvertToType enumerator object which can have the following values:
boExpDbase (1), boExpExcel (2), boExpLotus (3), boExpAsciiTab (4),
boAsciiCSV (5), or boExpExcel97 (6).



numCube is an integer that indicates which microcube of the data
provider is to be converted. The microcube number starts at 0. If you
enter 0, all microcubes of the data provider are converted. If you
enter 1, the first microcube is converted; if you enter 2, the second
is converted, and so on.



filename is a string that indicates the external filename under which
the converted microcube is stored. This parameter is optional.



Comments



You can find the destination file in the UserDocs folder. The applied extension depends on the type of conversion.



If the filename is omitted, the Open dialog box appears.



You can display the microcubes of the data provider with the Data Providers command of the Data menu.
0
Djibril2 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 mai 2006
25 nov. 2005 à 19:16
Oui sur la version 6 l'export Excel marche bien s'il n'y a pas trop de mise en forme sur ton rapport
Moi j'utilise sinon .ExportAsText mais attention aux chiffres qui ne doivent pas être formatés avec des séparateurs.

Il y a d'autre .ExportAs... mais voila ce que je fais

'connect => BO avec le login
Set appBO = CreateObject(Class:="businessobjects.application")
appBO.Interactive = False
appBO.LoginAs "login", "password", False

'Le Requete
Set docBO = appBO.Documents.Open("C:\marequete.rep")

'Une variable à entrée ?
docBO.Variables("Année?").Value = "2005"

'Je fais tourner
docBO.Refresh

'J'exporte dans un fichier xls
docBO.Reports(n°durapport).ExportAsText "C:\Export.xls"

'Je récupère
Workbooks.Open "C:\Export.xls"

'en sélectionnant mon tableau de ma récupération
ActiveWorkbook.Worksheets(1).Range("A3").CurrentRegion.Copy _
final.Worksheets("XX").Range("A1") ' final étant mon fichier destination
Application.CutCopyMode = False

'je referme mon fichier Export.xls sans enregistrer
ActiveWorkbook.Close False

'je referme ma requete BO en enregistrant
docBO.Close boSaveIfModified

'je quitte l'appli BO
appBO.Quit

'Je vide la mémoire des liens BO
Set appBO = Nothing

'Pour le fun je Kill mon fichier d'échange
Kill "C:\Export.xls"
0
dietrich3 Messages postés 3 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 19 septembre 2006
30 janv. 2006 à 15:40
Bonjour

Quand j'utilise cette macro, arrivé à la ligne:

Set docBO = appBO.Documents.Open("C:\marequete.rep")

Le message suivant apparait:

"Microsoft Excel is waiting for another application to complete an OLE action"

Pourriez vous m'indiquer ce qu'il faut rajouter pour que cette macro fonctionne correctement?

Merci

Fred
0
dietrich3 Messages postés 3 Date d'inscription lundi 1 août 2005 Statut Membre Dernière intervention 19 septembre 2006
30 janv. 2006 à 16:21
et Serait-il possible de lancer BO en mode offline?
Fred
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Djibril2 Messages postés 4 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 mai 2006
30 janv. 2006 à 19:43
Est-ce que BO n'est pas déjà ouvert, même en tache de fond ? (voir gestionnaire de tache : processus => busobj)

la commande "Set docBO = appBO.Documents.Open("C:\marequete.rep")"
permet d'ouvrir la requete après avoir fait le "CreateObject..."
si c'est déja ouvert, il faut utiliser la commande :
appBO = GetObject(, Class:="businessobjects.application")
et non pas le "CreateObject" car déja en route...

sinon, si c'est un soucis de requete alors :
appBO.Interactive = False doit être en True pour avoir les messages de BO

<HR>
Pour le Offline : mode local ?> appBO.LoginAs "login", "password", False => True
(Attention, on n'a plus acces au refresh car pur mode local. la function complete est Function LoginAs([User], [Pass], [Offline], [DomainName]) As Boolean)
ou invisible ? > appBO.Visible = False (rien dans la barre de tache)

<HR>
Sinon si c'est BO6, il est possible d'enregistrer sous *.xls s'il n'y a pas trop de mise en forme => possibilité de le faire en macro
0
Rejoignez-nous