用VBA宏代碼,把幻燈片中所有文字,包括大綱視圖中不顯示的,快速提取到 Word

如題,用VBA宏代碼,把幻燈片中所有文字,包括大綱視圖中不顯示的,快速提取到 Word。

造成大綱視圖下不顯示文字的原因是,創(chuàng)建幻燈片時,選擇“空白”創(chuàng)建一個空白幻燈片,再在文本框內添加文字,或直接把文字復制到幻燈片中,在這兩種情況下大綱視圖都是不顯示文字的,也無法把文字復制到 Word 或通過“創(chuàng)建講義”方式轉換成Word,主要是因為文本框中沒有占位符。

而選擇非“空白”幻燈片(如“標題幻燈片”或“標題和內容”),它們都有占位符(“單擊此處添加標題”或“單擊此處添加文本”便是占位符),這樣添加完文字,在大綱視圖下都是顯示的。

那么下面我們開始用宏代碼,把幻燈片中所有文字,快速提取到 Word:

在 PowerPoint 窗口,按 Alt + F11 打開 VBA 編輯窗口,單擊“插入”,在彈出的菜單中選擇“模塊”,新建一個模塊,把以下代碼:

Sub PPTToWord()

????On Error Resume Next

????Dim docObj As New Word.Document, shapeObj As Shape, slideObj As Slide

????For Each slideObj In ActivePresentation.Slides

????????For Each shapeObj In slideObj.Shapes

????????????docObj.Range().Text = docObj.Range() + shapeObj.TextFrame.TextRange.Text

????????Next shapeObj

????Next slideObj

????docObj.Application.Visible = True

End Sub

復制到模塊窗口,單擊“工具”,然后選擇“引用”,打開“引用”窗口,往下拖右邊的滾動條一直找到 Microsoft Word Object Liblary(Word 對象類庫),勾選它,單擊“確定”,單擊“運行”圖標,則開始把PPT轉Word,一會后轉換完成,并自動用 Word 打開。這樣,在 PowerPoint 的大綱視圖中沒有顯示的內容也提取到了 Word。操作過程步驟,如圖所示:

快速把幻燈片所有文字提取到 Word

注意:

文字提取完,有可能順序會出錯,手動編輯下就好。


VBA 代碼說明:

A、On Error Resume Next 表示代碼執(zhí)行過程中發(fā)生錯誤后繼續(xù)往下執(zhí)行。

B、Dim docObj As New Word.Document 把 docObj 定義為 Word 的 Document(文檔)對象,shapeObj As Shape 把 shapeObj 定義為Shape(形狀)對象,slideObj As Slide 把 slideObj 定義為 Slide(幻燈片)對象。

C、ActivePresentation 表示活動(當前)窗口中的演示文稿,ActivePresentation.Slides 表示演示文稿中的所有幻燈片;slideObj.Shapes 表示形狀對象 slideObj 中的所有形狀,這里指所有幻燈片中的文本框。

D、Word 的 Range 對象用于表示文檔中的一片連續(xù)區(qū)域,它有 Start 和 End 兩個參數,Start 用于指定區(qū)域的開始字符,End 用于指定區(qū)域的結束字符,例如? Range(Start:=0, End:=5) 表示當前文檔中從第 0 個到第 5 個字符;Range() 省略了參數,表示當前文檔中所有字符,省略參數時,括號也可以省略,Range() 可以寫為 Range;Range().Text(或 Range.Text)表示一片連續(xù)區(qū)域中的文字。

E、PowerPoint 中的 TextFrame 對象表示 Shape 對象中的文本框架;TextRange 表示文本框中的文本,用于操作文本的屬性與方法。

F、For Each In ... Next 是循環(huán)語句,For Each slideObj In ActivePresentation.Slides ... Next 用于遍歷當前窗口的演示文稿中

的每個幻燈片,第一次執(zhí)行時,slideObj 表示第一個幻燈片;第二次執(zhí)行時,slideObj 表示第二個幻燈片,其它的以此類推。

H、For Each shapeObj In slideObj.Shapes ... Next 用于遍歷每個幻燈片中的所有文本框。

I、docObj.Range().Text = docObj.Range() + shapeObj.TextFrame.TextRange.Text 用于把遍歷過的文本累加起來,docObj.Range() 表示已遍歷過文本框中的文本,shapeObj.TextFrame.TextRange.Text 表示當前遍歷文本框中的文本。

J、docObj.Application.Visible = True 用于把 Word 文檔顯示出來,Visible 是顯示屬性,設置為 True,表示顯示,設置為 False,表示隱藏。

K、代碼的意思是,先用外層循環(huán)遍歷所有幻燈片,再用內層循環(huán)遍歷每個幻燈片中的所有文本框,遍歷完一個幻燈片后繼續(xù)遍歷下一個幻燈片,一直遍歷完所有幻燈片。

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容