Comate et Excel

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Bernard
Messages : 23
Inscription : jeu. 22/janv./2004 8:56
Localisation : Le MANS (72)

Comate et Excel

Message par Bernard »

J'ai apporté quelques modifications à l'exemple livré avec Comate

Code : Tout sélectionner

;/////////////////////////////////////////////////////////////////////////////////
;***COMate***  COM automation through iDispatch.
;*===========
;*
;*Excel demo.
;/////////////////////////////////////////////////////////////////////////////////

IncludePath "..\"
XIncludeFile "COMate.pbi"


date$ = FormatDate("%dd/%mm/%yyyy", Date())

Define.COMateObject ExcelObject, WorkBook
Define.COMateObject ExcelObject, WorkSheet
Define.COMateObject ExcelObject, Sheet

ExcelObject = COMate_CreateObject("Excel.Application")

If ExcelObject
  If ExcelObject\SetProperty("Visible = #True") = #S_OK
;     ExcelObject\SetProperty("SheetsInNewWorkbook=1")
    WorkBook = ExcelObject\GetObjectProperty("Workbooks\Add")
    ExcelObject\SetProperty("ActiveSheet\Name = 'MaFeuille' ")
    
    If WorkBook
      ExcelObject\SetProperty("Cells(1,1)\Font\Size = 40")
      ExcelObject\SetProperty("Cells(1,1) = 'Hello'")
      ExcelObject\SetProperty("Cells(1,2)\Font\Bold = -1 ")      
      ExcelObject\SetProperty("Cells(1,2) = 'from'")
      ExcelObject\SetProperty("Cells(1,3) = 'COMate!'")
      ExcelObject\SetProperty("Cells(1,5) = 'Today$0027s date is'")  ;$0027 is a hex escape code used to insert a ' (ascii 39) character.
      ExcelObject\SetProperty("Cells(1,6) = '" + date$ + "' AS DATE")
      ExcelObject\SetProperty("Cells(4,1) = 6.25")
      Texte.s = "Bonjour " + Chr(10) + "Monsieur"
      ExcelObject\SetProperty("Cells(2,1) = '" + Texte + "' ")
      ;Retrieve a double value and a date.
        dbl.d = ExcelObject\GetRealProperty("Cells(4,1)")
          MessageRequester("COMate - Excel demo", "Result Cells(4,1) : " + StrD(dbl))
      ;For the date we retrieve it in string format.
        newDate$ = ExcelObject\GetStringProperty("Cells(1,6)")
          MessageRequester("COMate - Excel demo", "Result Cells(1,6) : " + newDate$)
;       ExcelObject\SetProperty("ActiveSheet\PageSetup\CenterHeader = '"+Chr(38)+"20Toto' ")
      ExcelObject\SetProperty("ActiveSheet\PageSetup\CenterHeader = '"+Chr(38)+"''Arial,Gras' '"+Chr(38)+"20Toto' ")
      ExcelObject\SetProperty("ActiveSheet\PageSetup\CenterFooter = '"+Chr(38)+"20CouCou' ")
      ExcelObject\SetProperty("ActiveSheet\PageSetup\PrintGridlines = -1 ")

      ExcelObject\Invoke("Quit()") 
      WorkBook\Release()
    EndIf
  EndIf
  ExcelObject\Release()
Else
  MessageRequester("COMate -Excel demo", "Couldn't create the application object!")
EndIf

Mon problème réside sur l'utilisation des codes escape dans les entêtes et pieds de pages.
Je n'arrive pas à cumuler la taille de police et le style, quelqu'un a une idée ?

Merci
Bernard
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut Bernard,

Personnellement, je n'ai pas compris ce que tu veux exactement. Je n'ai pas Excel pour tester donc pas très évident...

Néanmoins, déjà je remarque qu'un Chr(38) (un chr(38 ) ) peut être remplacé par le caractère '&', c'est hors-sujet, mais ça peut simplifier l'écriture dans le programme.

Ensuite je vois un SetProperty qui "injecte" une chaîne contenant 'Arial,Gras'. Est-ce que le mot adjacent ("toto") est réellement gras avec une telle injection? Pour préciser ma question: est-ce que c'est bien en français que l'on précise les styles? (au lieu de 'Arial,Bold'.)

Enfin, peut-être pour réussir à cumuler la taille et le style d'une police, une astuce ce serait d'écrire directement sous Excel dans une cellule, un petit texte de deux mots, modifier la taille et le style du deuxième mot. Puis voir sous PureBasic, grâce à GetProperty(), comme est retourné la chaîne conséquente à ce mélange de style. ça peut donner une idée de la syntaxe à respecter par la suite.

Voilà, je ne peux hélas pas faire mieux!

Ollivier
Répondre