The following example launches Microsoft Excel, adds a new worksheet, fill in some fields and finally clears the worksheet and quits Excel
:- use_module(library(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],CellValue), 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), get_code(_), %% 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), get_code(_), %% VB: app.quit comclient_invoke_method_proc(App, quit), comclient_release(ActiveSheet), comclient_release(App).