Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

380
Vistas
Reemplazar texto en MS Word Add-in JS API

Estoy tratando de crear un complemento en el que tendré algunos campos de entrada y los valores de esos campos de entrada se agregarán a una plantilla de MS Word en una acción de botón.

La plantilla se parece a:

 Lorem ipsum dolor sit amet, consectetur adipiscing #value_no_1# elit. Integer placerat leo eget tortor malesuada, eu ultrices mauris #value_no_2# rutrum. Vestibulum vel mattis tellus #valuen_no_3#. Vivamus sit amet ante sit amet lacus #valuen_no_4# ullamcorper placerat. Donec pretium tincidunt orci, eget vestibulum eros #value_no_5# sollicitudin quis. Morbi euismod sed eros nec ultrices. Vestibulum nec ipsum at ipsum dictum sagittis et vel felis #valuen_no_6#. Aenean a varius erat. Vestibulum euismod eget lectus eu #value_no_7# scelerisque. Etiam vel bibendum est. Sed venenatis tortor non ex tempor hendrerit #value_no_8#. Cras auctor leo malesuada tortor tempor, at pharetra orci sollicitudin #value_no_9#.

La función para reemplazar el texto es la siguiente:

 function fillIn() { Word.run(function (context) { // Queue a command to search the document with a wildcard // for any string of characters that starts with 'to' and ends with 'n'. var searchResults = context.document.body.search("#*#", { matchWildcards: true }); // Queue a command to load the search results and get the font property values. context.load(searchResults, "text"); // Synchronize the document state by executing the queued commands, // and return a promise to indicate task completion. return context.sync().then(function () { console.log("Found count: " + searchResults.items.length); // Queue a set of commands to change the font for each found item. for (var i = 0; i < searchResults.items.length; i++) { console.log(searchResults.items[i].text); searchResults.items[i].insertText("Hello", "Replace"); return context.sync(); } // Synchronize the document state by executing the queued commands, // and return a promise to indicate task completion. return context.sync(); }); }).catch(function (error) { console.log("Error: " + JSON.stringify(error)); if (error instanceof OfficeExtension.Error) { console.log("Debug info: " + JSON.stringify(error.debugInfo)); } }); }

Para los primeros 3 o 4 valores, el texto se reemplaza correctamente, por lo que en lugar de #value_no_1# obtendré hello, pero en los últimos valores como #value_no_8# obtendré algo hello_no_8#. Supongo que esto sucede porque la cantidad de caracteres dentro de los rangos está cambiando debido al nuevo valor ingresado. Otro comentario sería que: searchResults.items[i].text devuelve el valor correcto #value_no_8#. Pero cuando llamo a replaceText obtengo hello_no_8# en lugar de hola. He investigado los documentos y no tengo ningún buen ejemplo sobre cómo abordar la escritura masiva en el documento. ¿Alguien tiene una idea sobre cómo solucionar esto u otra idea sobre cómo puedo abordar la sustitución masiva de texto?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Prueba esto:

 Word.run(async (context) => { var body = context.document.body; var options = Word.SearchOptions.newObject(context); options.matchCase = false var searchResults = context.document.body.search("Hello Finder", options); context.load(searchResults, 'text, font'); return context.sync().then(() => { var results = 'Found count: ' + searchResults.items.length + '; we highlighted the results.'; for (var i = 0; i < searchResults.items.length; i++) { searchResults.items[i].insertText("Hello Replaced", "Replace"); } return context.sync().then(function () { console.log(results); }); }); }) .catch(function (error) { console.log('Error: ' + JSON.stringify(error)); if (error instanceof OfficeExtension.Error) { console.log('Debug info: ' + JSON.stringify(error.debugInfo)); } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda