Excel - ¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

 
Vista:
Imágen de perfil de Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 17/06/2020 12:39:20
Hola a tod@s

Llevo unos días con éste tema y no logro darle una solución, había conseguido insertar la imagen, pero luego hice modificaciones y ya no recuerdo como lo había hecho

Cabe destacar que uso copias y pegas y no tengo mucha idea, así que en realidad no se muy bien lo que hago y como lo hago

tengo el siguiente código:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim KeyCells As Range
Dim nn As String
Dim ne As String
Dim no As String
Dim ee As String
Dim oo As String
Dim ss As String
Dim se As String
Dim so As String
Dim rumbo As String
Dim Azimut As Single
Dim foto As String
 
Set KeyCells = Range("E4")
 
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
'MsgBox "Cell " & Target.Address & " has changed"
Azi = KeyCells
 
    If (Azi >= 0 And Azi <= 20) Then
        rumbo = "nn"
        ElseIf (Azi >= 21 And Azi <= 69) Then
            rumbo = "ne"
            ElseIf (Azi >= 70 And Azi <= 110) Then
                rumbo = "ee"
                ElseIf (Azi >= 111 And Azi <= 159) Then
                    rumbo = "se"
                    ElseIf (Azi >= 160 And Azi <= 200) Then
                        rumbo = "ss"
                        ElseIf (Azi >= 201 And Azi <= 249) Then
                            rumbo = "so"
                            ElseIf (Azi >= 250 And Azi <= 290) Then
                                rumbo = "oo"
                                ElseIf (Azi >= 291 And Azi <= 339) Then
                                    rumbo = "no"
                                    ElseIf (Azi >= 340 And Azi <= 360) Then
                                        rumbo = "nn"
                                        Else
                                            MsgBox "Azimut fuera de parámetros aceptables"
                                        End If
 
 
    'MsgBox rumbo
    End If
 
'Imagen-----------------
'Dim RutaCompleta As String
'RutaCompleta = LoadPicture(Form_Flechas & rumbo)
'......................
'    On Error GoTo Error
        'Sheets("Hoja1").Select
'        Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Firmas\" & ComboNombre.Text & ".jpg")
        'MsgBox Image2.Picture
        'MsgBox UserForm1
        'MsgBox UserForm1 & ".Im_"
        'MsgBox UserForm1 & ".Im_" & ApellidoPDF
        'Image2.Picture = LoadPicture(UserForm1 & ".Im_" & ApellidoPDF)
'        Image2.PictureSizeMode = fmPictureSizeModeStretch
    'Exit Sub
'Error:
 
 
        'Range("G50").Value = Me.Image2.Picture
'        Sheets("Hoja1").Select
'        ActiveSheet.Range("G50").Select
'        SavePicture Me.Image2.Picture, "mi_logo.jpg"
'        Worksheets("Hoja1").Pictures.Insert("mi_logo.jpg").Select
'            With Selection.ShapeRange
'                .LockAspectRatio = msoFalse
'                .Top = Range("G50").Top + 5
'                .Left = Range("G50").Left + 5
'                .Width = 77
'                .Height = 52
'            End With
 
'        Me.LabelFirma.Visible = True
'        Kill "mi_logo.jpg"
'......................
Image1.Picture = LoadPicture(Form_Flechas.fnn.Picture, "fnn.jpg")
'Image1.PictureSizeMode = fmPictureSizeModeStretch
 
'Worksheets("Hoja1").Pictures.Insert("fnn.jpg").Select
 
        SavePicture Image1.Picture, "mi_logo.jpg"
        Worksheets("Hoja1").Pictures.Insert("mi_logo.jpg").Select
 
            With Selection.ShapeRange
            'ActiveSheet.Shapes.AddPicture(Filename:=RutaCompleta, linktofile:=msoFalse, _
            'SaveWithDocument:=msoCTrue, Left:=0, Top:=0, Width:=-1, Height:=-1)
                .LockAspectRatio = 0
                .Top = ActiveCell.Top
                .Left = ActiveCell.Left
                .Width = ActiveCell.Width
                .Height = ActiveCell.Height
            End With
'----------------
 
 
End Sub

Como digo, son códigos encontrados por la red que intento adaptar de mi manera, a veces lo consigo, y otras, como ahora, no

Lo que pretendo es lo siguiente:
Tengo un formulario con 8 imágenes: (fnn, fne, fee, fse, fss, fso, foo, fno). Como imaginaréis, son las imágenes de flechas apuntando a las direcciones n, s, e, o, ne, se, so y no.

En la hoja de excel, cuando cambie el valor de una celda, en la que meto un rumbo en grados, en la celda inferior se debería de incrustar la imagen correspondiente a una de esas flechas en función de ese rumbo.

