Suman ha bisogno di usare una macro per inserire un’immagine a pagina 10 di un particolare documento. Si chiede quale sia il modo migliore, all’interno della macro, per farlo.

Se si desidera che l’immagine sia l’unica cosa a pagina 10, l’attività è piuttosto semplice: utilizzare la macro per individuare la pagina 10, inserire l’immagine e quindi inserire un’interruzione di pagina dopo l’immagine. Questo quindi sposta tutto dopo l’immagine di una pagina, in modo tale che la vecchia pagina 10 diventa pagina 11, pagina 11 diventa pagina 12 e così via.

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 inserisce l’immagine come una forma in linea. Se preferisci, puoi inserire l’immagine come una forma fluttuante, che consentirebbe al testo di avvolgere l’immagine. La seguente macro fa questo, oltre a centrare l’immagine al centro della pagina:

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

Se desideri che la tua immagine sostituisca un’immagine esistente (magari con un’immagine aggiornata), puoi farlo utilizzando una macro un po ‘più complessa.

La seguente macro individuerà la prima immagine nella pagina desiderata e la sostituirà con una forma in linea.

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 è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (13139) si applica a Microsoft Word 2007, 2010, 2013, 2016, 2019 e Word in Office 365.