Excel - Que linea agregar a mi codigo de loop...

 
Vista:

Que linea agregar a mi codigo de loop...

Publicado por Gabriel Marquez (3 intervenciones) el 12/10/2019 16:11:52
Buen dia amigos del foro, utilizo el siguinte codigo vba para insertar automaticamente imagenes en celdas especificas de una matrix de datos...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
If Not Intersect(Target, Range("B1")) Is Nothing Then
 
    On Error Resume Next
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
    ActiveSheet.Range("E4").Select
    Do While ActiveCell.Offset(0, -1).Value <> Empty
        Set RangoImagen = ActiveCell.Offset(0, -1)
        ActiveSheet.Pictures.Insert (RutaActual & "/CARPETAX/" & RangoImagen.Value & ".jpg")
        ActiveCell.Offset(1, 0).Select
    Loop
    Range("B4").Select
    On Error GoTo 0
    Exit Sub
 
End If

En terminos generales el codigo lee el nombre de un imagen en una columna, busca en una carpeta especifica en la ubicacion de del archivo y la coloca en la celda contigua. La pregunta es simple, que linea debo incetar antes del LOOP para que en caso de que no exista imangen disponible en la carpeta, seleccione una imagen predefinina y la ponga en su lugar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Que linea agregar a mi codigo de loop...

Publicado por Dirk (166 intervenciones) el 13/10/2019 01:32:51
Hola Gabriel, prueba con estas líneas antes de insertar la imagen

1
2
3
4
5
´si el archivo no existe
If Dir(RutaActual & "/CARPETAX/" & RangoImagen.Value & ".jpg") = "" Then
    ' cambia el valor de RangoImagen
    RangoImagen.Value  = NombreImagenPredefinida.Value
End If

Solución: usar la función Dir


Salu2
Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Que linea agregar a mi codigo de loop...

Publicado por Gabriel Marquez (3 intervenciones) el 14/10/2019 15:58:25
Amigo DIrk gracias por la linea, pero es mi culpa no haber puesto el codigo completo... al colocar tu codigo, genera un error en el modulo, aca dejo ambos para explicarme mejor y repito, la idea es que el codigo que inserta la imagen en loop a lo largo de una fila devuelva en caso de no haber una que corresponda al valor almacenado en la celda, una imagen especifica es decir, ejemplo "no-foto.jpg" que este almacenada en la carpeta "CARPETAX" junto con las fotos restantes.

Macro
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
'
'Arcan@ Master
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
    Dim CeldaActual As String
    Dim RutaActual As String
    Dim RangoImagen As Range
    Dim shp As Object
 
    CeldaActual = ActiveCell.Address
    RutaActual = ThisWorkbook.Path
 
    If Not Intersect(Target, Range("B1")) Is Nothing Then
 
        On Error Resume Next
        For Each shp In ActiveSheet.Shapes
            shp.Delete
        Next shp
        ActiveSheet.Range("E4").Select
        Do While ActiveCell.Offset(0, -1).Value <> Empty
            Set RangoImagen = ActiveCell.Offset(0, -1)
            ActiveSheet.Pictures.Insert (RutaActual & "/CARPETAX/" & RangoImagen.Value & ".jpg")
            ActiveCell.Offset(1, 0).Select
        Loop
        Range("B4").Select
        On Error GoTo 0
        Exit Sub
 
    End If
 
End Sub



Modulo2
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Macro2()
'Arcan@ Master
' Macro2 Macro
 
    ActiveSheet.Shapes.Range(Array("Bisel01")).Select
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "NO"
    Range("D3").Select
    ActiveSheet.Shapes.Range(Array("Bisel01")).Select
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "SI"
    Range("D3").Select
End Sub

Gracias....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Que linea agregar a mi codigo de loop...

Publicado por Dirk (166 intervenciones) el 14/10/2019 16:14:59
prueba con esto en la linea del insert
1
2
3
4
5
6
7
If Dir(RutaActual & "/CARPETAX/" & RangoImagen.Value & ".jpg") = "" Then
    'si el archivo no existe inserta la imagen no-foto.jpg
    ActiveSheet.Pictures.Insert (RutaActual & "/CARPETAX/no-foto.jpg")
Else
    ' linea original de tu codigo
    ActiveSheet.Pictures.Insert (RutaActual & "/CARPETAX/" & RangoImagen.Value & ".jpg")
End If


Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Que linea agregar a mi codigo de loop...

Publicado por Gabriel Marqueza (3 intervenciones) el 14/10/2019 18:41:41
Neeeeeei.... amigo pero gracias por el intento, ahora me da un error en la linea de "loop". Creo que tendre que escribir un nuevo codigo desde el inicio. Aunque de seguro la respuesta es tan sencilla que se esta riendo de mi...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Dirk
Val: 455
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Que linea agregar a mi codigo de loop...

Publicado por Dirk (166 intervenciones) el 14/10/2019 19:58:37
Gabriel, si quieres pasa el archivo para revisarlo

Dirk
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar