工作文档中的 Word VBA ActiveDocument.PageWidth = 9999999

Kev*_*vin 3 vba ms-word

我正在尝试计算 Word 文档中图片形状的左侧位置,以便我可以将图像置于页面中央。为此,我需要知道左边距值和左右边距之间可用页面的宽度。

我的问题是,当我的宏运行时,会发生错误,因为 的值为ActiveDocument.PageSetup.PageWidth9999999(我假设是某种 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)

Cin*_*ter 5

999999当您查询的对象具有多个可能值时,就会出现该值(未定义)。正如您所描述的,当文档具有多个页面宽度不同的部分时就是这种情况。

要解决此问题,请查询Section属性,而不是文档的属性。例如,要获取第一部分的页面宽度:

ActiveDocument.Sections(1).PageWidth
Run Code Online (Sandbox Code Playgroud)

也就是说,应该可以将图像的相对水平位置设置为在页面上居中......最简单的是使用 InlineShape 并将其 Range.ParagraphAlignment 设置为居中。

  • 使用该软件近 30 年......并帮助其他人解决问题:-) (2认同)