gpt4 book ai didi

vba - 使用 vba 编辑 Microsoft Word 标题中的 anchor 位置

转载 作者:行者123 更新时间:2023-12-04 19:57:23 24 4
gpt4 key购买 nike

我正在开发一个 VBA 宏,我自己只编写了它的一部分,用于 MS-Word,它改变了页面的方向,然后将之前页面的页眉和页脚复制到新页面和其他一些东西:

Selection.PageSetup.Orientation = wdOrientLandscape
ActiveDocument.Sections.Last.PageSetup.DifferentFirstPageHeaderFooter = False

ActiveDocument.Sections(ActiveDocument.Sections.Last.index - 1).Headers(wdHeaderFooterPrimary).Range.Select
Selection.Copy

ActiveDocument.Sections.Last.Headers(wdHeaderFooterPrimary).Range.Select
Selection.Paste

ActiveDocument.Sections.Last.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
ActiveDocument.Sections.Last.Footers(wdHeaderFooterPrimary).LinkToPrevious = False

formatHeader wdHeaderFooterPrimary
formatHeader wdHeaderFooterFirstPage

TextBox 中有一个文本锚定到标题。我现在要做的是改变它在“横向”方向的页面上的位置。

如何更改布局选项(见下图)?我找不到任何信息。

这是将页面方向更改为“横向”后我的文档的样子:

如您所见,TextBox 中侧面的段落不在中间。所以我想把它移高一点。您还可以在此图像中看到 anchor 。

这就是我作为用户在 Word 中的做法:

enter image description here enter image description here

最佳答案

关键是设置测量的起点 (RelativeHorizo​​ntalPosition),然后使用 Shape 的 Left 设置。相对于除 wdCharacter 之外的几乎所有内容,当文本被编辑时,水平位置在页面上将是静态的;在垂直方向上,wdLinewdParagraph 等同于使用“随文本移动”。

我通过为最后一个部分和形状声明和使用对象来简化您发布的代码。

此代码使用 Range.FormattedText 将内容从一个标题复制传输到另一个标题,而不是复制和粘贴。在可以使用的情况下(在任意两个单词范围之间),这比使用剪贴板更可取。

Dim secLast as Word.Section
Dim shp as Word.Shape

Set secLast = ActiveDocument.Sections.Last
secLast.PageSetup.Orientation = wdOrientLandscape
secLast.PageSetup.DifferentFirstPageHeaderFooter = False
secLast.Headers(wdHeaderFooterPrimary).Range.FormattedText = _
ActiveDocument.Sections(secLast.index - 1).Headers(wdHeaderFooterPrimary).Range.FormattedText

secLast.Headers(wdHeaderFooterPrimary).LinkToPrevious = False
secLast.Footers(wdHeaderFooterPrimary).LinkToPrevious = False

formatHeader wdHeaderFooterPrimary
formatHeader wdHeaderFooterFirstPage

Set shp = secLast.Range.Shapes(1)
shp.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
shp.Left = 33 ' Or you can use, for example CentimetersToPoints(1.4)
shp.RelativeVerticalPosition = wdRelativeVerticalPositionPage
shp.Top = CentimetersToPoints(14)

关于vba - 使用 vba 编辑 Microsoft Word 标题中的 anchor 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50391015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com