Visual Basic para Aplicaciones - Variables dentro de un campo Texto Largo - MEMO

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Roland

Variables dentro de un campo Texto Largo - MEMO

Publicado por Roland (2 intervenciones) el 20/02/2023 16:08:53
Buenas a todos!

Tengo una función que envía un email a través de outlook. Me gustaría que el cuerpo del email ( .body) lo cogiera de un campo que tengo en una tabla. Este campo es de tipo Texto Largo (antiguamente llamado MEMO), y en él, hay un texto que tiene en una determinada parte, dos palabras que tendrían que ser sustituidas por campos de otras tablas. Pongo un ejemplo:


Buenos días señor [NOMBRE_RESPONSABLE],
Le mandamos este correo con relación al asunto número [IDASUNTO] con fecha [FECHA_ASUNTO] blablablabla blablablabla blablablabla blablablabla blablablablablablablabla

Bien, pues lo que no se hacer, y no se si en access se puede, es que me sustituya las partes entre corchetes por el valor de los campos del registro correspondiente a cada email que tengo que enviar. Si en la tabla TBL_ASUNTO yo tengo IdAsunto, Nombre_Responsable, Fecha_Asunto, quiero que el correo que envio, me coja el texto que le indico (que esta guardado en una tabla) y dentro de ese mensaje, me sustituya las palabras entre corchetes por los campos corresondientes de ese registro.


Espero haberme sabido explicar.

Aguardo vuestras respuestas,
Gracias de antemano
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variables dentro de un campo Texto Largo - MEMO

Publicado por Antoni Masana (500 intervenciones) el 20/02/2023 16:54:37
Mira este código para que veas si te ayuda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Macro()
    Dim Texto As String, Nombre As String, Asunto As String, Fecha As String, _
        Campo_1 As String, Punt_1 As Integer, _
        Campo_2 As String, Punt_2 As Integer, _
        Campo_3 As String, Punt_3 As Integer
 
    Nombre = "Juan Fernandez Gutierrez"
    Asunto = "19.456"
    Fecha = "20/02/2023"
 
    Texto = "Buenos días señor [NOMBRE_RESPONSABLE]," & vbCrLf & _
            "Le mandamos este correo con relación al asunto número [IDASUNTO] con fecha [FECHA_ASUNTO] " & vbCrLf & _
            "blablablabla blablablabla blablablabla blablablabla blablablablablablablabla"
 
    Campo_1 = "[NOMBRE_RESPONSABLE]"
    Campo_2 = "[IDASUNTO]"
    Campo_3 = "[FECHA_ASUNTO]"
 
    Punt_1 = InStr(Texto, Campo_1): Texto = Left(Texto, Punt_1 - 1) & Nombre & Mid(Texto, Punt_1 + Len(Campo_1))
    Punt_2 = InStr(Texto, Campo_2): Texto = Left(Texto, Punt_2 - 1) & Asunto & Mid(Texto, Punt_2 + Len(Campo_2))
    Punt_3 = InStr(Texto, Campo_3): Texto = Left(Texto, Punt_3 - 1) & Asunto & Mid(Texto, Punt_3 + Len(Campo_3))
 
    MsgBox Texto
End Sub

Saludos.
\\//_
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 Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Variables dentro de un campo Texto Largo - MEMO

Publicado por Antoni Masana (500 intervenciones) el 20/02/2023 20:25:40
Se me ha colado un gazapo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Macro()
    Dim Texto As String, Nombre As String, Asunto As String, Fecha As String, _
        Campo_1 As String, Punt_1 As Integer, _
        Campo_2 As String, Punt_2 As Integer, _
        Campo_3 As String, Punt_3 As Integer
 
    Nombre = "Juan Fernandez Gutierrez"
    Asunto = "19.456"
    Fecha = "20/02/2023"
 
    Texto = "Buenos días señor [NOMBRE_RESPONSABLE]," & vbCrLf & _
            "Le mandamos este correo con relación al asunto número [IDASUNTO] con fecha [FECHA_ASUNTO] " & vbCrLf & _
            "blablablabla blablablabla blablablabla blablablabla blablablablablablablabla"
 
    Campo_1 = "[NOMBRE_RESPONSABLE]"
    Campo_2 = "[IDASUNTO]"
    Campo_3 = "[FECHA_ASUNTO]"
 
    Punt_1 = InStr(Texto, Campo_1): Texto = Left(Texto, Punt_1 - 1) & Nombre & Mid(Texto, Punt_1 + Len(Campo_1))
    Punt_2 = InStr(Texto, Campo_2): Texto = Left(Texto, Punt_2 - 1) & Asunto & Mid(Texto, Punt_2 + Len(Campo_2))
    Punt_3 = InStr(Texto, Campo_3): Texto = Left(Texto, Punt_3 - 1) & Fecha  & Mid(Texto, Punt_3 + Len(Campo_3))
 
    MsgBox Texto
End Sub


Otra forma de hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Macro()
    Dim Texto As String, a As Byte, Punt As Integer, Nuevo(3), Campo(3)
 
    Texto = "Buenos días señor [NOMBRE_RESPONSABLE]," & vbCrLf & _
            "Le mandamos este correo con relación al asunto número [IDASUNTO] con fecha [FECHA_ASUNTO] " & vbCrLf & _
            "blablablabla blablablabla blablablabla blablablabla blablablablablablablabla"
 
    Nuevo(1) = "Juan Fernandez Gutierrez"
    Nuevo(2) = "19.456"
    Nuevo(3) = "20/02/2023"
 
    Campo(1) = "[NOMBRE_RESPONSABLE]"
    Campo(2) = "[IDASUNTO]"
    Campo(3) = "[FECHA_ASUNTO]"
 
    For a=1 to 3
        Punt = InStr(Texto, Campo(a))
        Texto = Left(Texto, Punt - 1) & Nuevo(a) & Mid(Texto, Punt + Len(Campo(a)))
    Next
 
    MsgBox Texto
End Sub

Saludos.
\\//_
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 Roland

Variables dentro de un campo Texto Largo - MEMO

Publicado por Roland (2 intervenciones) el 01/03/2023 14:21:10
Me imaginaba algo as'i.

Muchisimas gracais Antoni!
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