Bonjour,
Je veux juste poster un petit bout de code pour ceux qui, comme moi, ont cherché un bon moment comment imprimer un document odt. En effet, pour une raison qui me semble un peu floue, il semblerai que la méthode "print" de l'interface XPrintable ne passe pas en VB. (Il y a surment un conflit avec une méthode interne a Visual Studio qui se nomme elle aussi print mais qui prend d'autres arguments)
C'est pourquoi, j'utilise la méthode CallByName qui va se charger d'invoquer la méthode print.
Code : Tout sélectionner
Dim osm As Object
Dim PrintProperties(3) As Object
CmDiag.CancelError = True 'Envoie d'une erreur si le bouton Cancel est pressé
On Error GoTo ErrHandler
CmDiag.ShowPrinter
Set osm = CreateObject("com.sun.star.ServiceManager")
'Définition de l'imprimante à utiliser pour l'impression : par défaut
Set PrintProperties(0) = osm.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
PrintProperties(0).Name = "PrinterName"
PrintProperties(0).Value = "Default"
'Nombre de copies du document à imprimer
Set PrintProperties(1) = osm.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
PrintProperties(2).Name = "CopyCount"
PrintProperties(2).Value = CmDiag.Copies
'Lancement de l'impression
CallByName docOOo, "print", VbMethod, PrintProperties
Exit Sub
ErrHandler:
' Bouton Cancel pressé
Exit Sub
Seulement, le seul interêt de cette boite de dialogue est qu'elle ne fait que redéfinir l'imprimante par défaut qui est ensuite utilisée pour l'impression. A la rigueur, on peut aussi récupérer le nombre de copies que l'on veut faire.
Bonne journée.