VBA中的Word页脚图像对齐方式

问题描述 投票:0回答:1

我尝试将签名放在word文档的页脚中,但无法将其对准页脚的右下角。有什么帮助吗?

我的代码:


Sub Macro1()

Dim SHP as String


FIRMADOC = "C:\Users\user\Pictures\1.png"


    If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
        ActiveWindow.Panes(2).Close
    End If

    If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
        ActivePane.View.Type = wdOutlineView Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    End If


ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter

    Set SHP = Selection.InlineShapes.AddPicture(FileName:=FIRMADOC, LinkToFile:=False, SaveWithDocument:=True)
        With SHP
            'AJUSTA A "ENFRENTE DEL TEXTO"
            .ConvertToShape
            ' MANTIENE EL RATIO
            .LockAspectRatio = msoTrue
            'AJUSTA A ANCHO 1 inch
            .Width = InchesToPoints(1)
    '        .Alignment = ' need this code for bottom-right, PLEASE

        End With
   ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End sub

这是图像在页脚中的外观

enter image description here

vba image ms-word alignment
1个回答
0
投票

因为Shape对象在页面上“浮动”,所以可以轻松定位它们。它们也可以轻松地(偶然地)重新定位。 Shape对象使用代码也可能很棘手。因此,我使用的一个有用的经验法则是:如果InlineShape有效,请使用它而不是Shape

下面概述了三种可能性;两个用于InlineShapes,一个用于Shape。

InlineShape可以使用两种不同的方法与页面右对齐(取决于段落中是否单独使用。)>

  1. 右对齐包含InlineShape的段落。当该段落没有其他内容时,这是适当的。仅从问题中提取代码来处理此问题:
  2. Dim SHP as InlineShape
    
    Set SHP = Selection.InlineShapes.AddPicture(FileName:=FIRMADOC, _
                        LinkToFile:=False, SaveWithDocument:=True)
    SHP.Range.ParagraphFormat.Alignment = wdAlignParagraphRight
    
  1. 如果该段在左边还有其他内容,那么在InlineShape之前带有TAB字符的右对齐TAB停止符将起作用。默认情况下,页脚具有两个TAB停靠点:一个停靠中心,第二个停靠右。
  2. 为此,我将更改问题中的整个代码,以优化在页脚中的工作。 (相同的方法适用于标头BTW)。宏记录器产生的代码可以模拟用户的操作,因此它实际上使用ActiveWindowSelection之类的东西打开了页脚(或页眉)。这些很难精确控制。使用实际的Word对象更加可靠。

想像Range对象,如不可见的选择。将整个页脚区域分配到一个范围(rng),然后向其中添加两个TAB字符(rng.Text = vbTab & vbTab)并添加签名。

Sub Macro1()
  Dim FIRMADOC as String
  Dim SHP as InlineShape
  Dim rng as Word.Range

  FIRMADOC = "C:\Users\user\Pictures\1.png"

  Set rng = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range 
  rng.Collapse wdCollapseStart 
  rng.Text = vbTab & vbTab 'position at second, right-aligned tab in the footer)  
  Set SHP = rng.InlineShapes.AddPicture(FileName:=FIRMADOC, LinkToFile:=False, SaveWithDocument:=True, Range:=rng)
  With SHP
    ' MANTIENE EL RATIO
    .LockAspectRatio = msoTrue
    'AJUSTA A ANCHO 1 inch
    .Width = InchesToPoints(1)
  End With
End sub
  1. 如果需要使用Shape对象,则需要LeftRelativeHorizontalPosition属性的组合。 wdShapePositionWdRelativeHorizontalPosition枚举的成员指定这些特殊设置。
Sub Macro1()
  Dim FIRMADOC as String
  Dim SHP as InlineShape
  Dim rng as Word.Range

  FIRMADOC = "C:\Users\user\Pictures\1.png"

  Set rng = ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range  
  rng.Collapse wdCollapseStart
  Set SHP = rng.InlineShapes.AddPicture(FileName:=FIRMADOC, LinkToFile:=False, SaveWithDocument:=True, Range:=rng)
  Set SHP = SHP.ConvertToShape
  With SHP
    ' MANTIENE EL RATIO
    .LockAspectRatio = msoTrue
    'AJUSTA A ANCHO 1 inch
    .Width = InchesToPoints(1)
    .Left = wdShapeRight '-999996
    .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin '0
  End With
End sub
© www.soinside.com 2019 - 2024. All rights reserved.