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

工作文档中的Word VBA ActiveDocument.PageWidth=999999,vba,ms-word,Vba,Ms Word,我试图计算Word文档中图片形状的左侧位置,以便将图像居中放置在页面上。要做到这一点,我需要知道左边距的值以及左右边距之间可用页面的宽度 我的问题是,当我的宏运行时,会发生错误,因为ActiveDocument.PageSetup.PageWidth的值是9999999(我假设是某种MaxValue) 我想这可能是因为我的文档有多个部分,其中一些是2列或4列部分,还有一些是横向部分(因此页面设置值将从正常的仅纵向文档样式更改) 有人对以下方面有什么建议吗 1) 如何在我的宏中正确地从这种情况中恢

我试图计算Word文档中图片形状的左侧位置,以便将图像居中放置在页面上。要做到这一点,我需要知道左边距的值以及左右边距之间可用页面的宽度

我的问题是,当我的宏运行时,会发生错误,因为
ActiveDocument.PageSetup.PageWidth
的值是9999999(我假设是某种MaxValue)

我想这可能是因为我的文档有多个部分,其中一些是2列或4列部分,还有一些是横向部分(因此页面设置值将从正常的仅纵向文档样式更改)

有人对以下方面有什么建议吗

1) 如何在我的宏中正确地从这种情况中恢复?例如,我可以测试这些值并从文档的第一个纵向部分的PageSetup值中重置它们吗

2) 如何在编写文档时对其进行管理,以避免将页面设置值与我最初为文档设置的值以及手动设置横向部分的页边距时设置的值“未定义”(不是正确的单词)

多谢各位

一些代码,供感兴趣的人使用。当我在调试器中将鼠标移到PageWidth上时,我的宏会在PageWidth值上触发类似“.PageWidth=<对象变量或未设置块变量.>”的错误

Dim usablewidth As Single
With ActiveDocument.PageSetup
   usablewidth = .PageWidth - .leftmargin - .RightMargin
End With

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

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

ActiveDocument.Sections(1).PageWidth

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

感谢您解释999999;这对理解很有帮助。哇,将ParagraphAlignment属性设置为“居中”是一个非常好的主意,而且也很简单!(但它对我不起作用,因为我的形状不是内联的)。我确实访问了当前的节号,以获得您描述的节(1).PageWidth值。成功了!非常感谢。很高兴你已经解决了@Kevin。我没有在一台机器前检查我对定位的建议,并且错误地记住了一个形状可能出现的情况,所以我删除了我答案的这一部分。-仅供参考:-)别担心-你友好的回答让我达到了我想去的地方,我很感激!我不知道怎么会有人知道所有这些细节!:-)近30年的软件工作。。。帮助他人解决问题:-)