![](/img/trans.png)
[英]How to merge a remote MS Word document with the active document in a VBA macro?
[英]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,000
和AA 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.