#1
|
|||
|
|||
New learner need help - convert tables in word format to ppt slides.
Hello all. I am new learner in VBA, and writing some VBscript in SAS. I want to convert tables in word format (.rtf) to ppt slides (.ppt). The following is my code, which could copy the first table in the specific word file, paste into a new ppt file and save under certain folder. I need help on these two questions. 1. How to get the number of tables in the word file? 2. Once I got the number of tables, how to write a loop and copy/paste each table into the ppt file? Each table will be on one slide of ppt file. Thank you very much! filename script "C:\Users\zzz\Desktop\New\wdtb2ppt.vbs"; data _null_; file script; put 'Set objWord = CreateObject("Word.Application")'; put 'objWord.Visible = False'; /* Slide 1*/ put 'Set objDoc = objWord.Documents.Open("' "C:\Users\zzz\Desktop\New\t_aesum_age_saf.rtf"'")' ; put 'Set objSelection = objWord.Selection'; put 'Set objPPT = CreateObject("PowerPoint.Application")'; put 'objPPT.Visible = True'; put 'Set objPresentation = objPPT.Presentations.Add'; /* put 'objPresentation.ApplyTemplate("C:\temp\tmp3.pot") ';*/ put 'objDoc.Activate'; put 'objDoc.Tables(1).Range.Select'; put 'objSelection.Copy'; put 'Set objSlide = objPresentation.Slides.Add(1,12)'; put 'objPPT.ActiveWindow.View.Paste'; put 'objPresentation.SaveAs("C:\Users\zzz\Desktop\New\ table.ppt")'; put 'objPresentation.Close'; put 'objPPT.Quit'; put 'objDoc.Close'; put 'objWord.Quit'; run; filename xx pipe "cscript //nologo ""C:\Users\zzz\Desktop\New\wdtb2ppt.vbs"""; data _null_; infile xx; input; put _infile_; run; |
#2
|
||||
|
||||
The table count can be obtained with:
ActiveDocument.Tables.Count A loop in VBA might be constructed with code like: Code:
Sub Demo1() Dim i As along With ActiveDocument For i = 1 To .Tables.Count 'process the table With .Tables(i) 'table processing code goes here End With 'or, perhaps: .Tables(i).Range.Copy Next End With End Sub Code:
Sub Demo2() Dim Tbl As Table For Each Tbl In ActiveDocument.Tables 'process the table With Tbl 'table processing code goes here End With 'or, perhaps: Tbl.Range.Copy Next End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thanks Macropod!
I updated my code as following, but this does not work. I hightlighted the part I updated per your comments. Is this correct? filename script "C:\Users\zzz\Desktop\New\wdtb2ppt.vbs"; data _null_; file script; put 'Set objWord = CreateObject("Word.Application")'; put 'objWord.Visible = False'; /* Slide 1*/ put 'Set objDoc = objWord.Documents.Open("' "C:\Users\zzz\Desktop\New\t_aesum_age_saf.rtf"'")' ; put 'Set objSelection = objWord.Selection'; put 'Set objPPT = CreateObject("PowerPoint.Application")'; put 'objPPT.Visible = True'; put 'Set objPresentation = objPPT.Presentations.Add'; /* put 'objPresentation.ApplyTemplate("C:\temp\tmp3.pot") ';*/ put 'Sub Demo2()'; put 'Dim Tbl As Table'; put 'For Each Tbl In ActiveDocument.Tables'; put 'objDoc.Activate'; put 'With Tbl'; put 'objDoc.Tbl.Range.Select'; put 'End With'; put 'Tbl.Range.Copy'; put 'Set objSlide = objPresentation.Slides.Add(1,12)'; put 'objPPT.ActiveWindow.View.Paste'; put 'Next'; put 'End Sub'; put 'objPresentation.SaveAs("C:\Users\zzz\Desktop\New\ table.ppt")'; put 'objPresentation.Close'; put 'objPPT.Quit'; put 'objDoc.Close'; put 'objWord.Quit'; run; filename xx pipe "cscript //nologo ""C:\Users\zzz\Desktop\New\wdtb2ppt.vbs"""; data _null_; infile xx; input; put _infile_; run; |
#4
|
|||
|
|||
Here is my code in my vbs file.
Set objWord = CreateObject("Word.Application") objWord.Visible = False Set objDoc = objWord.Documents.Open("C:\Users\zzz\Desktop\New\t _aesum_age_saf.rtf") Set objSelection = objWord.Selection Set objPPT = CreateObject("PowerPoint.Application") objPPT.Visible = True Set objPresentation = objPPT.Presentations.Add Sub Demo2() Dim Tbl As Table For Each Tbl In ActiveDocument.Tables objDoc.Activate With Tbl objDoc.Tbl.Range.Select End With Tbl.Range.Copy Set objSlide = objPresentation.Slides.Add(1,12) objPPT.ActiveWindow.View.Paste Next End Sub objPresentation.SaveAs("C:\Users\zzz\Desktop\New\t able.ppt") objPresentation.Close objPPT.Quit objDoc.Close objWord.Quit |
#5
|
||||
|
||||
The macros I posted are stand-alone VBA code demonstrating nothing more than how to loop through tables in VBA; they are not VBScript or SAS. You seem happy to use these terms interchangeably, regardless of the fact they refer to quite different things.
I have no idea about how SAS script works, but I very much doubt you'd insert Word VBA macro names (i.e. put 'Sub Demo2()'; ), variable declarations (i.e. put 'Dim Tbl As Table'; ) or "put 'End Sub';". Furthermore, if you're using "put 'For Each Tbl In ActiveDocument.Tables';", you wouldn't need any of: put 'objDoc.Activate'; put 'With Tbl'; put 'objDoc.Tbl.Range.Select'; put 'End With'; Frankly, I can't see what SAS has to do with what you're trying to achieve. The principles for looping through tables in VBScript are the same as in VBA, but the code is not all the same; neither can you just dump a VBA macro into a VBScript.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#6
|
||||
|
||||
Cross-posted at: http://www.vbaexpress.com/forum/show...-to-ppt-slides
For cross-posting etiquette, please read: http://www.excelguru.ca/content.php?184
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Convert Word Tables to PDF | tcoggins | Word Tables | 2 | 06-29-2016 10:28 AM |
Excel Tables in Word, format issues | kamal.shah | Word Tables | 2 | 01-26-2015 03:47 AM |
convert tables to fillable forms in word | expert4knowledge | Word | 1 | 02-13-2014 03:06 AM |
Unable to convert word to MOBI format | fig000 | Word | 1 | 11-17-2013 01:46 AM |
Convert a file from HTML to WORD format weblayout view | gtselvam | Word | 0 | 12-02-2008 03:53 AM |