** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Word
  Mensajes nuevos Mensajes nuevos RSS - Macro para reemplazar textos por imágenes en Word
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoMacro para reemplazar textos por imágenes en Word

 Responder Responder
Autor
Mensaje
Alenielxd Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 13/Marzo/2021
Localización: Colombia
Estado: Sin conexión
Puntos: 6
Enlace directo a este mensaje Tema: Macro para reemplazar textos por imágenes en Word
    Enviado: 13/Marzo/2021 a las 00:34
Cordial saludo a todos

Quisiera comentarles que he estado tratando de buscar una macro que me permita reemplazar ciertas palabras clave de un documento de Microsoft Word por imágenes con extensión ".png" que están alojadas en una carpeta del computador. Para evitar que la macro reemplace palabras de uso común, las palabras clave comienzan con los 4 caracteres "!!##". Lo que se quiere es que esta macro haga lo siguiente:

- Busque palabras clave que empiezan por los 4 caracteres especiales: "!!##" ejemplo: !!##MANZANA, !!##PERA, !!##COMPUTADOR, etc...
- Una vez que identifique las palabras clave deberá reemplazar estas por las imágenes que llevan el mismo nombre y que están en una misma carpeta, ejemplo: MANZANA.PNG, PERA.PNG, COMPUTADOR.PNG, etc...
- Las imágenes tienen que ajustarse al ancho del documento de manera automática.

Si pudieran ayudarme con este requerimiento se los agradecería mucho
Mil gracias de antemano.
Saludos


Editado por Alenielxd - 13/Marzo/2021 a las 00:35
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Enlace directo a este mensaje Enviado: 13/Marzo/2021 a las 08:41
Hola, bienvenido al foro.

En el foro hay ejemplos de sustitución con marcadores, usa el buscador para encontrarlos (no te olvides marcar que busque en cualquier fecha).


Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 13/Marzo/2021 a las 13:52
Hola.
El método find de word tiene el símbolo ! como reservado y como consecuencia la búsqueda se complica.
De todas formas prueba el siguiente código:

Sub ponefotos()
Dim miimagen As InlineShape
Dim miruta As String
    Selection.Find.ClearFormatting
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .Text = " ? [ ! ][ ! ] # # * , "  ''''''HAY QUE QUITAR LOS ESPACIOS
        .Forward = True
        .Wrap = wdFindAsk
        .MatchWildcards = True
    End With
  Do While Selection.Find.Execute
    miruta = Replace(Selection.Text, ",", ".png")
    miruta = ActiveDocument.Path & "\fotos\" & Replace(miruta, "!!##", "")
    If Dir(miruta) <> "" Then
      MsgBox (miruta)
''       Set miimagen = Selection.InlineShapes.AddPicture(FileName:=miruta, LinkToFile:=False, SaveWithDocument:=True)
''       miimagen.LockAspectRatio = msoTrue
''       miimagen.Height = CentimetersToPoints(2)
     End If
  Loop
End Sub

Este código es a título de ejemplo y se tendrá que depurar, optimizar etc etc  para su uso en el documento definitivo
Se supone que el nombre de las imágenes proviene de algo como "!!##xxxxxxxxxxxx," siendo xxxx el nombre de la foto y que empieza por los 4 caracteres mencionados y termina en una coma(,)
Adáptalo y ya comentas.
Un saludo a todos


editado por que aparecieron símbolos extraños en el .Text = "?##*,"


Editado por prga - 13/Marzo/2021 a las 13:59
Arriba
Alenielxd Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 13/Marzo/2021
Localización: Colombia
Estado: Sin conexión
Puntos: 6
Enlace directo a este mensaje Enviado: 15/Marzo/2021 a las 15:45
Hola prga

Muchísimas gracias por su colaboración. Lastimosamente yo no entiendo mucho sobre programación VBA, pero creo que se ha entendido bien la idea de lo que necesito. Con respecto al código inicial "!!##" no se preocupe no tengo ningún problema en cambiar los símbolos de admiración "!!" por arrobas "@@" de modo que el código inicial podría quedar así: "@@##".

Por otra parte, he probado la macro que me ha proporcionado, quité los espacios como usted me sugirió y cambié donde decía "\fotos\" por "C:\Users\Desktop\Imagenes\" (porque esta es la ruta donde tengo las imágenes), sin embargo, no he conseguido hacerlo funcionar ¿Qué estaré haciendo mal?

Agradezco su gentil ayuda
Saludos
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 15/Marzo/2021 a las 17:34
Hola.
Prueba así:
Sub ponefotos()
Dim miimagen As InlineShape
Dim miruta As String
    Selection.Find.ClearFormatting
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .Text = "?[!][!]##*,"  
        .Forward = True
        .Wrap = wdFindAsk
        .MatchWildcards = True
    End With
  Do While Selection.Find.Execute
    miruta = Replace(Selection.Text, ",", ".png")
    miruta = "C:\Users\Desktop\Imagenes\"  & Replace(miruta, "!!##", "")
    If Dir(miruta) <> "" Then
       Set miimagen = Selection.InlineShapes.AddPicture(FileName:=miruta, LinkToFile:=False, SaveWithDocument:=True)
       miimagen.LockAspectRatio = msoTrue
       miimagen.Height = CentimetersToPoints(2)
     End If
  Loop
End Sub

Suponiendo que la ruta de las fotos es  C:\Users\Desktop\Imagenes\
Está corregido de memoria.
Ya comentas
Un saludo a todos
Arriba
Alenielxd Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 13/Marzo/2021
Localización: Colombia
Estado: Sin conexión
Puntos: 6
Enlace directo a este mensaje Enviado: 15/Marzo/2021 a las 17:53
Hola prga

Muchísimas gracias por su ayuda, la macro funciona correctamente. Las imágenes salen un poco pequeñas pero quité esta parte de la macro: "miimagen.Height = CentimetersToPoints(2)" y sin esa instrucción se ajustan de manera automática al ancho de la página.

Saludos


Editado por Alenielxd - 15/Marzo/2021 a las 17:53
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable