Jump to content
Roshan Shiveshwar

TWAPI Powerpoint does not close

Recommended Posts

Hi,

I have created a tcl script that is supposed to perform following activities:

  1. Open ppt object
  2. Add new slide
  3. Paste animation (.avi) files.
  4. Save the file
  5. Close the ppt

Everything works fine, but at the end ppt does not close. Here is the code that I have written. Is there anything that I am missing out?

 

set job_folder "C:\\Users\\xcxc\\Desktop\\test_ui\\test" 

set num_of_modes 15

#get the directory#
set dirname [file dirname [info script]]
set template_dirname "$dirname/Report_Template.pptx"


#handle the files#

file copy -force "$dirname/Report_Template.pptx" "$job_folder/Report/Report.pptx"

#modify the PPts#
package require twapi
set ppt [::twapi::comobj PowerPoint.Application]
$ppt DisplayAlerts [expr 0]
set presents [$ppt Presentations]
$presents Open "$job_folder/Report/Report.pptx"; #Open the Presnetation
set active_presentation [$ppt ActivePresentation]; #get the cureently active presentaatin
set slides [$active_presentation Slides]; #gte the slide list
set slide_1 [$slides Item 1]; #get control on slide index 1


set object_list {}
set mode_counter 1
while {$mode_counter <= $num_of_modes} {
    set slide_num [expr {$mode_counter + 1}]
    set slide_$slide_num [$slides Add $slide_num 12]; #add one more slide into the presentation

    set slide_$slide_num\_shapes [[set slide_$slide_num] Shapes]

    set slide_$slide_num\_video_1 [[set slide_$slide_num\_shapes] AddMediaObject2 [file nativename "$job_folder/Report/Mode_$mode_counter\_Iso_Front.avi"] -1 -1 20 100 650 300]

    set slide_$slide_num\_video_2 [[set slide_$slide_num\_shapes] AddMediaObject2 [file nativename "$job_folder/Modal_Analysis/Report/Mode_$mode_counter\_Iso_Back.avi"] -1 -1 500 100 650 300]


    lappend object_list "slide_$slide_num"
    lappend object_list "slide_$slide_num\_shapes"
    lappend object_list "slide_$slide_num\_video_1"
    lappend object_list "slide_$slide_num\_video_2"

    incr mode_counter 1
}


$active_presentation Save 

foreach object $object_list {
    puts $object
    [set $object] -destroy
}

$slides -destroy
$active_presentation -destroy 


$ppt Quit
$ppt -destroy

 

Share this post


Link to post
Share on other sites

Solved : There was a small eeror in the code.  One of the object was not destroyed properly

set job_folder "C:\\Users\\xcxc\\Desktop\\test_ui\\test" 

set num_of_modes 15

#get the directory#
set dirname [file dirname [info script]]
set template_dirname "$dirname/Report_Template.pptx"


#handle the files#

file copy -force "$dirname/Report_Template.pptx" "$job_folder/Report/Report.pptx"

#modify the PPts#
package require twapi
set ppt [::twapi::comobj PowerPoint.Application]
$ppt DisplayAlerts [expr 0]
set presents [$ppt Presentations]
set active_presentation  [$presents Open "$job_folder/Report/Report.pptx"]; #Open the Presnetation
set slides [$active_presentation Slides]; #gte the slide list
set slide_1 [$slides Item 1]; #get control on slide index 1


set object_list {}
set mode_counter 1
while {$mode_counter <= $num_of_modes} {
    set slide_num [expr {$mode_counter + 1}]
    set slide_$slide_num [$slides Add $slide_num 12]; #add one more slide into the presentation

    set slide_$slide_num\_shapes [[set slide_$slide_num] Shapes]

    set slide_$slide_num\_video_1 [[set slide_$slide_num\_shapes] AddMediaObject2 [file nativename "$job_folder/Report/Mode_$mode_counter\_Iso_Front.avi"] -1 -1 20 100 650 300]

    set slide_$slide_num\_video_2 [[set slide_$slide_num\_shapes] AddMediaObject2 [file nativename "$job_folder/Modal_Analysis/Report/Mode_$mode_counter\_Iso_Back.avi"] -1 -1 500 100 650 300]


    lappend object_list "slide_$slide_num"
    lappend object_list "slide_$slide_num\_shapes"
    lappend object_list "slide_$slide_num\_video_1"
    lappend object_list "slide_$slide_num\_video_2"

    incr mode_counter 1
}


$active_presentation Save 

foreach object $object_list {
    puts $object
    [set $object] -destroy
}

$slides -destroy
$active_presentation -destroy 


$ppt Quit
$ppt -destroy

 

Livil Lyle and tinh like this

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...