寫了一個巨集(Macro) 大陸用語叫"宏",
目前這個巨集只是寫暫時能執行,算是堪用,
有需要的朋友可以自行修改成更適合自己的程式。
首先,只要將新建的 Word 檔和要加入的圖檔放在同一個目錄下,
開啟 Word,選到巨集的 VB 編輯器
然後把以下的程式碼貼上編輯器
<<本範例使用 Microsoft Office Word 2003>>
Public Sub LoadPicture() Dim myRow As Integer Dim myCol As Integer myRow = InputBox("請輸入列數 (Rows)", "Row Size", 2) myCol = InputBox("請輸入欄位數 (Cols)", "Col Size", 3) With Application.FileSearch .FileName = "*.jpg" .LookIn = ActiveDocument.Path .Execute For I = 1 To .FoundFiles.Count ''插入圖片 Selection.InlineShapes.AddPicture FileName:= _ .FoundFiles(I), LinkToFile:=False, SaveWithDocument:=True ''在圖片右邊輸入逗號 Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.TypeText Text:="," Next I End With Selection.WholeStory '全選 ''轉換文字形態成表格 Selection.ConvertToTable Separator:=wdSeparateByCommas, NumColumns:=myCol, _ NumRows:=myRow, AutoFitBehavior:=wdAutoFitFixed ''最到第一頁,最前頭 Selection.HomeKey Unit:=wdLine Selection.HomeKey Unit:=wdStory ''呼叫副程式調整所有圖片大小 AllPictSize End Sub ''調整圖形大小 Sub AllPictSize() Dim picWidth As Integer Dim picHeight As Integer Dim oIshp As InlineShape picHeight = InputBox("請輸入照片高度", "Resize Picture", 128) picWidth = InputBox("請輸入照片寬度", "Resize Picture", 120) For Each oIshp In ActiveDocument.InlineShapes With oIshp .Height = picHeight .Width = picWidth End With Next oIshp End Sub
==== 2014/10/09 新增 2007 範例 START ====
Office 2007 的使用要多引用 Microsoft Scripting Runtime
首先,在巨集編輯畫面的上方,找到[工具] - [設定引用項目]
再來找到 [Microsoft Scripting Runtime] 並將它勾選起來。
最後把以下程式碼貼上
<<本範例使用 Microsoft Office Word 2007>>
Public Sub LoadPicture() Dim myRow As Integer Dim myCol As Integer Dim fso As New FileSystemObject Dim oFldr As Folder Dim oFl As File Dim strFileLocation As String myRow = InputBox("請輸入列數 (Rows)", "Row Size", 2) myCol = InputBox("請輸入欄位數 (Cols)", "Col Size", 3) strFileLocation = ActiveDocument.Path ' Use this snippet for office 2007 Set oFldr = fso.GetFolder(strFileLocation) 'intI = 1 For Each oFl In oFldr.Files If Right(oFl.Name, 4) = ".jpg" Then ''插入圖片 Selection.InlineShapes.AddPicture FileName:= _ strFileLocation & "\" & oFl.Name, LinkToFile:=False, SaveWithDocument:=True ''在圖片右邊輸入逗號 Selection.MoveRight Unit:=wdCharacter, Count:=1 Selection.TypeText Text:=" " End If Next ''呼叫副程式調整所有圖片大小 AllPictSize End Sub ''調整圖形大小 Sub AllPictSize() Dim picWidth As Integer Dim picHeight As Integer Dim oIshp As InlineShape picHeight = InputBox("請輸入照片高度", "Resize Picture", 250) picWidth = InputBox("請輸入照片寬度", "Resize Picture", 250) For Each oIshp In ActiveDocument.InlineShapes With oIshp .Height = picHeight .Width = picWidth End With Next oIshp End Sub
==== 2014/10/09 新增 2007 範例 END ====
執行巨集(Macro)
執行時會要求輸入一些設定值
載入的圖片會以圖檔的檔名順序依序插入,並建立表格。
當然,若是只要調整圖片大小,
執行巨集時就選擇 [AllPictSize]
這樣就不會重覆載入圖檔,只會調整大小囉~~
參考資料
調整圖片大小
批次插入圖片
請問一下2007以後的版本無法使用
回覆刪除With Application.FileSearch
這語法不知道如何修改較恰當
謝謝
不好意思,我並沒有安裝 2007 所以無法寫for 2007 的 VBA
回覆刪除不過上網到是可以查到不少人有這個問題,
MSDN討論區
MSDN說明
詳細內容請自行 GOOGLE 一下,
看來幾乎要改用 Scripting.FileSystemObject 這個物件才行。
先進你好:
回覆刪除有試著改寫,但是一直無法成功不知
道可否指導一下,若有打擾之處請見
諒,謝謝