Word VBA ActiveDocument.PageWidth = 9999999 in working docum



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

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

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

有没有人对以下方面有一些建议:

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

2( 如何在编写文档时管理文档,以避免使 PageSetup 值从我最初为文档设置的值以及手动设置横向部分的边距时"未定义"(不是正确的单词(?

谢谢。

一些代码,对于那些感兴趣的人。我的宏触发了 PageWidth 值上的错误,内容类似于".PageWidth =<对象变量或未设置块变量.>"当我在调试器中将鼠标悬停在 PageWidth 上时。

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

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

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

ActiveDocument.Sections(1).PageWidth

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

以防万一有人想知道,如果文档中有多个具有不同页面宽度的部分,如何始终获取光标位置的页面宽度:

而不是

ActiveDocument.PageSetup.pageWidth

Selection.Sections.PageSetup.pageWidth

这是我的老练工作:

Sub myTableCreatingCode()
'My long code
'
'
'
'In the end, call the sub "setAutoFit"
Call setAutoFit
End Sub
Private Sub setAutoFit()
Selection.Tables(1).AutoFitBehavior wdAutoFitWindow
End Sub

我无法解释为什么它有效,但它确实如此。

最新更新