利用VBA宏批量解決Word中圖片大小、居中設置
阿新 • • 發佈:2019-03-24
next align 如果 ali nes vba als pre format
需求:經常閱讀網上的研報(沒錢買排版漂亮的高質量研報),有些需要保存的復制下來到word裏,圖片很大都超出word的邊界了,也沒有居中,手工一張張調整不現實,上百頁的研報,幾十張圖片。
解決方案:利用VBA宏批量解決。第一種方法經過測試,只是前面部分有些,後面部分無效,不知道何解。
以下是代碼:
Sub setpicsize() ‘設置圖片尺寸 ‘第一種方法,經測試,文檔前面部分圖片有效,後面部分無效 ‘Dim n ‘圖片個數 ‘On Error Resume Next ‘忽略錯誤 ‘For n = 1 To ActiveDocument.InlineShapes.Count ‘InlineShapes 類型 圖片‘ActiveDocument.InlineShapes(n).Height = 198.45 ‘設置圖片高度為 7cm ‘ActiveDocument.InlineShapes(n).Width = 455 ‘單位是像素,設置圖片寬度 16cm ‘Next n ‘第二種方法,經測試,對整篇文檔圖片有效 Dim Shap As InlineShape For Each Shap In ActiveDocument.InlineShapes If Shap.Type = wdInlineShapePicture Then‘Shap.LockAspectRatio = msoFalse ‘不鎖定縱橫比 ‘MsgBox "圖片寬度" & Shap.Width‘測試,提示圖片大小以便判斷單位 If Shap.Width > 485 Then ‘此處單位是像素;如果圖片超出邊界才進行處理,否則圖片放大看起來不好看。 ‘Word中的尺寸單位默認是cm(厘米),而1cm等於28.35px(像素),由於代碼中換算設置的單位是px(像素)。所以就用尺寸高度或寬度值乘像素值。即為:7*28.35=198.45;寬度換算方法與此相同。Shap.Width = CentimetersToPoints(17) ‘此處單位是厘米。如果Word設置頁邊距為適中,則中間內容寬17.08CM ‘Shap.Height = CentimetersToPoints(7) ‘高度不設置,默認鎖定縱橫比 End If ‘設置圖片居中 Shap.Range.Select Selection.ClearFormatting ‘如果Word中圖片設置了行距不是1,比如固定值30磅,則無論圖片設置什麽格式,嵌入式會造成只顯示一部分圖片。 Selection.Range.Paragraphs.Alignment = wdAlignParagraphCenter End If Next End Sub
利用VBA宏批量解決Word中圖片大小、居中設置