bonjour,
je souhaiterais exporter tout les rapports d'un document BO dans un fichier excel.
qui contient donc autant de feuilles Excel, que de rapport Bo dans le document BO.
OK ?
principe :
- j'exporte chaque rapport BO dans un fichier texte.
- je crée un fichier Excel
- j'importe les fichiers texte dans les feuilles Excel.
- j'enregistre
- je ferme, je libère tout (mémoire...)
voici un code que j'ai trouvé sur des forums anglais. :
Code :
- ' ---------------------------------------------------------------
- ' exportation au format xls
- ' ---------------------------------------------------------------
- ' principe : exportation des différents rapports au format texte,
- ' puis importation dans des feuilles excel.
- ' ---------------------------------------------------------------
- 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 = "P:\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
- End Sub
|
problème, marche pas, il me dit une erreur :
70 - permission refusée.
une idée ??? perso, je ne vois pas, si ce n'est que Workbooks devrais peut etreetre en français (j'ai déjà eu des Pb avec des nom de méthode en anglais, qui devais etre en français...)
mais je ne trouve pas de traduction qui marche pour Workbooks...
des idées...
merci d'avance.
bonne journée.