Tengo una variable llamada rumbo, que coge uno de los siguientes valores (nn, ee, ss, oo, ne, se, so, no) en función de los grados introducidos en la celda "E4", que será la que ejecute todo el código.

Alguien me podría ayudar y explicar como seleccionar la flecha del formulario que corresponda con la variable rumbo, donde ya tengo almacenada la dirección, y que en función de esa dirección me seleccione la flecha que corresponde y la incruste en la celda correspondiente, que es la "E7"

Otra cosa muy importante, sería que la imagen se adapte al tamaño de la celda, que por cierto es bastante pequeña.

Espero haberme explicado bien. Un saludo y muchas gracias
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 Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 18/06/2020 14:04:32
Por fin

ya he conseguido volver a introducir la imagen en la celda, me falta formatearla a las dimensiones de la celda

1
2
3
4
5
'
 
SavePicture FM_Flechas.fnn.Picture, "fnn.jpg"                   'original
 
'Worksheets("Hoja1").Pictures.Insert("fnn.jpg").Select     'original

Ahora me gustaría que:

en lugar de decir que flecha enviar a la celda "fnn", ese dato lo coja de la variable rumbo

Tengo una nueva variable ruta:
1
2
3
4
5
6
7
8
9
10
11
Dim ruta As String
Dim frm As String
Dim f As String
Dim foto As String
 
f = "f"
MsgBox f
frm = "FM_Flechas"
MsgBox frm
ruta = frm & "." & f & rumbo & "." & "Picture"
MsgBox ruta

Y me da el dato que deseo, pero no logro implementarlo en el código que me funciona, pues me arroja error.
Alguien me hecha una mano ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim ruta As String
Dim frm As String
Dim f As String
Dim foto As String
 
f = "f"
MsgBox f
frm = "FM_Flechas"
MsgBox frm
ruta = frm & "." & f & rumbo & "." & "Picture"
MsgBox ruta
 
foto = LoadPicture(ruta)
MsgBox foto
 
SavePicture foto, "imagen.jpg"
 
Worksheets("Hoja1").Pictures.Insert("imagen.jpg").Select

Me sale error de compilación, no coinciden los tipos, y lo marca en SavePicture foto, "imagen.jpg"
Marca foto en color azul
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 Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 18/06/2020 14:29:16
No entiendo ésto, jopeeee

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim ruta As String
Dim frm As String
Dim f As String
Dim foto As String
Dim rfoto As String
 
f = "f"
MsgBox f
frm = "FM_Flechas"
MsgBox frm
rfoto = f & rumbo & ".jpg"
MsgBox rfoto
ruta = frm & "." & f & rumbo & "." & "Picture"
MsgBox ruta
 
'SavePicture FM_Flechas.fnn.Picture, "fnn.jpg" ' original
SavePicture ruta, "imagen.jpg"
 
'Worksheets("Hoja1").Pictures.Insert("fnn.jpg").Select 'original
Worksheets("Hoja1").Pictures.Insert("imagen.jpg").Select

1
2
'SavePicture FM_Flechas.fnn.Picture, "fnn.jpg" ' original
SavePicture ruta, "imagen.jpg"

Aquí es donde me arroja el error, y lo que hago, es sustituir "FM_Flechas.fnn.Picture, "fnn.jpg", que funciona, por una variable que contiene exactamente lo mismo, salvo que cambio "fnn.jpg" por "imagen.jpg".

Pero me dice que los tipos no coinciden
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 Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 18/06/2020 21:43:23
Bien, otro progreso

Ya he conseguido adaptar el tamaño de la imagen a la celda que la contiene

1
2
3
4
5
6
7
8
9
10
SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"                     ' original
Worksheets("Hoja1").Pictures.Insert("imagen.jpg").Select        ' original
 
            With Selection.ShapeRange
                .LockAspectRatio = msoFalse
                .Top = Range("E7").Top + 1
                .Left = Range("E7").Left + 1
                .Width = Range("E7:f13").Width - 1
                .Height = Range("E7:f13").Height - 2
            End With

Solo me falta poder usar el valor de la variable rumbo para cambiar la imagen en función de los valores

Alguna idea ?
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 Andres Leonardo
Val: 3.829
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Andres Leonardo (1500 intervenciones) el 19/06/2020 16:29:54
Hola Roberto
Veo que vas avanzando solo , cree me que hoy se em complica y el fin de semana pues es dia del padre y toca hacer cosas
pero no quiero que sientas que nadie te ayuda o le importa tu comentario si deseas y aun necesitas ayuda al final del dia aca en Ecu son las 9:30 am podria ayudarte a revisarlo

