需將簡報文字內容匯出至 Word 整理成講義、逐字稿或報告?PowerPoint 內建「傳送至 Word」功能僅支援大綱層級文字;若需完整提取所有文字方塊內容,可使用 VBA 巨集批次轉換。

限制:僅能提取使用「投影片版面配置」預留文字框的內容;手動插入的文字方塊、圖片上的文字、SmartArt 文字無法匯出。
將下列程式碼存為 PPT2Word.vbs,雙擊執行,可批次將指定資料夾下所有 .ppt/.pptx 檔的所有文字方塊文字提取至同名 .doc 檔。
' 綁定到本地電腦
strComputer = "."
' 發生錯誤時繼續執行
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
MsgBox "此腳本可批次將 PPT 文字轉為 Word 文件。圖片、表格等內容自動略過" & vbCrLf & _
"使用時請將所有要轉換的 PPT 檔複製到 C:\ 根目錄下。雙擊執行此檔即可。" & vbCrLf & _
"需本機安裝 Office"
' 建立 Word 物件
Set objWord = CreateObject("Word.Application")
' 建立 PPT 物件
Set pptApp = CreateObject("PowerPoint.Application")
' 取得 C:\ 目錄下檔案集合
Set FileList = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='C:\'} Where " _
& "ResultClass = CIM_DataFile")
For Each objFile In FileList
If objFile.Extension = "ppt" Or objFile.Extension = "pptx" Then
pptApp.Visible = True
Set pptSelection = pptApp.Presentations.Open("C:\" & objFile.FileName & "." & objFile.Extension)
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
' 遍歷所有投影片
For i = 1 To pptSelection.Slides.Count
' 遍歷投影片中所有形狀
For j = 1 To pptSelection.Slides(i).Shapes.Count
If i = 1 Then objSelection.Font.Name = "標楷體" ' 首頁標題用黑體
objSelection.TypeText pptSelection.Slides(i).Shapes(j).TextFrame.TextRange.Text
objSelection.TypeParagraph()
objSelection.Font.Name = "新細明體"
objSelection.TypeText vbCrLf
Next
Next
pptSelection.Close
objDoc.SaveAs "C:\" & objFile.FileName & ".doc"
objDoc.Close
MsgBox "轉換完成,Word 已儲存於 C:\" & objFile.FileName & ".doc"
End If
Next
pptApp.Quit
C:\ 根目錄(或修改腳本中路徑)。PPT2Word.vbs,點選確定開始轉換。| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| 內建匯出大綱 | 免程式、保留投影片縮圖、版面整齊 | 僅限版面配置文字、無法提取自由文字方塊 | 標準版面簡報、需講義版面 |
| VBA 批次提取 | 提取所有文字方塊、批次處理多檔、免開啟 PPT 逐個操作 | 需啟用巨集、文字順序較亂、無圖片/表格、需自行排版 | 大量舊檔文字擷取、自由版面簡報、文字探勘 |
依據簡報結構與後續用途,選擇最適合的轉檔策略。