我正在尝试计算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
我无法解释为什么它有效,但它确实如此。