使用Excel VBA将Word形状固定在页面上粘贴的位置

使用Excel VBA将Word形状固定在页面上粘贴的位置,vba,excel,ms-word,Vba,Excel,Ms Word,我目前正在使用以下Excel VBA将1-3个形状粘贴到Word文档中我需要的位置,但是,它们并没有固定到我需要的位置,因此当我使用VBA添加更多文本时,它们会四处移动 有没有一种方法可以添加到下面的代码中,使形状固定到其粘贴位置,其方式与右键单击形状并选择固定其在页面上的位置(而不是随文本移动)等效。虽然代码足够灵活,可以在几步之后为第二个或第三个形状执行相同的任务,而不改变第一个形状的位置 Dim appWord Dim quoteWord Dim wordSelection Set ap

我目前正在使用以下Excel VBA将1-3个形状粘贴到Word文档中我需要的位置,但是,它们并没有固定到我需要的位置,因此当我使用VBA添加更多文本时,它们会四处移动

有没有一种方法可以添加到下面的代码中,使形状固定到其粘贴位置,其方式与右键单击形状并选择固定其在页面上的位置(而不是随文本移动)等效。虽然代码足够灵活,可以在几步之后为第二个或第三个形状执行相同的任务,而不改变第一个形状的位置

Dim appWord
Dim quoteWord
Dim wordSelection

Set appWord = CreateObject("Word.Application")
appWord.Visible = True

Set quoteWord = appWord.Documents.Add
Set wordSelection = appWord.Selection

...

Sheets("Quick Lookup").Shapes("QuoteProduct1Image").Copy
wordSelection.Range.PasteSpecial Link:=False, _
DataType:=wdPasteShape, _
Placement:=wdInLine, _
DisplayAsIcon:=False
Dim wdShape As Word.Shape
Set wdShape = quoteWord.Shapes(quoteWord.Shapes.Count)
wdShape.WrapFormat.Type = wdWrapSquare

**'!--fix shape1 in position here.**

 ...

'inserts more text and a table contouring to the image
 'product description text
 'With wordSelection
    .TypeParagraph
    .Font.Underline = False
    .Paragraphs.Alignment = 0
    .ParagraphFormat.SpaceAfter = 0
    .Font.Bold = True
    .TypeText ("Product Specs: " & ThisWorkbook.Sheets("Quick Lookup").Range("SelectedFolds") & " " & ThisWorkbook.Sheets("Quick Lookup").Range("SelectedCardSize"))
    .TypeParagraph
End With

 'insert Table
 ThisWorkbook.Sheets("Quick Lookup").Range("Product1Table").Copy
 wordSelection.Paste
 Application.CutCopyMode = False
 appWord.Activate

想法?

为了将形状固定到页面上的某个位置,有必要应用相对于页面元素(相对于文本元素)的
相对垂直位置。例如:

wdShape.RelativeVerticalPosition = Word.wdRelativeVerticalPositionPage   'or
wdShape.RelativeVerticalPosition = Word.wdRelativeVerticalPositionMargin
您似乎正在使用早期绑定,因此上面的方法会起作用。如果您使用的是后期绑定,那么等效的Long值将分别为1和0


请注意,在Word中,形状始终固定在某个范围内,通常是粘贴时最靠近所选内容的段落。形状将始终与其定位到的范围位于同一页面上。这意味着,如果编辑导致定位点移动到其他页面,则形状也将移动到该页面。无法将形状永久“锚定”到特定页面。

为了将形状固定到页面上的特定位置,必须应用相对于页面元素(相对于文本元素)的相对垂直位置。例如:

wdShape.RelativeVerticalPosition = Word.wdRelativeVerticalPositionPage   'or
wdShape.RelativeVerticalPosition = Word.wdRelativeVerticalPositionMargin
您似乎正在使用早期绑定,因此上面的方法会起作用。如果您使用的是后期绑定,那么等效的Long值将分别为1和0

请注意,在Word中,形状始终固定在某个范围内,通常是粘贴时最靠近所选内容的段落。形状将始终与其定位到的范围位于同一页面上。这意味着,如果编辑导致定位点移动到其他页面,则形状也将移动到该页面。无法将形状永久“锚定”到特定页面