需求:常常閱讀網上的研報(沒錢買排版漂亮的高質量研報),有些須要保存的複製下來到word裏,圖片很大都超出word的邊界了,也沒有居中,手工一張張調整不現實,上百頁的研報,幾十張圖片。測試
解決方案:利用VBA宏批量解決。第一種方法通過測試,只是前面部分有些,後面部分無效,不知道何解。spa
如下是代碼:code
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 = msoTrue '鎖定縱橫比,防止默認沒有鎖定修改了圖片變形;不鎖定縱橫比是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