我正在遍历word文档中的所有故事范围,以找到不符合公司标准的形状。当我找到这样的形状时,我想在它的页面右上角添加一个文本框。到目前为止,我只设法将它添加到第一页。
foreach (Word.InlineShape shape in storyRange.InlineShapes)
{
if (shape.Type == Word.WdInlineShapeType.wdInlineShapePicture)
{
if (shape.Width != CurrentWordApp.CentimetersToPoints(Constants.LogoWidth))
{
anchor = shape.Range;
shapePageNumber = (int)shape.Range.Information[Word.WdInformation.wdActiveEndPageNumber];
AddMarkerToPage(shapePageNumber, anchor);
}
}
}
这是AddMarkerToPage方法的摘录。我发现添加文本框的唯一地方是标题。我找到标题的唯一地方是通过section对象。但部分不等于页面。
Word.HeaderFooter header = anchor.Sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary];
if (!pageHasMarker)
{
Word.Shape tbx = header.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), pageRange);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
}
}
如何找到形状所在页面上的标题,或者让另一个对象允许我将文本框放在特定页面上(我可以从形状对象中获取该数字)
答案 0 :(得分:1)
请勿使用标题,请使用Document.Shapes
集合。
Word.Shape tbx = <document>.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromLeft),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerFromTop),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerWidth),
CurrentWordApp.CentimetersToPoints(Helper.errorMarkerHeight), anchor);
tbx.Name = "errorBox";
tbx.TextFrame.TextRange.Text = Resources.Strings.txtDesignCheckHeaderLogo;
我想你也需要这些:
tbx.RelativeVerticalPosition = WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;
tbx.RelativeHorizontalPosition = WdRelativeHorizontalPosition.wdRelativeHorizontalPositionColumn;