选中文本框时Word PageSetup.LeftMargin返回9999999该如何解决
你遇到的返回值999999是Word COM对象模型中的wdUndefined常量,代表当前属性值未定义或存在多值冲突。即使文档只有1个节,只要当前选中内容是形状对象,Word就会将ActiveDocument.PageSetup的取值上下文切换为选中形状的关联属性,而非文档级的页面设置,因此会返回这个异常值。
另外需要注意,Word COM接口的所有集合都采用1基索引,你之前尝试用Sections[0]获取第一节的写法本身是错误的,正确的第一节索引为Sections[1],这也是你之前尝试变体写法不生效的核心原因之一。
你可以通过显式访问文档第一节的页面设置属性,绕开当前选中上下文的干扰,也可以额外指定形状的水平相对位置基准,保证对齐逻辑不会因为默认基准变动出现偏移。
修改后的代码示例:
// 显式读取第一节的左边距,完全绕开选中上下文的影响 Word.PageSetup firstSectionSetup = wapp.ActiveDocument.Sections[1].PageSetup; float leftMarginVal = firstSectionSetup.LeftMargin; foreach (Word.Shape shape in sel.ShapeRange) { // 可选配置:指定形状水平位置的参考基准为页面左边缘,避免默认参考其他基准导致偏移 shape.RelativeHorizontalPosition = Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage; shape.Left = leftMarginVal; }
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

