|
Responder ![]() |
Autor | |
Alenielxd ![]() Nuevo ![]() ![]() Unido: 13/Marzo/2021 Localización: Colombia Estado: Sin conexión Puntos: 5 |
![]() 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 |
|
![]() |
|
Mihura ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador ![]() ![]() Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 13756 |
![]() |
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). |
|
![]() |
|
prga ![]() Moderador ![]() Unido: 16/Noviembre/2004 Localización: España Estado: Sin conexión Puntos: 3493 |
![]() |
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 |
|
![]() |
|
Alenielxd ![]() Nuevo ![]() ![]() Unido: 13/Marzo/2021 Localización: Colombia Estado: Sin conexión Puntos: 5 |
![]() |
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
|
|
![]() |
|
prga ![]() Moderador ![]() Unido: 16/Noviembre/2004 Localización: España Estado: Sin conexión Puntos: 3493 |
![]() |
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
|
|
![]() |
|
Alenielxd ![]() Nuevo ![]() ![]() Unido: 13/Marzo/2021 Localización: Colombia Estado: Sin conexión Puntos: 5 |
![]() |
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 |
|
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |