Hoy, en respuesta a la cuestión lanzada por un lector, respecto a la manera de reemplazar textos, palabras o caracteres en una diapositiva de PowerPoint desde Excel, aprenderemos algunos métodos sencillos.
Partimos de la siguiente diapositiva (en una Presentación ya creada), con unos objetos insertados.
En concreto me interesa trabajar sobre el Cuadro de texto...
Como se observa tenemos el mismo texto escrito en dos objetos... sin embargo, en todo momento trabajaremos única y exclusivamente sobre el cuadro de texto (llamado 'CuadroTexto1').
Insertamos nuestra macro en un módulo estándar de nuestro proyecto de VB dentro de nuestro Libro de trabajo de Excel.
Al ejecutar la macro comprobamos cómo solo se ve afectado el contenido del cuadro de texto, y de acuerdo a nuestras tres instrucciones.
Los métodos a emplear, de entre los tres descritos, dependerá de la precisión que necesitemos... o de la información previa sobre la ubicación/localización de los textos a cambiar.
El resultado:
Partimos de la siguiente diapositiva (en una Presentación ya creada), con unos objetos insertados.
En concreto me interesa trabajar sobre el Cuadro de texto...
Como se observa tenemos el mismo texto escrito en dos objetos... sin embargo, en todo momento trabajaremos única y exclusivamente sobre el cuadro de texto (llamado 'CuadroTexto1').
Insertamos nuestra macro en un módulo estándar de nuestro proyecto de VB dentro de nuestro Libro de trabajo de Excel.
Sub ReemplazarDatoExcelaPPT() Dim oPPT As Object, oPrsn As Object, oSlide As Object Dim oShape1 As Object Dim ficheroPPT As String 'La ruta completa de la presentación de PPT ficheroPPT = "E:\excelforo\Excel_a_PPt.pptx" 'Definimos el objeto de trabajo PowerPoint On Error Resume Next Set oPPT = GetObject(, "PowerPoint.Application") 'controlamos posibles errores If Err.Number <> 0 Then 'y creamos el objeto, i.e., la presentación Set oPPT = CreateObject("PowerPoint.Application") End If Err.Clear On Error GoTo 0 'hacemos visble la aplicación (voluntario.. pero recomendable) oPPT.Visible = True 'Abriremos nuestra presentación Set oPrsn = oPPT.Presentations.Open(ficheroPPT) 'accedemos a la primera diapositiva... Set oSlide = oPrsn.Slides(1) '...y nos centramos en las autoformas, cuadros de texto, etc '(es importante tener controlado el destino previamente!!!) Set oShape1 = oSlide.Shapes("CuadroTexto 1") 'nos centramos en la segunda palabra contenida en el cuadro de texto Set rngTexto1 = oShape1.TextFrame.TextRange.Words(Start:=2, Length:=1) 'indicamos por que debemos cambiar esa palabra rngTexto1.Text = "Palabra_Cambiada " 'otra posibilidad es cambiar caracteres... 'por ejemplo, cambiamos los 5 primeros caracters Set rngTexto2 = oShape1.TextFrame.TextRange.Characters(Start:=1, Length:=5) 'indicamos por que debemos cambiar esa palabra rngTexto2.Text = "Cambio Excel " 'y otra posibilidad mas empleadno Reemplazar... 'por ejemplo, cambiamos el texto 'PPT' por 'PowerPoint' Set rngTexto3 = oShape1.TextFrame.TextRange.Replace(findwhat:="PPT", replacewhat:="PowerPoint") 'guardamos y cerramos la aplicación (PPT) 'oPPPrsn.Save 'oPPPrsn.Close 'oPPApp.Quit 'y liberamos memoria Set oPPT = Nothing Set oPrsn = Nothing Set oSlide = Nothing Set oShape1 = Nothing Set rngTexto1 = Nothing: Set rngTexto2 = Nothing: Set rngTexto3 = Nothing End Sub
Al ejecutar la macro comprobamos cómo solo se ve afectado el contenido del cuadro de texto, y de acuerdo a nuestras tres instrucciones.
Los métodos a emplear, de entre los tres descritos, dependerá de la precisión que necesitemos... o de la información previa sobre la ubicación/localización de los textos a cambiar.
El resultado:
Muchas gracias por tu aportación amigo. Hay forma de condicionar el color del texto según el valor (numérico)?
ResponderEliminarMuchas gracias!
Hola
Eliminarbastaría aplicar un Formato condicional (con el operador requerido) cambiando el formato de color de la fuente.
Slds
Hola, muchísimas gracias por la aportación.
ResponderEliminarUna duda,cómo se podría hacer el cambio imagen por imagen? Es decir, al ejecutar la macro en excel mando una gráfica como imagen a PPT pero el problema es que cada vez que ejecute la macro la imagen se va colocando encima y lo que me gustaría es que eliminase la anterior que hubiese en esa posición y colocase la nueva.
Muchas gracias!