我正在尝试计算 Word 文档中图片形状的左侧位置,以便我可以将图像置于页面中央。为此,我需要知道左边距值和左右边距之间可用页面的宽度。
我的问题是,当我的宏运行时,会发生错误,因为 的值为ActiveDocument.PageSetup.PageWidth
9999999(我假设是某种 MaxValue)。
我想这可能是因为我的文档有多个部分,其中一些是 2 或 4 列部分,一些是横向部分(因此 PageSetup 值将从正常的仅纵向文档样式更改)。
有没有人有一些建议:
1)如何在我的宏中从这种情况中正确恢复?例如,我可以测试这些值并从文档的第一个纵向部分之一中的 PageSetup 值重置它们吗?
2) 如何在我编写文档时管理文档以避免使 PageSetup 值与我最初为文档设置的值以及手动设置横向部分的边距时的值“未定义”(不是正确的词)?
谢谢你。
一些代码,供有兴趣的人使用。当我在调试器中将鼠标悬停在 PageWidth 上时,我的宏会在 PageWidth 值上触发一个错误,例如“.PageWidth = < Object variable or With block variable not set.>”。
Dim usablewidth As Single
With ActiveDocument.PageSetup
usablewidth = .PageWidth - .leftmargin - .RightMargin
End With
Run Code Online (Sandbox Code Playgroud)
999999
当您查询的对象具有多个可能值时,就会出现该值(未定义)。正如您所描述的,当文档具有多个页面宽度不同的部分时就是这种情况。
要解决此问题,请查询Section
属性,而不是文档的属性。例如,要获取第一部分的页面宽度:
ActiveDocument.Sections(1).PageWidth
Run Code Online (Sandbox Code Playgroud)
也就是说,应该可以将图像的相对水平位置设置为在页面上居中......最简单的是使用 InlineShape 并将其 Range.ParagraphAlignment 设置为居中。