利用VBA宏批量解決Word中圖片大小、居中設置

需求:常常閱讀網上的研報(沒錢買排版漂亮的高質量研報),有些須要保存的複製下來到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
相關文章
相關標籤/搜索