Modificar macro que inserta imagen

Tengo una macro que me inserta una imagen si coincide con el nombre de una hoja.

La macro me excluye la hoja "Nueva plantilla", pero me gustaría saber como se añaden más hojas.

Un saludo,

Ramon.

Sub InsertaImagenMA(): On Error Resume Next
Application.ScreenUpdating = False
For Each hoja In Sheets
If Not hoja.Name = "Nueva plantilla" Then
hoja.Select
ActiveSheet.Shapes("CARACOLA").Delete
ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\imagenes\" & [B2] & ".png").Select
Selection.Name = "CARACOLA"
With Selection.ShapeRange
.LockAspectRatio = False
.Left = Range("D1").Left + 1
.Top = Range("D67").Top + 1
.Width = 300
.Height = 230
End With
ActiveCell.Select
End If
Next
End Sub

2 Respuestas

Respuesta
3

Si deseas añadir más hojas para excluirlas del proceso, ajusta la siguiente instrucción:

If Not hoja.Name = "Nueva plantilla" Then

Con la siguiente donde colocarás los nombres de tus hojas a excluir:

If hoja.Name <> "Nueva plantilla" And hoja.Name <> "SegundaHoja" And hoja.Name <> "TerceraHoja" Then

Sdos.

Elsa

Mi mejor recomendación: http://aplicaexcel.com/manuales

Respuesta
2

Te invito a ver el siguiente:

Consejos para empezar a programar.

--------------------

Puedes utilizar la sentencia Case, te muestro un ejemplo:

Sub InsertaImagenMA(): On Error Resume Next
  Application.ScreenUpdating = False
  For Each hoja In Sheets
    Select Case hoja.Name
      'excluir hojas
      Case "Nueva plantilla", "Reporte", "Resumen"
        '
      'todas las demás hojas serán incluidas
      Case Else
        hoja.Select
        ActiveSheet.Shapes("CARACOLA").Delete
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\imagenes\" & [B2] & ".png").Select
        Selection.Name = "CARACOLA"
        With Selection.ShapeRange
          .LockAspectRatio = False
          .Left = Range("D1").Left + 1
          .Top = Range("D67").Top + 1
          .Width = 300
          .Height = 230
        End With
        ActiveCell.Select
    End Select
  Next
End Sub

Te recomiendo:

Curso de macro: Método Find

Sal u dos Dante Amor

Case "Nueva plantilla", "Reporte", "Resumen"

error de sintaxis

Veo que tienes esta instrucción al inicio del código:

On Error Resume Next

No es recomendable utilizar esa instrucción. Revisa el siguiente vídeo, ahí explico las consecuencias de utilizarla.

Revisa este capítulo en el vídeo:

11:23 Consejos de lo que NO debes hacer

Curso de macros. Consejos para empezar a programar. - YouTube

--------------

Prueba el siguiente código, puse la instrucción On error Resume Next, en el lugar adecuado, también puse la instrucción On Error Goto 0, significa que verificará nuevamente cualquier error en la ejecución.

Sub InsertaImagenMA()
  Dim hoja As Worksheet
  Application.ScreenUpdating = False
  For Each hoja In Sheets
    Select Case hoja.Name
      'excluir hojas
      Case "Nueva plantilla", "Reporte", "Resumen"
        '
      'todas las demás hojas serán incluidas
      Case Else
        hoja.Select
        '
        On Error Resume Next
        ActiveSheet.Shapes("CARACOLA").Delete
        On Error GoTo 0
        '
        ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\imagenes\" & [B2] & ".png").Select
        Selection.Name = "CARACOLA"
        With Selection.ShapeRange
          .LockAspectRatio = False
          .Left = Range("D1").Left + 1
          .Top = Range("D67").Top + 1
          .Width = 300
          .Height = 230
        End With
        ActiveCell.Select
    End Select
  Next
End Sub

-------

Recomendaciones:

Curso de macros. Declarar variables en vba excel. - YouTube

Sal u dos Dante Amor

Case "Nueva plantilla",

Error de sintaxis

¿Estás copiando la macro completa?

Podrías poner aquí la macro completa o comparte tu archivo en google drive para revisarlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas