Tengo problemas para hacer que mi código VBA funcione para el encabezado central en la parte superior de la página en Excel. Quiero que cargue una imagen (de mi elección) en el encabezado.

Funciona para la celda "C2", para la que funciona mi código actualmente, pero no puedo averiguar cómo hacer que coloque la imagen en el encabezado en lugar de la celda "C2".

Mi código es el siguiente (y elige la imagen correcta que quiero agregar comparando los nombres y rutas en el disco duro con una lista desplegable. El script / código / macro se activa automáticamente cuando cambio de tipo en el menú desplegable lista):

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myPict As Picture
Dim PictureLoc As String

If Target.Address = Range("A2").Address Then

ActiveSheet.Pictures.Delete

PictureLoc = "K:\MyPictures\" & Range("A2").Value & ".png"

With Range("C2")
    Set myPict = ActiveSheet.Pictures.Insert(PictureLoc)
    myPict.Top = .Top
    myPict.Left = .Left
    myPict.ShapeRange.LockAspectRatio = msoTrue
    myPict.ShapeRange.Width = 157
    myPict.ShapeRange.Height = 18
    myPict.Placement = xlMoveAndSize
End With

End If

End Sub

¿Alguna sugerencia?

Gracias

0
GingerBoy 16 oct. 2018 a las 18:17

2 respuestas

La mejor respuesta

Necesita acceder al objeto PageSetup de esta manera:

With ActiveSheet.PageSetup
    .CentertHeaderPicture.Filename = PictureLoc
    .CenterHeader = "&G"
End With
2
Rory 16 oct. 2018 a las 15:31

Para acceder al encabezado de una hoja de trabajo (cada hoja de trabajo se hace por separado) use la propiedad PageSetup del objeto de la hoja de trabajo. Documentación oficial de MS

Allí puede cambiar CenterHeaderPicture:

Código de ejemplo de documentación de Microsoft

Sub InsertPicture() 

 With ActiveSheet.PageSetup.CentertHeaderPicture 
 .FileName = "C:\Sample.jpg" 
 .Height = 275.25 
 .Width = 463.5 
 .Brightness = 0.36 
 .ColorType = msoPictureGrayscale 
 .Contrast = 0.39 
 .CropBottom = -14.4 
 .CropLeft = -28.8 
 .CropRight = -14.4 
 .CropTop = 21.6 
 End With 

 ' Enable the image to show up in the center header. 
 ActiveSheet.PageSetup.CenterHeader = "&G" 

End Sub
1
L8n 16 oct. 2018 a las 15:32