Guardar la información de búsqueda y reemplazo en una macro (Microsoft Word)
Simao tiene algunas macros que realizan muchas búsquedas y reemplazos. Sin embargo, cuando finalicen las macros, le gustaría restaurar la búsqueda y reemplazar los parámetros a los que estaban en vigor justo antes de ejecutar las macros. Entonces, Simao se pregunta dónde encontrar todas las propiedades para buscar y reemplazar para poder guardarlas al comienzo de cada macro y luego restaurarlas al final.
Como alude Simao, la «buena práctica» es hacer que su macro devuelva todo lo que cambia al estado en el que estaba antes de que se ejecutara la macro.
De esa manera, su macro no estropeará nada más que el usuario pueda estar haciendo.
La idea al implementar esta práctica es seguir estos pasos:
-
Averigüe qué cambiará su macro. Cree variables en las que almacenar todas las propiedades que se modificarán. Almacene las propiedades en las variables que creó. Haz tu trabajo . Restaura esas propiedades de las variables que estableciste anteriormente en el paso 3
La clave aquí es el paso 1. Si no puede averiguar qué cambiará su macro, no puede continuar con los otros pasos. Al realizar operaciones de buscar y reemplazar, hay una serie de objetos que pueden estar involucrados, y cada uno de ellos tiene una buena cantidad de propiedades.
Una forma fácil de resolver las cosas es simplemente grabar una macro que realiza la operación Buscar y reemplazar y luego mirar el código que produce la grabadora. Por ejemplo, grabé buscando la palabra «the»
y reemplazarlo con la palabra «EL». Cuando detuve la grabadora de macros y miré lo que creó, esta es la parte relevante de lo que vi:
Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "the" .Replacement.Text = "THE" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = True .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
Volveré a las dos primeras líneas de este código en un momento, pero observe todas las demás líneas producidas. Con el objeto .Find, se especifica un conjunto completo de propiedades. Estas son propiedades que corresponden a la configuración del cuadro de diálogo Buscar y reemplazar. Entonces, ahora tiene una lista de variables que necesita definir, como mínimo, para que pueda guardar la configuración de cada una de estas propiedades y luego restaurarlas.
Ahora volvamos a esas dos primeras líneas del código; representan la principal mosca del ungüento. El método .ClearFormatting elimina cualquier formato definido para la operación Buscar y reemplazar. Para ver qué propiedades se ven afectadas si defino el formato en Buscar y reemplazar, volví a grabar una macro de la misma operación de Buscar y reemplazar, pero esta vez especificando que el texto de reemplazo debe estar en negrita y subrayado. Todo lo que registró la grabadora fue igual, con la excepción de cuatro líneas de código agregadas justo después de la segunda línea que se muestra arriba:
With Selection.Find.Replacement.Font .Bold = True .Underline = wdUnderlineSingle End With
Estas son las líneas que especifican el formato que quería usar en el reemplazo. En el código anterior, la grabadora de macros muestra todas las propiedades del objeto .Find. En este caso, lo único que se registra es lo que estoy cambiando, que resulta estar en el objeto .Font. Desafortunadamente, hay otros objetos que se pueden especificar además del objeto .Font:. Paragraph, .Tabs, .Language, etc. Además, no solo se pueden establecer para el objeto .Find, sino también para el objeto .Replacement. Ese es el potencial de cientos de propiedades que deben almacenarse y restaurarse.
¿Suena imposible? Probablemente no sea imposible, pero definitivamente es desalentador. Usando el método de grabación de macros, necesitaría hacer una búsqueda (o reemplazar; los conceptos son los mismos) y cambiar el formato de cada propiedad de formato posible que se pueda encontrar o reemplazar.
Si tiene éxito en hacer eso, terminará con bastante lista.
Aquí, por ejemplo, está el código generado para el objeto Selection.Find.Font:
With Selection.Find.Font .Size = 14 .Bold = True .Underline = wdUnderlineSingle .StrikeThrough = True .DoubleStrikeThrough = False .Hidden = True .SmallCaps = True .AllCaps = False .Color = wdColorRed .Superscript = True .Subscript = False End With
En otras palabras, 11 propiedades diferentes para guardar y restablecer. ¡Pero espera!
¡Hay más! (Suena como un comercial de cuchillo Ginsu, ¿verdad?) No hice ningún cambio en la pestaña Avanzado del cuadro de diálogo Buscar fuente, lo que sin duda habría expandido esta lista. Puede hacerse una idea del número total de propiedades del objeto .Font consultando los documentos de Microsoft para conocer las propiedades de ese objeto. (Asegúrese de expandir el enlace Propiedades para el objeto .Font usando la lista desplegable a la izquierda de la página).
https://docs.microsoft.com/en-us/office/vba/api/word.font
Verá más de 50 propiedades allí. Y recuerde, hay un objeto .Font separado que pertenece al objeto .Replacement, y hay objetos pareados similares para otros elementos de formato (.Paragraph, .Tabs, etc., etc.).
Definitivamente abrumador.
Una vez que comprende cuántas propiedades se ven afectadas cuando realiza una operación de búsqueda y reemplazo, comienza a comprender por qué muchas personas renuncian a guardar y restaurar la configuración de formato para las operaciones. Es factible; Sin embargo, no es una empresa menor.
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.
link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
WordTips es su fuente de formación rentable en Microsoft Word.
(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (13762) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365.