Ayuda con Macro para Word 365

Anónimas
2024-11-07T00:22:00+00:00

Buenos días, tardes y noches

Me encuentro con el siguiente problema, espero estar escribiendo en el lugar correcto, si no, pido disculpas de antemano.

Después de mucho prueba y error pude hacer andar un macro para Word 365 que reemplaza una palabra por un párrafo. Mi problema es que si la palabra es ingresada en minúscula, el macro cumple con las órdenes respecto a qué debe estar en mayúscula y qué en minúscula. Pero si la palabra es ingresada en mayúsculas, todo aparece en mayúsculas.

Sub Cambio()

Dim rng As Range

Set rng = ActiveDocument.Content

Dim newtext As String, cuerpo As String

ActiveDocument.Select     

Selection.Font.Bold = False     

Selection.Font.Underline = False         

With rng.Find                 

   .ClearFormatting         

   .Text = "tx"                              

' Crear el texto de reemplazo

   newtext = "TÍTULO" & "^p"         

   cuerpo = "Cuerpo cuerpo" & "^p" & "O" & StrConv("tra parte del cuerpo.", vbLowerCase) & "^p"                                  

' Reemplazar el texto

  .Replacement.Text = newtext & cuerpo         

  .Wrap = wdFindContinue        

  .Execute Replace:=wdReplaceAll     

End With

End Sub

Entonces, si ingreso tx coloca:
TÍTULO

Cuerpo cuerpo

Otra parte del cuerpo

Pero si ingreso TX:

TÍTULO

CUERPO CUERPO

OTRA PARTE DEL CUERPO

No se si es un error del programa o qué hice mal en el macro.

Muchas gracias

Microsoft 365 y Microsoft Office | Instalación, canjeo, activación | Otros | Otros

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios
{count} votos
Respuesta aceptada por el autor de la pregunta
  1. Anónimas
    2024-11-07T08:57:20+00:00

    Esta respuesta se ha traducido automáticamente. Como resultado, puede haber errores gramaticales o expresiones extrañas.

    Hola, Cigo91

    Gracias por usar los productos de Microsoft y publicarlos en la comunidad.

    Entendemos el problema que está experimentando. Desafortunadamente,  VBA no es compatible con el foro de Microsoft Answers. Es más adecuado para publicar en Stack Overflow (solo en inglés).  https://stackoverflow.com/questions/tagged/vba Publique preguntas de programación de VBA en Stack Overflow mediante la etiqueta vba , junto con cualquier otra etiqueta relevante.Tenga en cuenta que Stack Overflow tiene pautas como requerir un título descriptivo, un enunciado del problema completo y conciso, y suficientes detalles para reproducir su problema. Las solicitudes de funciones o las preguntas demasiado amplias se consideran fuera de tema. Descargo de responsabilidad: Microsoft no ofrece garantías, implícitas o de otro tipo, y no es responsable de la información que reciba de los sitios vinculados de terceros ni de ningún soporte técnico relacionado con la tecnología.No podré ayudarte, pero dejaré esa pregunta abierta en caso de que uno de nuestros increíbles voluntarios tenga ideas para ti.

    Espero que la información anterior pueda ayudarte. No dude en enviar un mensaje si necesita más ayuda.

    Mucha suerte

    Aiden.C - MSFT |Especialista en soporte técnico de la comunidad de Microsoft

    1 persona ha encontrado útil esta respuesta.
    0 comentarios No hay comentarios
Respuesta aceptada por el autor de la pregunta
  1. Anónimas
    2024-11-07T16:24:45+00:00

    Te agradezco por la aclaración y por dejar abierta la pregunta, pese a que no era el lugar correcto. Por suerte pude resolverlo.

    Dejo el código corregido que funciona (por lo menos para lo que yo necesité) por si ayuda a alguien.

    Sub ReemplazarTX()

    Dim rng As Range 
    
    Set rng = ActiveDocument.Content 
    
    Dim myFindRange As Word.Range 
    
    Set myFindRange = ActiveDocument.StoryRanges(wdMainTextStory) 
    
    ActiveDocument.Select 
    
    Selection.Font.Bold = False 
    
    Selection.Font.Underline = False 
    

    With rng.Find

        .ClearFormatting 
    
        .Text = "tx" 
    
        .MatchCase = False 
    
        .Wrap = wdFindContinue 
    
        Do While .Execute 
    
            rng.Text = vbCrLf & "TÍTULO" & vbCrLf & "Cuerpo cuerpo." & vbCrLf & "Otro cuerpo"
    
       Loop 
    
    End With 
    

    End Sub

    Como no entiendo tanto de programación no puedo asegurar cómo ni por qué, pero des esta manera, no importa cómo escriba si "tx" o "TX", siempre devuelve el texto como fue ingresado.

    Pueden cerrar la pregunta, y muchas gracias

    0 comentarios No hay comentarios

1 respuesta adicional

Ordenar por: Muy útil
  1. Anónimas
    2024-11-11T08:06:49+00:00

    Esta respuesta se ha traducido automáticamente. Como resultado, puede haber errores gramaticales o expresiones extrañas.

    Hola, Cigo91

    Gracias por su solución. Marcaré su solución como respuesta para que más usuarios puedan verla.

    También puede publicar en el foro en cualquier momento. Haremos todo lo posible para responder a sus preguntas.

    Mucha suerte

    Aiden.C - MSFT |Especialista en soporte técnico de la comunidad de Microsoft

    0 comentarios No hay comentarios