Suman necesita usar una macro para insertar una imagen en la página 10 de un documento en particular. Se pregunta cuál es la mejor manera, dentro de la macro, de hacer esto.

Si desea que la imagen sea lo único en la página 10, entonces la tarea es bastante fácil: use la macro para ubicar la página 10, inserte la imagen y luego inserte un salto de página después de la imagen. Esto luego aumenta todo después de la imagen en una página, de modo que la antigua página 10 se convierte en la página 11, la página 11 se convierte en la página 12, y así sucesivamente.

Sub InsertImage1()

Dim PicPath As String

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

ActiveDocument.GoTo(What:=wdGoToPage, Count:=10).Select     Selection.InlineShapes.AddPicture FileName:=PicPath, _       LinkToFile:=False, SaveWithDocument:=True     Selection.InsertBreak Type:=wdPageBreak End Sub

La macro inserta la imagen como una forma en línea. Si lo prefiere, puede insertar la imagen como una forma flotante, lo que permitiría que el texto se envuelva alrededor de la imagen. La siguiente macro hace eso, además de centrar la imagen en el centro de la página:

Sub InsertImage2()

Dim PicPath As String     Dim aShape As Shape

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

ActiveDocument.GoTo(What:=wdGoToPage, Count:=10).Select     Set aShape = Selection.InlineShapes.AddPicture(FileName:=PicPath, _       LinkToFile:=False, SaveWithDocument:=True).ConvertToShape     With aShape         .WrapFormat.Type = wdWrapTight         .RelativeHorizontalPosition = wdRelativeHorizontalPositionPage         .RelativeVerticalPosition = wdRelativeVerticalPositionPage         .Top = wdShapeCenter         .Left = wdShapeCenter         .Select     End With End Sub

Si desea que su imagen reemplace una imagen existente (tal vez con una imagen actualizada), puede hacerlo utilizando una macro un poco más compleja.

La siguiente macro ubicará la primera imagen en la página deseada y la reemplazará con una forma en línea.

Sub ReplaceImage()

Dim r1 As Range     Dim r2 As Range     Dim nPages As Long     Dim nP As Long     Dim PicPath As String     Dim sTemp As String

PicPath = "C:\My Pictures\My Scans\scan0002.jpg"

nP = 10    ' Page number on which to replace the image

sTemp = ""

nPages = ActiveDocument.ComputeStatistics(statistic:=wdStatisticPages)

If nP > nPages Then         sTemp = "You are trying to go to a non-existent page"

Else         Set r1 = ActiveDocument.GoTo(What:=wdGoToPage, Count:=nP)

If nP = nPages Then             Set r2 = ActiveDocument.Range             r1.End = r2.End         Else             Set r2 = ActiveDocument.GoTo(What:=wdGoToPage, Count:=nP + 1)

r1.End = r2.Start - 2         End If         If r1.InlineShapes.Count = 0 Then             sTemp = "Page " & nP & " does not have an inline picture"

Else             r1.InlineShapes(1).Select             Selection.InlineShapes.AddPicture FileName:=PicPath, _               LinkToFile:=False, SaveWithDocument:=True         End If     End If     If sTemp > "" Then MsgBox sTemp End Sub

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (13139) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.