簡體   English   中英

VBA 宏計算 MS Word 文檔中所有圖形占用的區域

[英]VBA macro to calculate area occupied by all figures in MS Word document

(我為我的英語道歉。)我正在為學生准備教科書,我需要計算 MS Word 文檔中所有數字所占的面積。 只有兩個數字的簡單示例:

圖 1:12 cm x 10 cm = 120 cm2 圖 2:8 cm x 10 cm = 80 cm2 總計:200 cm2

總數就足夠了,不必知道每個圖形的大小(但如果不是太復雜,可能會有所幫助)。 很多很多年前,我在 WordPerfect 6 for DOS 中編寫了這樣的宏——這很容易。 但是我對 VBA 的了解非常非常有限。 我非常努力地查看 VBA 幫助,但我不知道要尋找什么。 我還嘗試了 Google 等(當然還有 StackOverlow),但沒有找到任何提示。

我需要那個,因為在我們國家,教科書手稿的總大小(長度)計算為AA total = AA text + AA figures ,其中AA text = Chars in doc/36,000AA figures = area/2,300 AA 文本可以很容易地從文件、信息中計算出來,但沒有簡單的方法來計算 AA 數字。

另外,我的 MS Word 不是英文的(不確定這樣的 VBA 宏在不同語言版本的 MS Word 中是否正常工作)。 歡迎任何幫助。

非常感謝您提前。

吉里

macropod的回答對我來說很清楚,但我仍然對宏有問題。 (1) 可能是因為我的文檔中沒有任何內聯數字,宏在下一行(第二行)以錯誤結束。 錯誤消息為 91 號“ Object 變量或未設置塊變量”。 首先,我很困惑,得出了錯誤的結論:在宏開頭的某處缺少對Sizes變量的顯式賦值為零。 並以這種方式修改宏。

Sizes = Sizes + PointsToCentimeters(.Height) * PointsToCentimeters(.Width)  

(2) 后來我只使用了宏的前半部分:第一個循環( For Each Shp In.Shapes )。 現在宏運行沒有任何錯誤,但看起來宏看不到任何數字,最終消息是:文檔包含 0 個浮動形狀,其面積總計 0,00cm 我所有的數字都插入為: Insert > Pictures > This Device

我准備了極簡的 Word.docm 文檔(只有一頁,兩個數字和宏),以便更好地復制問題。 但即使在 Stackoverflow 的幫助中心,我也無法找到是否可以/可接受將此類文件添加到問題中。 我歡迎任何關於宏問題的建議。

這完全取決於你所說的“數字”是什么意思。 例如,以下宏獲取文檔正文中所有“圖像”的組合大小:

Sub Demo()
Dim Shp As Shape, iShp As InlineShape, Sizes As Single, i As Long
With ActiveDocument
  For Each Shp In .Shapes
    With Shp
      i = i + 1
      Sizes = Sizes + PointsToCentimeters(.Height) * PointsToCentimeters(.Width)
    End With
  Next
  For Each iShp In .InlineShapes
    With Shp
      i = i + 1
      Sizes = Sizes + PointsToCentimeters(.Height) * PointsToCentimeters(.Width)
    End With
  Next
End With
MsgBox "The document contains " & i & " Floating & Inline Shapes, whose area totals " & Format(Sizes, "0.00") & "cm" & Chr(178)
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM