pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 7 nov. 2007 à 09:46
Salut,
Exporter le rpt en tant que tel vers Excel me semble difficile
quelle version de crystal utilises tu ?
Pour ma part j'utilise la V9 et voilà ce que je fais :
lors de l'apercu avant impression du report, tu as une petite enveloppe a coté de l'icone de recherche dans la barre d'icone
cette enveloppe permet d'exporter le contenu du report vers différentes appli externes (.TXT, XLS, ...)
ceci à la condition d'avoir livré avec ton appli, les dll crystal nécessaires.
c'est à dire :
crxf_pdf.dll => Export PDF
crxf_rtf.dll => export ritch text file
crxf_wordw.dll => Export Word
crxf_xls.dll => Export Excek
Attention à livrer également les fichiers de ressources ( ex : crxf_pdf_res_fr.dll)
pour plus d'info sur les dll à distribuer pour crystal avec ton appli tu peux regarder le doc runtime.chm
fourni avec crystal
fodbe
Messages postés41Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 2 mai 2008 7 nov. 2007 à 10:07
la version de crystal que j'utilise est la version 8.5, le problème est que je travail sur une application ou les utilisateurs veulent faire l'exportation sans passer par la fenètre d'édition ie sans utiliser l'icône sous forme d'enveloppe. les fichiers .rpt se trouvent dans un repertoire ETAT .
merci.
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 7 nov. 2007 à 10:45
tu dois déjà l'avoir dans ton appli, si les report sont lancés via celle ci. ensuite, il te reste qu'à changer l'instruction d'impression par l'impression d'export.
donnes ton code qui génère l'état et cela sera plus facile pour moi de t'aider.
fodbe
Messages postés41Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 2 mai 2008 7 nov. 2007 à 11:03
voila ce que j'utilise
'Chargement Etat dans Report
' Set report = CR.OpenReport(RptFilePath)
'On Error GoTo Erreur
With report
NomEtat = priv_NomEdition
'Chargement de la liste des libéllés
RetrieveDataInter priv_GroupEtat
'Recherche des clefs sur le rapport
CR.OpenReport (priv_RptFilePath)
Set RPsects = report.Sections
' 'Recherche sur chaque section de l'etat
nbsection = RPsects.Count
For numsection = 1 To nbsection
Set RPsect = RPsects.Item(numsection)
'Recherche du nombre de libelle par section
Set RPobjs = RPsect.ReportObjects
nbobject = RPobjs.Count
For compteur = 1 To nbobject
If TypeOf RPobjs.Item(compteur) Is CRAXDRT.TextObject Then
Set CRtxtobj = RPobjs.Item(compteur)
Inter.getMessage CRtxtobj.Text, Data
CRtxtobj.SetText (Data.Message)
End If
Next
Next
fodbe
Messages postés41Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 2 mai 2008 7 nov. 2007 à 11:09
salût
j'ai trouvé ça sur internet, mais il m'affiche une erreure au niveau dim doc as document :l'erreure est la suivante
type défini par l'utilisateur non défini.
cordialement
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 7 nov. 2007 à 11:09
ok, regardes si ton objet "report " a une fonction Export.
exemple :
report.Export
ton report est visiblement alimenté, donc, au lieu de lancer l'impression, je pense que tu peux utiliser une fonction expor (si elle existe)
fodbe
Messages postés41Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention 2 mai 2008 7 nov. 2007 à 11:18
salût
c'est une autre solution que j'ai trouvé sur internet
voila le code
Sub export_Excel(lparam As String)
On Error GoTo error_handler
Dim Doc As Document
Dim Rep As report
Dim i As Integer
Dim ExcelDoc As String ' nom du fichier excel cible
Dim Path As String ' lien pour le fichier excel cible
ExcelDoc = ActiveDocument.Name & lparam ' nom du ficher excel
Path = "D:\test" ' lien pour stocker le fichier excel
' enregistre les rapports au format text
Set Doc = ActiveDocument
For i = 1 To Doc.Reports.Count
Set Rep = Doc.Reports.Item(i)
If Dir(Path & Rep.Name & ".txt") <> " " Then
Kill Path & Rep.Name & ".txt"
End If
Rep.ExportAsText (Path & Rep.Name & ".txt")
Next i
Set vbExcel = CreateObject("Excel.Application")
With vbExcel
' création d'un fichier excel, qui contiendra les ficher au format txt
If Dir(Path & ExcelDoc & ".xls") <> " " Then
Kill Path & ExcelDoc & ".xls"
End If
.Workbooks.Add
.ActiveWorkbook.SaveAs Path & ExcelDoc & ".xls"
' ouvre les sources, enregistre au formazt excel, et immport dans la bonne destination
For i = 1 To Doc.Reports.Count
Set Rep = Doc.Reports.Item(i)
.Workbooks.Open Path & Rep.Name & ".txt"
If Dir(Path & Rep.Name & ".xls") <> " " Then
Kill Path & Rep.Name & ".xls"
End If
.ActiveWorkbook.SaveAs Path & Rep.Name & ".xls"
' copie des feuilles dans le fichier excel
.Workbooks(Rep.Name & ".xls").Sheets(Rep.Name).Move _
Before:=.Workbooks(ExcelDoc & ".xls").Sheets("Sheet1")
Next i
' ferme tout les workbooks
.ActiveWorkbook.Save
Workbooks.Close
' ferme l'application
.Quit
End With
' libère la mémoire
Set vbExcel = Nothing
Exit Sub
error_handler:
If Err.Number = 53 Then Resume Next
MsgBox Err.Number & " - " & Err.Description
Workbooks.Close
vbExcel.Quit
Set vbExcel = Nothing
Set OlkApp = Nothing
pneau
Messages postés258Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention27 octobre 20105 7 nov. 2007 à 11:29
le message d'erreur que tu as indique qu'il te manque une référence sur une dll crystal dans ton projet.
sinon, j'ai vu qu'on pouvait ajouté une référence à la dll crystal report export.
je ne sais pas ce que cela vaut
mais peut etre que cela va t'apporter une solution