0

これを使用してMS Wordヘッダーの画像を置き換えようとしています:

For Each tmp In ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes
    If tmp.Type = msoPicture Then
        Set dShape = tmp
    End If
Next
Dim w, h, t, l As Single
Dim lic As Long
Dim rhp As WdRelativeHorizontalPosition
Dim rvp As WdRelativeVerticalPosition

dShape.RelativeVerticalPosition = wdRelativeVerticalPositionMargin
dShape.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin

With dShape
    w = .Width
    h = .Height
    t = .Top
    l = .Left
    lic = .LayoutInCell
End With

Dim shp As Shape
Set shp = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes.AddPicture("C:\aa.jpg", False, True, l, t, w, h)
shp.RelativeVerticalPosition = rvp
shp.RelativeHorizontalPosition = rhp
shp.LayoutInCell = lic

dShape.Select
dShape.Delete

しかし、新しい画像は前の画像の位置に配置されません!
何が問題ですか?新しい画像を前の画像の位置に正確に配置するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

従うべきいくつかの手順:

新しい画像を追加しようとしても、古い画像はまだ位置にあります...古い画像を削除してください...;)

  • 削除する前に、古い画像の位置、サイズ、その他のプロパティ ( inline with text、 ..etc) を保存しますsquare
  • 古い画像を削除
  • top, left, width, heightおよび古い画像の値に一致するその他のプロパティを使用して新しい画像を挿入します

コードの変更:

Dim shp As Shape

'--other codes including the ones that saves properties
dShape.Delete '--hey you don't need to select to delete :)

Set shp = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)_ 
         .Shapes.AddPicture("C:\aa.jpg", False, True, l, t, w, h)
shp.RelativeVerticalPosition = rvp
shp.RelativeHorizontalPosition = rhp
shp.LayoutInCell = lic
于 2013-01-05T13:38:18.387 に答える