Excel to word Align picture

时间:2015-06-12 11:01:48

标签: excel vba excel-vba ms-word word-vba

我有一个由Excel构建并在Word中输出的报告,我还有一张名为"图片7"的图片。我的问题是,一旦将这个粘贴到excel的单词中,无论如何都要将图片居中对齐吗?

将图片作为一系列单元格的一部分进行复制。所以我需要在单词中引用图片。

它以细胞范围为中心,但在单词文档

中并不完全出现

编辑:目前我正在尝试这个

For Each shp In oDoc.Shapes
    If Left(shp.Name, 7) = "RN Logo" Then
        shp.Left = wdShapeCenter
    End If
Next

但这只是将图片放在左上方,我认为由于它粘贴在桌子上,我可能需要在它上面做一个绝对的位置。

编辑2:我找到了一个解决方法,但它只是一个大的If / Else和绝对定位,下面的代码段

Sub Update_RN_Logo_Location()

For Each shp In oDoc.Shapes
    If Left(shp.Name, 7) = "RN Logo" Then
        If Right(shp.Name, 1) = 1 Then
            shp.Left = oWord.CentimetersToPoints(2.4)
        Else
            shp.Left = oWord.CentimetersToPoints(0.75)
        End If
    ElseIf Left(shp.Name, 4) = "UKAS" Then
        If Right(shp.Name, 1) = 1 Then
            shp.Left = oWord.CentimetersToPoints(1.25)
        ElseIf Right(shp.Name, 1) = 2 Then
            shp.Left = oWord.CentimetersToPoints(2.5)
        ElseIf Right(shp.Name, 1) = 3 Then
            shp.Left = oWord.CentimetersToPoints(0)
        ElseIf Right(shp.Name, 1) = 4 Then
            shp.Left = oWord.CentimetersToPoints(2.5)
        End If
    End If
Next
End Sub

包含一些已移除的敏感信息的文档图片

Word Document In Question

4 个答案:

答案 0 :(得分:1)

我相信这里有两个问题。首先,单词中的图形有一个锚点。粘贴图形时,它的锚点放在Excel的单元格创建的表格中。这会导致定位。

其次,我建议使用Shape.RelativeHorizontalPosition属性,这将允许您的Shape.Left属性为您提供相对于另一个页面元素的真正中心对齐。

在下面的代码中,我将图形相对于文档的边距进行定位,但还有其他选择:

Word 2007 WdRelativeHorizontalPosition Enumeration

此枚举也适用于Word 2010和2013。

为确保正确放置徽标图形,请在粘贴到徽标和表格之前在文档顶部插入回车(确保此回车没有缩进或样式适用空间格式化):

 Selection.HomeKey Unit:=wdStory
 Selection.InsertBefore vbCr

然后粘贴到图形和表格中并运行以下代码:

 For Each shp In oDoc.Shapes
     If Left(shp.Name, 7) = "RN Logo" Then
         With shp
           .Select
           Selection.Cut
           Selection.HomeKey Unit:=wdStory
           Selection.Paste 'places graphic on carriage return before table
           .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
           .Left = wdShapeCenter
           .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
           '.Top = measurement of choice
         End With
     End If
 Next

答案 1 :(得分:0)

您是否尝试过将中间对齐默认段落(或添加文本框)并粘贴到图片中?保持图片与其他一切分开。您可能还需要设置文本运行。

这是稍微修改过的录制Word VBA

Sub Macro1()
    ActiveDocument.Paragraphs.Alignment = wdAlignParagraphCenter
    ActiveDocument.InlineShapes.AddPicture FileName:= _
        "C:\Users\user\Desktop\01.jpg", LinkToFile:=False, _
        SaveWithDocument:=True
End Sub

答案 2 :(得分:0)

你可以做一个" Control + A"选择所有,然后将所有内容全部放在中心位置:

Sub Testing()
    'Select All:
      Selection.WholeStory
    'Center Align All:
      Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
End Sub

答案 3 :(得分:0)

我更喜欢从Excel / Word外部插入图片; 您可以将它们准确地放在所需的段落中:

Sub M_snb()
  ActiveDocument.Paragraphs(5).Range.InlineShapes.AddPicture("G:\Excel_.bmp").Range.ParagraphFormat.Alignment = 1
End Sub