AI神救援!PowerPoint自動化批量匯入圖片,數百張投影片一次完成

更新 發佈閱讀 14 分鐘

為了提供學生自主學習 18 週計畫的資訊圖表範例,最近花了一些時間製作了 2000 張資訊圖表,並打算每 200 張彙整成一份 PowerPoint 簡報檔,一共要做 20 個檔案。若是逐張將圖片插入投影片,至少得拖曳 2000 次,實在不是件輕鬆的工作。這時候,我心想,正是該讓 AI 上場救援了。(本例不採用 PowerPoint 的新增相簿功能)

raw-image

先在一個資料夾中準備好 200 張資訊圖表,這些資訊圖表的規格完全相同。因為每次只處理 200 張圖,所以,2000 張資訊圖表要分 10 次處理。

raw-image

參考作法

1.先建立 PowerPoint 的簡報模板(母片)。

raw-image

2.請 ChatGPT 產生一個 VBA 程式來執行這個工作。

提示詞:我需要將一個資料夾中的200張圖片放入一個PowerPoint檔案中,每一張投影片放入一張圖片,圖片以等比例縮放插入投影片中,請為這個工作提供可以讓PowerPoint使用的VBA程式。

3.複製 ChatGPT 提供的程式碼。(完整程式碼在文章最後

raw-image

4.在 PowerPoint 中使用快速鍵: Alt + F11,以進入 VBA 編輯器。

raw-image

5.點選功能表:插入/模組,貼上先前複製的程式碼。

raw-image

6.回到 PowerPoint 中,使用快速鍵:Alt + F8,選取巨集指令(本例:ImportPictures_OnePerSlide),再點選:執行。

raw-image

7.接著,選取圖片放置的資料夾。點選:確定,資料夾中的圖片就會自動匯入。(速度算很快了)

raw-image

最後存檔時,PowerPoint 會告知儲存檔案時,無法儲存這個巨集指令。點選:是。

raw-image

ChatGPT 提供的 VBA 完整程式

Option Explicit

' ====== 入口:選資料夾後匯入,每張圖一張投影片 ======
Public Sub ImportPictures_OnePerSlide()
Dim folderPath As String
folderPath = PickFolder()
If folderPath = "" Then Exit Sub

Dim files As Collection
Set files = GetImageFilesSorted(folderPath)

If files.Count = 0 Then
MsgBox "此資料夾找不到圖片檔(jpg/png/gif/bmp/tif/webp)。", vbExclamation
Exit Sub
End If

Dim pres As Presentation
Set pres = ActivePresentation

Dim i As Long
For i = 1 To files.Count
Dim sld As Slide
Set sld = pres.Slides.Add(pres.Slides.Count + 1, ppLayoutBlank)

Dim shp As Shape
Set shp = sld.Shapes.AddPicture( _
FileName:=CStr(files(i)), _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, Top:=0, Width:=-1, Height:=-1)

' 你可以二選一:
FitPictureContain shp, sld ' 完整顯示(不裁切),等比例縮放置中(推薦)
'FitPictureCover shp, sld ' 滿版填滿(會裁切),等比例縮放後裁切置中
Next i

MsgBox "完成!已匯入 " & files.Count & " 張圖片。", vbInformation
End Sub

' ====== 等比例縮放:完整顯示(Contain),不裁切,置中 ======
Private Sub FitPictureContain(ByVal pic As Shape, ByVal sld As Slide)
Dim sw As Single, sh As Single
sw = sld.Parent.PageSetup.SlideWidth
sh = sld.Parent.PageSetup.SlideHeight

pic.LockAspectRatio = msoTrue

' 先以寬為基準
pic.Width = sw
' 若高度超出,改以高為基準
If pic.Height > sh Then
pic.Height = sh
End If

pic.Left = (sw - pic.Width) / 2
pic.Top = (sh - pic.Height) / 2
End Sub

' ====== 等比例縮放:滿版填滿(Cover),會裁切,置中 ======
Private Sub FitPictureCover(ByVal pic As Shape, ByVal sld As Slide)
Dim sw As Single, sh As Single
sw = sld.Parent.PageSetup.SlideWidth
sh = sld.Parent.PageSetup.SlideHeight

pic.LockAspectRatio = msoTrue

' 先以寬填滿
pic.Width = sw
' 若高度不足,改以高填滿
If pic.Height < sh Then
pic.Height = sh
End If

pic.Left = (sw - pic.Width) / 2
pic.Top = (sh - pic.Height) / 2

' 裁切到投影片大小
With pic.PictureFormat.Crop
.Left = IIf(pic.Width > sw, (pic.Width - sw) / 2, 0)
.Right = IIf(pic.Width > sw, (pic.Width - sw) / 2, 0)
.Top = IIf(pic.Height > sh, (pic.Height - sh) / 2, 0)
.Bottom = IIf(pic.Height > sh, (pic.Height - sh) / 2, 0)
End With

pic.Left = 0
pic.Top = 0
pic.Width = sw
pic.Height = sh
End Sub

' ====== 取得資料夾內圖片檔(依檔名排序) ======
Private Function GetImageFilesSorted(ByVal folderPath As String) As Collection
Dim col As New Collection

Dim fso As Object, folder As Object, file As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(folderPath)

' 收集圖片檔
For Each file In folder.Files
Dim ext As String
ext = LCase$(fso.GetExtensionName(file.Name))

If ext = "jpg" Or ext = "jpeg" Or ext = "png" Or ext = "gif" Or _
ext = "bmp" Or ext = "tif" Or ext = "tiff" Or ext = "webp" Then
col.Add file.Path
End If
Next file

' 轉陣列排序(字典序)
Dim arr() As String
Dim i As Long
If col.Count > 0 Then
ReDim arr(1 To col.Count)
For i = 1 To col.Count
arr(i) = CStr(col(i))
Next i
QuickSortStrings arr, LBound(arr), UBound(arr)

Dim sorted As New Collection
For i = LBound(arr) To UBound(arr)
sorted.Add arr(i)
Next i
Set GetImageFilesSorted = sorted
Else
Set GetImageFilesSorted = col
End If
End Function

' ====== 字串 QuickSort(檔名排序用) ======
Private Sub QuickSortStrings(ByRef arr() As String, ByVal first As Long, ByVal last As Long)
Dim i As Long, j As Long
Dim pivot As String, tmp As String

i = first
j = last
pivot = arr((first + last) \ 2)

Do While i <= j
Do While arr(i) < pivot: i = i + 1: Loop
Do While arr(j) > pivot: j = j - 1: Loop
If i <= j Then
tmp = arr(i)
arr(i) = arr(j)
arr(j) = tmp
i = i + 1
j = j - 1
End If
Loop

If first < j Then QuickSortStrings arr, first, j
If i < last Then QuickSortStrings arr, i, last
End Sub

' ====== 選資料夾(Windows / Office 常用對話框) ======
Private Function PickFolder() As String
On Error GoTo EH

Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "請選擇圖片資料夾"
.AllowMultiSelect = False
If .Show <> -1 Then
PickFolder = ""
Else
PickFolder = .SelectedItems(1)
End If
End With
Exit Function

EH:
PickFolder = ""
End Function



留言
avatar-img
學不完.教不停.用不盡
121會員
114內容數
分享個人電腦教學,回答網友提問,解決資料處理與設計問題。
2026/02/01
ChatGPT GPT-5.2 現在支援更完整且高效率的檔案輸出功能,能夠將回覆內容直接轉換並產出為 Word、Excel、PowerPoint、PDF 等常用檔案格式。使用者不需要再額外複製貼上或進行繁瑣的轉檔步驟,就能立即取得結構完整、可直接編輯或分享的成品檔案。
Thumbnail
2026/02/01
ChatGPT GPT-5.2 現在支援更完整且高效率的檔案輸出功能,能夠將回覆內容直接轉換並產出為 Word、Excel、PowerPoint、PDF 等常用檔案格式。使用者不需要再額外複製貼上或進行繁瑣的轉檔步驟,就能立即取得結構完整、可直接編輯或分享的成品檔案。
Thumbnail
2026/02/01
在 Microsoft 的 Copilot 生態系中,也已能執行類似「代理程式」的應用情境。例如,Copilot 可以與 Canva 等第三方工具整合(ChatGPT 也是如此),代理使用者完成簡報製作,從版型選擇、內容生成到視覺設計,都能透過指令自動化處理。
Thumbnail
2026/02/01
在 Microsoft 的 Copilot 生態系中,也已能執行類似「代理程式」的應用情境。例如,Copilot 可以與 Canva 等第三方工具整合(ChatGPT 也是如此),代理使用者完成簡報製作,從版型選擇、內容生成到視覺設計,都能透過指令自動化處理。
Thumbnail
2026/02/01
有時在網路上會遇到某些 YouTube 歌曲影片無法下載歌詞,甚至根本找不到完整歌詞;但手動輸入這些冗長的文字實在相當耗時。於是,我決定派出 NotebookLM 來協助解決這個問題。接下來,就從一個 YouTube 網址開始吧!
Thumbnail
2026/02/01
有時在網路上會遇到某些 YouTube 歌曲影片無法下載歌詞,甚至根本找不到完整歌詞;但手動輸入這些冗長的文字實在相當耗時。於是,我決定派出 NotebookLM 來協助解決這個問題。接下來,就從一個 YouTube 網址開始吧!
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
數據經過蒐集、清理、分析等過程,就需要呈現洞見給持份者,才能夠發揮影響力,讓企業基於數據作出決策。當視覺化圖表與投影片都可以透過人工智慧協助或全數生成,在上場簡報的時候又應該如何把圖表和數據介紹給觀眾呢?
Thumbnail
數據經過蒐集、清理、分析等過程,就需要呈現洞見給持份者,才能夠發揮影響力,讓企業基於數據作出決策。當視覺化圖表與投影片都可以透過人工智慧協助或全數生成,在上場簡報的時候又應該如何把圖表和數據介紹給觀眾呢?
Thumbnail
「生成內容」已經是辦公室必備的競爭力,無論是文件、電郵、圖像、簡報,都有不同的生成應用。但你又是否知道,Excel本身也有生成內容的函數,讓你不用把算式往下拉、根據今天日期更新過去十二個月數據的圖表、甚至動態建立階梯式收費或稅項表格? 個人實戰的經驗是,用好Excel函數的秘訣,不在於把問題全
Thumbnail
「生成內容」已經是辦公室必備的競爭力,無論是文件、電郵、圖像、簡報,都有不同的生成應用。但你又是否知道,Excel本身也有生成內容的函數,讓你不用把算式往下拉、根據今天日期更新過去十二個月數據的圖表、甚至動態建立階梯式收費或稅項表格? 個人實戰的經驗是,用好Excel函數的秘訣,不在於把問題全
Thumbnail
作為商業顧問,分析案例時其中一個重要的考慮是,「我們是否在解決一個正確的問題」,以免花時間心思與客戶同走冤枉路。面對資訊圖表初稿的時候,你會否不假思索地立刻進行改造,而沒有先反問一下,「這是否一個正確圖表類型的選擇」?適逢星宇航空不久前上市,我就以上市前業績發表會的圖表作為教材來分析解拆。
Thumbnail
作為商業顧問,分析案例時其中一個重要的考慮是,「我們是否在解決一個正確的問題」,以免花時間心思與客戶同走冤枉路。面對資訊圖表初稿的時候,你會否不假思索地立刻進行改造,而沒有先反問一下,「這是否一個正確圖表類型的選擇」?適逢星宇航空不久前上市,我就以上市前業績發表會的圖表作為教材來分析解拆。
Thumbnail
在商業簡報中,我們需要闡述不同層面的資訊與概念,常用的視覺化工具就是流程圖與資訊圖。然而大家對SmartArt的印象,都是沉悶或是老套。這次的分享就是如何在SmartArt之上,發揮簡單易明的技巧,那怕沒有設計背景,你也可以輕鬆做到專業耐看的資訊圖,不用再四處搜尋模板來改善投影片設計。
Thumbnail
在商業簡報中,我們需要闡述不同層面的資訊與概念,常用的視覺化工具就是流程圖與資訊圖。然而大家對SmartArt的印象,都是沉悶或是老套。這次的分享就是如何在SmartArt之上,發揮簡單易明的技巧,那怕沒有設計背景,你也可以輕鬆做到專業耐看的資訊圖,不用再四處搜尋模板來改善投影片設計。
Thumbnail
之前示範過用Excel產出啞鈴圖,這一次我們繼續打破 #資訊視覺化 的迷思,軟體知識與編程技巧不一定是製作圖表的門檻。適逢 #台北捷運 踏進30年,我們就來看一下,如何在Excel製作出雙北捷運的路線圖,然後再配上不同的數據圖表,以顯示客量的分佈與變化。 鐵路或捷運路線圖,固然有專業軟體可
Thumbnail
之前示範過用Excel產出啞鈴圖,這一次我們繼續打破 #資訊視覺化 的迷思,軟體知識與編程技巧不一定是製作圖表的門檻。適逢 #台北捷運 踏進30年,我們就來看一下,如何在Excel製作出雙北捷運的路線圖,然後再配上不同的數據圖表,以顯示客量的分佈與變化。 鐵路或捷運路線圖,固然有專業軟體可
Thumbnail
資訊圖表的設計考量,在「美化」、「降噪」以外,亦需要檢查設計與要表達的訊息之間,是否有相輔相成的效果,還是會帶來誤會或錯覺。擅長資訊視覺化的國際級媒體,例如紐約時報、Visual Capitalist等,也會偶爾在處理設計時,忽略了相關的眉角。為什麼這些眉角是地雷,我們又怎樣能修正呢? 教材來
Thumbnail
資訊圖表的設計考量,在「美化」、「降噪」以外,亦需要檢查設計與要表達的訊息之間,是否有相輔相成的效果,還是會帶來誤會或錯覺。擅長資訊視覺化的國際級媒體,例如紐約時報、Visual Capitalist等,也會偶爾在處理設計時,忽略了相關的眉角。為什麼這些眉角是地雷,我們又怎樣能修正呢? 教材來
Thumbnail
隨著簡報的推進,在縱向結構以外,橫向展開的內容也是重要的組成部分。並排資料的展示很常見,例如是在時間線、目錄頁及內容細項。從簡單的一字排開,到配上並排圖示,到簡報模板常見的滙聚形狀,各種複雜性的處理均可。與其被模板的風格、形狀或項目數量所捆綁,就來解密滙聚形狀背後的做法,創造你和團隊專屬的資訊圖吧!
Thumbnail
隨著簡報的推進,在縱向結構以外,橫向展開的內容也是重要的組成部分。並排資料的展示很常見,例如是在時間線、目錄頁及內容細項。從簡單的一字排開,到配上並排圖示,到簡報模板常見的滙聚形狀,各種複雜性的處理均可。與其被模板的風格、形狀或項目數量所捆綁,就來解密滙聚形狀背後的做法,創造你和團隊專屬的資訊圖吧!
Thumbnail
在商業簡報中,資訊圖表有助於展示數據的趨勢。當要呈現多項數據的前後比較時,分項式的長條圖就很常見。如果我們想更視覺化地展示數據變化的幅度,讓觀眾一看便知道哪項差距最大,可改用啞鈴圖。你可能會說,Office預設圖表類型沒有啞鈴圖,需要用上其他軟體或編程吧?其實,單單運用Excel就可以造出啞鈴圖呢。
Thumbnail
在商業簡報中,資訊圖表有助於展示數據的趨勢。當要呈現多項數據的前後比較時,分項式的長條圖就很常見。如果我們想更視覺化地展示數據變化的幅度,讓觀眾一看便知道哪項差距最大,可改用啞鈴圖。你可能會說,Office預設圖表類型沒有啞鈴圖,需要用上其他軟體或編程吧?其實,單單運用Excel就可以造出啞鈴圖呢。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News