Cuidate y sigue vas por buen camino.

Saludos
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 Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 19/06/2020 16:35:19
Pues muchísimas gracias

Y no, con considero que no interesen mis comentarios, jeje, faltaría más. Bastante agradecido estoy ya de tener un sitio donde poder preguntar.

Solo me queda el problema de la variable

1
2
SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"                     ' original
Worksheets("Hoja1").Pictures.Insert("imagen.jpg").Select        ' original

Poder sustituir el nombre de la imagen que yo le doy "fnn" por la concatenación de las variables f ("f") y rumbo, que coge el dato según la cifra introducida en la cenda E4

Y me trae por la calle de la amargura, porque mira que he probado cosas y no doy con la solución

Pues lo dicho, muchas gracias por la atención
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 Andres Leonardo
Val: 3.829
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Andres Leonardo (1500 intervenciones) el 19/06/2020 19:52:35
Que bueno

Lo revisamos mas luego no se de que pais seas soy de Ecuacdor digo para la coordinacion de horarios.

Si puedo te ayudo a optimizar temas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 19/06/2020 22:29:08
Pues soy de España
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 Roberto
Val: 37
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Roberto (28 intervenciones) el 20/06/2020 02:01:40
Muchísimas gracias Andrés, me has salvado la vida

tu solución que funciona a la perfección:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
If (azi >= 0 And azi <= 20) Then
        rumbo = "nn"
        SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"
        ElseIf (azi >= 21 And azi <= 69) Then
             SavePicture FM_Flechas.fne.Picture, "imagen.jpg"
            ElseIf (azi >= 70 And azi <= 110) Then
                SavePicture FM_Flechas.fee.Picture, "imagen.jpg"
                ElseIf (azi >= 111 And azi <= 159) Then
                    SavePicture FM_Flechas.fse.Picture, "imagen.jpg"
                    ElseIf (azi >= 160 And azi <= 200) Then
                        SavePicture FM_Flechas.fss.Picture, "imagen.jpg"
                        ElseIf (azi >= 201 And azi <= 249) Then
                            SavePicture FM_Flechas.fso.Picture, "imagen.jpg"
                            ElseIf (azi >= 250 And azi <= 290) Then
                                SavePicture FM_Flechas.foo.Picture, "imagen.jpg"
                                ElseIf (azi >= 291 And azi <= 339) Then
                                    SavePicture FM_Flechas.fno.Picture, "imagen.jpg"
                                    ElseIf (azi >= 340 And azi <= 360) Then
                                       SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"
                                        Else
                                            MsgBox "Azimut fuera de parámetros aceptables"
                                        End If
 
eternamente agradecido
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 Andres Leonardo
Val: 3.829
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

¡Ayuda plis! Coger foto de formulario según variable e insertarla en una celda

Publicado por Andres Leonardo (1500 intervenciones) el 20/06/2020 08:29:12
Roberto
Buenas tarde,
Pues espero que esta te funione de mejor Manera
Optimice el codigo de la hoja y el procedimioento lo mejore con un case.
Saludos

1
2
3
4
5
6
7
'Codigo en hoja1
Private Sub Worksheet_Change(ByVal Target As Range)
 On Error Resume Next
    x = Target.Row
    x = x - 4
    If x Mod 10 = 0 Then Flechas Target
End Sub

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
'Codigo en un modulo
 
Sub Flechas(r As Range)
'Recibe el rango que estamos seguros que es un valor correcto Y ahora si magia
 
azi = r.Value ' Obtengo el valor del rango y lo valido con un case
 
Select Case azi  'valido con un case cada caso
Case 0 To 20
    SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"
Case 21 To 69
    SavePicture FM_Flechas.fne.Picture, "imagen.jpg"
Case 70 To 110
    SavePicture FM_Flechas.fee.Picture, "imagen.jpg"
Case 111 To 159
    SavePicture FM_Flechas.fse.Picture, "imagen.jpg"
Case 160 To 200
    SavePicture FM_Flechas.fss.Picture, "imagen.jpg"
Case 201 To 249
     SavePicture FM_Flechas.fso.Picture, "imagen.jpg"
Case 250 To 290
    SavePicture FM_Flechas.foo.Picture, "imagen.jpg"
Case 291 To 339
    SavePicture FM_Flechas.fno.Picture, "imagen.jpg"
Case 340 To 360
    SavePicture FM_Flechas.fnn.Picture, "imagen.jpg"
Case Else
      MsgBox "Azimut fuera de parámetros aceptables"
      Exit Sub 'Salgo para no pegar cualquier cosa
End Select
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar