Basic Univers
; Manipulation d'Excel
; Ouvrez un fichier Excel, lancez le prog, des onglets vont être créés

#CF_TEXT =  1

#TIMEOUT_SYNC = 5

#CP_WINANSI = 1004

#DDE_FACK = $8000

#XCLASS_BOOL         = $1000
#XCLASS_FLAGS        = $4000
#XCLASS_NOTIFICATION = $8000

#XTYPF_NOBLOCK = $2

#XTYP_EXECUTE    = $50 | #XCLASS_FLAGS
#XTYP_POKE       = $90 | #XCLASS_FLAGS
#XTYP_CONNECT    = $60 | #XCLASS_BOOL | #XTYPF_NOBLOCK
#XTYP_DISCONNECT = $C0 | #XCLASS_NOTIFICATION | #XTYPF_NOBLOCK

Global hConnection.l

Procedure.l DdeCallback(uType, uFmt, hConv, hszTopic, hszItem, hData, dwData1, dwData2)
  ReturnValue = 0 ;#DDE_FACK
  Select uType
    Case #XTYP_EXECUTE
      ReturnValue = 0
    Case #XTYP_POKE
      ReturnValue = #DDE_FACK
  EndSelect
  ProcedureReturn ReturnValue
EndProcedure

Procedure DdeInit(Server.s, Topic.s)
  Id.l = 0
  DdeInitialize_(@Id, @DdeCallback(), #APPCLASS_STANDARD | #APPCMD_CLIENTONLY , 0)
  hServer = DdeCreateStringHandle_(Id, Server, #CP_WINANSI)
  hTopic = DdeCreateStringHandle_(Id, Topic, #CP_WINANSI)
  hConnection = DdeConnect_(Id, hServer, hTopic,  0)
EndProcedure

Procedure.l DdeExecute(Command.s)
  Delay(200)
  hItemMessage = DdeCreateStringHandle_(Id, Command, #CP_WINANSI )
  Result = DdeClientTransaction_(@Command, Len(Command), hConnection, hItemMessage, #CF_TEXT, #XTYP_EXECUTE, #TIMEOUT_SYNC, 0)
  DdeFreeStringHandle_(Id, hItemMessage)
  ProcedureReturn Result
EndProcedure

DdeInit("Excel", "Feuil1")

For i = 1 To 7
  Debug DdeExecute("[WORKBOOK.INSERT(1)]")
Next