Node:COM Client Examples, Previous:COM Client Predicates, Up:COM Client



Examples

The following example launches Microsoft Excel, adds a new worksheet, fill in some fields and finally clears the worksheet and quits Excel

:- use_module(comclient).
:- use_module(library(lists)).

test :-
   test('Excel.Application').

test(ProgID) :-
   comclient_create_instance(ProgID, App),
   %% Visuall Basic: app.visible = 1
   comclient_invoke_put(App, visible, 1),
   %% VB: app.workbooks.add
   comclient_invoke_method_proc(App, [workbooks, add]),
   %% VB: with app.activesheet
   comclient_invoke_method_fun(App, activesheet, ActiveSheet),

   Rows = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
   Cols = Rows,
   %% VB: .cells i,j . value = i+j/100
   (
     member(I, Rows),
     member(J, Cols),
     ValIJ is I+J/100,

     comclient_invoke_put(ActiveSheet, [cells(I,J),value], ValIJ),
     fail
   ; true
   ),
   (
     member(I, Rows),
     member(J, Cols),
     %% retrieve cell values
     comclient_invoke_method_fun(ActiveSheet, [cells(I,J), value],
     format(user_error, '~nCell(~w,~w) = ~w', [I,J,CellValue]),
     fail
   ; true
   ),

   Range = 'A1:O15',
   format(user_error, '~Npress return to clear range (~w)', [Range]),
   flush_output(user_error),
   get0(_),

   %% VB: .range A1:O15 .Clear
   comclient_invoke_method_proc(ActiveSheet, [range(Range),clear]),

   %% Avoid Excel query "do you want to save..."
   %%  VB: app.activeworkbook.saved = 1
   comclient_invoke_put(App, [activeworkbook,saved], 1),

   format(user_error, '~Npress return to quit \'~w\'', [ProgID]),
   flush_output(user_error),
   get0(_),

   %% VB: app.quit
   comclient_invoke_method_proc(App, quit),

   comclient_release(ActiveSheet),
   comclient_release(App).