<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.open-office.es/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://wiki.open-office.es/index.php?action=history&amp;feed=atom&amp;title=Macros_en_Basic_para_OpenOffice_Impress</id>
		<title>Macros en Basic para OpenOffice Impress - Historial de revisiones</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.open-office.es/index.php?action=history&amp;feed=atom&amp;title=Macros_en_Basic_para_OpenOffice_Impress"/>
		<link rel="alternate" type="text/html" href="https://wiki.open-office.es/index.php?title=Macros_en_Basic_para_OpenOffice_Impress&amp;action=history"/>
		<updated>2026-06-04T02:16:07Z</updated>
		<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wiki.open-office.es/index.php?title=Macros_en_Basic_para_OpenOffice_Impress&amp;diff=14402&amp;oldid=prev</id>
		<title>Salva en 13:18 22 jun 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-office.es/index.php?title=Macros_en_Basic_para_OpenOffice_Impress&amp;diff=14402&amp;oldid=prev"/>
				<updated>2016-06-22T13:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Menu|cat=Basic|Titulo=Macros para Apache OpenOffice Impress|vers=4.1.x}}&lt;br /&gt;
&amp;lt;seo title=&amp;quot;Macros en Basic para Impress - Apache OpenOffice Basic&amp;quot; &lt;br /&gt;
metakeywords=&amp;quot;macro,basic,impress,starbasic,manual,curso,tutorial,open,office,openoffice,apache openoffice,libreoffice&amp;quot; &lt;br /&gt;
metadescription=&amp;quot;Recopilación de macros en lenguaje OOo Basic (StarBasic) para Apache OpenOffice y LibreOffice Impress&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{En Construccion|Seguimos agregando nuevas macros [[Image:En_construccion_2.gif|right|link=]] }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
=== Trabajando con presentaciones ===&lt;br /&gt;
*[[#Acceder a la presentación actual|Acceder a la presentación actual]]&lt;br /&gt;
*[[#Abrir una presentación existente|Abrir una presentación existente]]&lt;br /&gt;
*[[#Abrir una presentación con macros existente|Abrir una presentación con macros existente]]&lt;br /&gt;
*[[#Verifica si el documento es una presentación de Impress|Verifica si el documento es una presentación de Impress]]&lt;br /&gt;
*[[#Cambiar el modo de trabajo en Impress|Cambiar el modo de trabajo en Impress]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trabajando con diapositivas ===&lt;br /&gt;
*[[#Número de diapositivas|Número de diapositivas]]&lt;br /&gt;
*[[#Diapositiva activa|Diapositiva activa]]&lt;br /&gt;
*[[#Diapositiva por índice|Diapositiva por índice]]&lt;br /&gt;
*[[#Diapositiva por posición|Diapositiva por posición]]&lt;br /&gt;
*[[#Diapositiva por nombre|Diapositiva por nombre]]&lt;br /&gt;
*[[#Recorrer todas las diapositivas|Recorrer todas las diapositivas]]&lt;br /&gt;
*[[#Insertar nueva diapositiva|Insertar nueva diapositiva]]&lt;br /&gt;
*[[#Borrar diapositiva por índice|Borrar diapositiva por índice]]&lt;br /&gt;
*[[#Borrar diapositiva por posición|Borrar diapositiva por posición]]&lt;br /&gt;
*[[#Borrar diapositiva por nombre|Borrar diapositiva por nombre]]&lt;br /&gt;
*[[#Seleccionar diapositiva por índice|Seleccionar diapositiva por índice]]&lt;br /&gt;
*[[#Seleccionar diapositiva por posición|Seleccionar diapositiva por posición]]&lt;br /&gt;
*[[#Seleccionar diapositiva por nombre|Seleccionar diapositiva por nombre]]&lt;br /&gt;
*[[#Duplicar diapositiva por índice|Duplicar diapositiva por índice]]&lt;br /&gt;
*[[#Duplicar diapositiva por posición|Duplicar diapositiva por posición]]&lt;br /&gt;
*[[#Copiar diapositiva por índice|Copiar diapositiva por índice]]&lt;br /&gt;
*[[#Copiar diapositiva por posición|Copiar diapositiva por posición]]&lt;br /&gt;
*[[#Mover diapositiva por índice|Mover diapositiva por índice]]&lt;br /&gt;
*[[#Mover diapositiva por posición|Mover diapositiva por posición]]&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
=== Propiedades de las diapositivas ===&lt;br /&gt;
*[[#Índice de la diapositiva|Índice de la diapositiva]]&lt;br /&gt;
*[[#Posición de la diapositiva|Posición de la diapositiva]]&lt;br /&gt;
*[[#Nombre de la diapositiva|Nombre de la diapositiva]]&lt;br /&gt;
*[[#Nombre mostrado en la diapositiva|Nombre mostrado en la diapositiva]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Otras ===&lt;br /&gt;
&lt;br /&gt;
:*&amp;lt;big&amp;gt;'''[http://blog.open-office.es/impress/ + Más cosas para Impress en nuestro blog]'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Trabajando con presentaciones =&lt;br /&gt;
== Acceder a la presentación actual ==&lt;br /&gt;
Devuelve un objeto con la presentación actualmente abierta.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function Presentacion() As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Presentacion = ThisComponent&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abrir una presentación existente ==&lt;br /&gt;
Abre el documento indicado en '''''cRuta'''''; debe contener la ruta y el nombre del documento. Por ejemplo '''C:\User\Docs\Informe-ventas.odp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Opcionalmente se le puede pasar un array aOpciones() de tipo ''com.sun.star.bean.PropertyValue'', con las opciones deseadas para abrir el documento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function PresentacionAbrir( cRuta As String, Optional aOpciones() ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   cRuta = ConvertToURL( cRuta )&lt;br /&gt;
   If IsMissing( aOpciones ) Then aOpciones = Array()&lt;br /&gt;
   PresentacionAbrir = StarDesktop.LoadComponentFromURL( cRuta, &amp;quot;_blank&amp;quot;, 0, aOpciones() )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ejemplos:&lt;br /&gt;
:* Abrir una presentación Impress existente&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
   Dim miPresentacion As Object&lt;br /&gt;
   miPresentacion = PresentacionAbrir &amp;quot;C:\miPresentacionDeImpress.odp&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:* Abrir una presentación Impress pero que no sea visible (oculto):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
   Dim miPresentacion As Object, aOpc(1) As New com.sun.star.bean.PropertyValue&lt;br /&gt;
   aOpc(0).Name = &amp;quot;Hidden&amp;quot;&lt;br /&gt;
   aOpc(0).Value = TRUE&lt;br /&gt;
   miPresentacion = PresentacionAbrir &amp;quot;C:\miPresentacionDeImpress.odp&amp;quot;, aOpc() &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para conocer más propiedades al abrir un documento, ver {{Enlace|http://www.openoffice.org/api/docs/common/ref/com/sun/star/document/MediaDescriptor.html|Service MediaDescriptor}}.&lt;br /&gt;
&lt;br /&gt;
Para conocer más opciones de filtro, ver {{Enlace|https://wiki.openoffice.org/wiki/Documentation/DevGuide/Drawings/Filter_Options|Propiedad FilterOptions}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abrir una presentación con macros existente ==&lt;br /&gt;
Abre una presentación con macros activadas indicado en '''''cRuta'''''; debe contener la ruta y el nombre del documento. Por ejemplo '''C:\User\Docs\Informe-ventas.odp'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function PresentacionConMacrosAbrir( cRuta As String ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim aOpc(0) As New &amp;quot;com.sun.star.beans.PropertyValue&amp;quot;&lt;br /&gt;
   aOpc(0).Name = &amp;quot;MacroExecutionMode&amp;quot;&lt;br /&gt;
   aOpc(0).Value = 4&lt;br /&gt;
   PresentacionConMacrosAbrir = PresentacionAbrir( cRuta, aOpc() )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verifica si el documento es una presentación de Impress ==&lt;br /&gt;
Devuelve '''''Verdadero''''' si el objeto pasado como argumento es una presentación de Impress.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DocEsPresentacionImpress( oDoc As Object ) As Boolean&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DocEsPresentacionImpress = oDoc.SupportsService( &amp;quot;com.sun.star.presentation.PresentationDocument&amp;quot; )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cambia el modo de trabajo en Impress ==&lt;br /&gt;
Establece el modo de trabajo de la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
El modo de trabajo se puede establecer de alguna de estas formas:&lt;br /&gt;
&lt;br /&gt;
:* Por su nombre en castellano: Normal, Esquema, Notas, Folleto, Clasificador&lt;br /&gt;
:* Por su nombre en inglés: Drawing, Outline, Notes, Handout, Sorter&lt;br /&gt;
:* Por su código numérico: Normal = 0, Esquema = 2, Notas = 3, Folleto = 4, Clasificador = 1 &lt;br /&gt;
&lt;br /&gt;
Por defecto, activa el modo Normal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub PresentacionCambiarModo( oPresentacion As Object, xModo )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDispatch As Object, aModos() As String, nModo As Integer&lt;br /&gt;
   Select Case LCase( xModo )&lt;br /&gt;
   Case &amp;quot;normal&amp;quot;, &amp;quot;drawing&amp;quot;, 0      : nModo = 0&lt;br /&gt;
   Case &amp;quot;esquema&amp;quot;, &amp;quot;outline&amp;quot;, 2     : nModo = 2&lt;br /&gt;
   Case &amp;quot;notas&amp;quot;, &amp;quot;notes&amp;quot;, 3         : nModo = 3&lt;br /&gt;
   Case &amp;quot;folleto&amp;quot;, &amp;quot;handout&amp;quot;, 4     : nModo = 4&lt;br /&gt;
   Case &amp;quot;clasificador&amp;quot;, &amp;quot;sorter&amp;quot;, 1 : nModo = 1&lt;br /&gt;
   End Select&lt;br /&gt;
   ' normal, clasificador, esquema, notas, folleto&lt;br /&gt;
   aModos() = Array( &amp;quot;.uno:DrawingMode&amp;quot;, &amp;quot;.uno:DiaMode&amp;quot;, &amp;quot;.uno:OutlineMode&amp;quot;, &amp;quot;.uno:NotesMode&amp;quot;, &amp;quot;.uno:HandoutMode&amp;quot; )&lt;br /&gt;
   oDispatch = CreateUNOService( &amp;quot;com.sun.star.frame.DispatchHelper&amp;quot; )&lt;br /&gt;
   oDispatch.ExecuteDispatch( oPresentacion.CurrentController.Frame, aModos( nModo ), &amp;quot;&amp;quot;, 0, Array() )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Trabajando con diapositivas =&lt;br /&gt;
== Número de diapositivas ==&lt;br /&gt;
Devuelve el número de diapositivas que contiene la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivasNumero( oPresentacion As Object ) As Long&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivasNumero = oPresentacion.DrawPages.Count()&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diapositiva activa ==&lt;br /&gt;
Devuelve un objeto con la diapositiva activa de la presentación que se pasa como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaActiva( oPresentacion As Object ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaActiva = oPresentacion.CurrentController.CurrentPage&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diapositiva por índice ==&lt;br /&gt;
Devuelve un objeto con la diapositiva solicitada por su índice{{Llamada|Notas|1}} de la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function Diapositiva( oPresentacion As Object, nIndice As Long ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Diapositiva = oPresentacion.DrawPages( nIndice )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diapositiva por posición ==&lt;br /&gt;
Devuelve un objeto con la diapositiva solicitada por su posición{{Llamada|Notas|3}} de la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaPorPosicion( oPresentacion As Object, nPosicion As Long ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaPorPosicion = oPresentacion.DrawPages( nPosicion - 1 )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Diapositiva por nombre ==&lt;br /&gt;
Devuelve un objeto con la diapositiva solicitada por su nombre{{Llamada|Notas|2}} de la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
El nombre puede ser por ejemplo '''''page 3''''' si el nombre no se ha personalizado, '''''Gráfica de barras Enero''''' si es el nombre personalizado que se le asignó.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaPorNombre( oPresentacion As Object, cNombre As String ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaPorNombre = oPresentacion.DrawPages.GetByName( cNombre )&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Recorrer todas las diapositivas ==&lt;br /&gt;
Recorre todas las diapositivas de la presentación pasada como argumento. Este procedimiento sólo se incluye como ejemplo de cómo recorrer todas las diapositivas de una presentación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivasRecorrer( oPresentacion As Object )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object, oDiapositivas As Object, n As Long&lt;br /&gt;
   oDiapositivas = oPresentacion.DrawPages&lt;br /&gt;
&lt;br /&gt;
   For n=0 To oDiapositivas.Count()-1&lt;br /&gt;
      oDiapositiva = Diapositiva( oPresentacion, n )&lt;br /&gt;
      ' aquí tu código&lt;br /&gt;
      MsgBox &amp;quot;Diapositiva Index=&amp;quot; &amp;amp; n &amp;amp; &amp;quot; : Name=&amp;quot; &amp;amp; _&lt;br /&gt;
      oDiapositiva.Name &amp;amp;  &amp;quot; ; linkDisplayName=&amp;quot; &amp;amp; oDiapositiva.linkDisplayName&lt;br /&gt;
   Next&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Insertar nueva diapositiva ==&lt;br /&gt;
Inserta una nueva diapositiva en la presentación pasada como argumento. Devuelve un objeto con la nueva diapositiva insertada.&lt;br /&gt;
&lt;br /&gt;
Si no se especifica '''''nTrasIndice''''' se inserta tras la última diapositiva.&lt;br /&gt;
&lt;br /&gt;
Si se especifica, será el índice{{Llamada|Notas|1}} de la diapositiva tras la que deseamos insertar la nueva, teniendo en cuenta que:&lt;br /&gt;
&lt;br /&gt;
:* La primera diapositiva tiene índice 0&lt;br /&gt;
:* No se puede insertar una nueva diapositiva antes de la primera&lt;br /&gt;
:* Cualquier valor menor que 0 es equivalente a decir que se inserte tras la última diapositiva&lt;br /&gt;
&lt;br /&gt;
Opcionalmente se puede especificar un nombre{{Llamada|Notas|2}} para la nueva diapositiva, teniendo en cuenta que:&lt;br /&gt;
&lt;br /&gt;
:* Si el nombre ya existe, se añadirá un signo '''+''' al nombre tantas veces como sea necesario hasta obtener un nombre único.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaNueva( oPresentacion As Object, _&lt;br /&gt;
   Optional nTrasIndice As Long, Optional cNombre As String ) As Object&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   If IsMissing( nTrasIndice ) Then nTrasIndice = -1&lt;br /&gt;
   DiapositivaNueva = oPresentacion.DrawPages.insertNewByIndex( nTrasIndice )&lt;br /&gt;
   If Not IsMissing( cNombre ) Then &lt;br /&gt;
      PresentacionValidaNombreDiapositiva( oPresentacion, cNombre )&lt;br /&gt;
      DiapositivaNueva.Name = cNombre&lt;br /&gt;
   EndIf&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Procedimiento auxiliar para validar nombre de diapositiva ==&lt;br /&gt;
Este procedimiento verifica que el nombre pasado como argumento es único en la presentación; si no lo es, añadirá un el argumento '''''cSep''''' al nombre tantas veces como sea necesario hasta obtener un nombre único.&lt;br /&gt;
&lt;br /&gt;
Si se omite '''''cSep''''' o es una cadena vacía, se utilizará el signo '''+''' en su lugar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub PresentacionValidaNombreDiapositiva( oPresentacion As Object, ByRef cNombre As String, _&lt;br /&gt;
   Optional cSep As String )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   If IsMissing( cSep ) Or cSep = &amp;quot;&amp;quot; Then cSep = &amp;quot;+&amp;quot;&lt;br /&gt;
   While oPresentacion.DrawPages.HasByName( cNombre )&lt;br /&gt;
      cNombre = cNombre &amp;amp; cSep&lt;br /&gt;
   Wend&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Borrar diapositiva por índice ==&lt;br /&gt;
Elimina la diapositiva por su índice{{Llamada|Notas|1}} en la presentación pasada como argumento. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaBorra( oPresentacion As Object, nIndice As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object&lt;br /&gt;
   oDiapositiva = oPresentacion.DrawPages( nIndice )&lt;br /&gt;
   oPresentacion.DrawPages.remove( oDiapositiva )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Borrar diapositiva por posición ==&lt;br /&gt;
Elimina la diapositiva por su posición{{Llamada|Notas|3}} en la presentación pasada como argumento. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaBorraPorPosicion( oPresentacion As Object, nPosicion As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaBorra( oPresentacion, nPosicion - 1 )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Borrar diapositiva por nombre ==&lt;br /&gt;
Elimina la diapositiva por su nombre{{Llamada|Notas|2}} en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaBorraPorNombre( oPresentacion As Object, cNombre As String )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object&lt;br /&gt;
   oDiapositiva = DiapositivaPorNombre( oPresentacion, cNombre )&lt;br /&gt;
   oPresentacion.DrawPages.remove( oDiapositiva )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seleccionar diapositiva por índice ==&lt;br /&gt;
Selecciona la diapositiva por su índice{{Llamada|Notas|1}} en la presentación pasada como argumento. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaSeleccionar( oPresentacion As Object, nIndice As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object&lt;br /&gt;
   oDiapositiva = oPresentacion.DrawPages( nIndice )&lt;br /&gt;
   oPresentacion.CurrentController.setCurrentPage( oDiapositiva )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seleccionar diapositiva por posición ==&lt;br /&gt;
Selecciona la diapositiva por su posición{{Llamada|Notas|3}} en la presentación pasada como argumento. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaSeleccionarPorPosicion( oPresentacion As Object, nPosicion As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaSeleccionar( oPresentacion, nPosicion - 1 )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seleccionar diapositiva por nombre ==&lt;br /&gt;
Selecciona la diapositiva por su nombre{{Llamada|Notas|2}} en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaSeleccionarPorNombre( oPresentacion As Object, cNombre As String )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object&lt;br /&gt;
   oDiapositiva = DiapositivaPorNombre( oPresentacion, cNombre )&lt;br /&gt;
   oPresentacion.CurrentController.setCurrentPage( oDiapositiva )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Duplicar diapositiva por índice ==&lt;br /&gt;
Duplica la diapositiva identificada por su índice{{Llamada|Notas|1}} '''''nActual''''' en la presentación pasada como argumento. La nueva diapositiva se situará justo a continuación de la identificada.&lt;br /&gt;
&lt;br /&gt;
Opcionalmente se puede especificar un nombre{{Llamada|Notas|2}} para la nueva diapositiva, teniendo en cuenta que:&lt;br /&gt;
&lt;br /&gt;
:* Si el nombre ya existe, se añadirá un signo '''+''' al nombre tantas veces como sea necesario hasta obtener un nombre único.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaDuplica( oPresentacion As Object, nIndice As Long, Optional cNombre As String )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   Dim oDiapositiva As Object, oNueva As Object&lt;br /&gt;
   oDiapositiva = oPresentacion.DrawPages( nIndice )&lt;br /&gt;
   oNueva = oPresentacion.duplicate( oDiapositiva )&lt;br /&gt;
   If Not IsMissing( cNombre ) Then&lt;br /&gt;
      PresentacionValidaNombreDiapositiva( oPresentacion, cNombre )&lt;br /&gt;
      oNueva.Name = cNombre&lt;br /&gt;
   EndIf&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Duplicar diapositiva por posición ==&lt;br /&gt;
Duplica la diapositiva identificada por su posición{{Llamada|Notas|3}} '''''nPosicion''''' en la presentación pasada como argumento. La nueva diapositiva se situará justo a continuación de la identificada.&lt;br /&gt;
&lt;br /&gt;
Opcionalmente se puede especificar un nombre{{Llamada|Notas|2}} para la nueva diapositiva, teniendo en cuenta que:&lt;br /&gt;
&lt;br /&gt;
:* Si el nombre ya existe, se añadirá un signo '''+''' al nombre tantas veces como sea necesario hasta obtener un nombre único.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaDuplicaPorPosicion( oPresentacion As Object, nPosicion As Long, Optional cNombre As String )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaDuplica( oPresentacion, nPosicion - 1, cNombre )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copiar diapositiva por índice ==&lt;br /&gt;
Copia la diapositiva identificada por su índice{{Llamada|Notas|1}} '''''nActual''''' justo por delante de la diapositiva identificada por su índice '''''nNuevo''''' en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
No se admite el valor 0 para el argumento '''''nNuevo'''''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaCopia( oPresentacion As Object, nActual As Long, nNuevo As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   oDispatch = CreateUNOService( &amp;quot;com.sun.star.frame.DispatchHelper&amp;quot;)&lt;br /&gt;
   If nNuevo = 0 Then&lt;br /&gt;
      ' msgbox &amp;quot;Esta opción no es posible&amp;quot;&lt;br /&gt;
      Beep&lt;br /&gt;
   ElseIf nNuevo &amp;gt; nActual Then&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nActual&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Copy&amp;quot;,&amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo-1&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Paste&amp;quot;, &amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo&lt;br /&gt;
   ElseIf nNuevo &amp;lt; nActual Then&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nActual&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Copy&amp;quot;,&amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo-1&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Paste&amp;quot;, &amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo&lt;br /&gt;
   EndIf&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Copiar diapositiva por posición ==&lt;br /&gt;
Copia la diapositiva identificada por su posición{{Llamada|Notas|3}} '''''nPosActual''''' justo por delante de la diapositiva identificada por su posición '''''nPosNueva''''' en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
No se admite el valor 1 para el argumento '''''nPosNueva'''''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaCopiaPorPosicion( oPresentacion As Object, nPosActual As Long, nPosNueva As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaCopia( oPresentacion, nPosActual - 1, nPosNueva - 1 )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mover diapositiva por índice ==&lt;br /&gt;
Mueve la diapositiva identificada por su índice{{Llamada|Notas|1}} '''''nActual''''' justo por delante de la diapositiva identificada por su índice '''''nNuevo''''' en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
No se admite el valor 0 para el argumento '''''nActual''''' ni para el argumento '''''nNuevo'''''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaMueve( oPresentacion As Object, nActual As Long, nNuevo As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   oDispatch = CreateUNOService( &amp;quot;com.sun.star.frame.DispatchHelper&amp;quot;)&lt;br /&gt;
   If nNuevo = 0 OR nActual = 0 Then&lt;br /&gt;
      ' msgbox &amp;quot;Esta opción no es posible&amp;quot;&lt;br /&gt;
      Beep&lt;br /&gt;
   ElseIf nNuevo &amp;gt; nActual Then&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nActual&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Copy&amp;quot;,&amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Paste&amp;quot;, &amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaBorra( oPresentacion, nActual )&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo+1&lt;br /&gt;
   ElseIf nNuevo &amp;lt; nActual Then&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nActual&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Copy&amp;quot;,&amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo-1&lt;br /&gt;
      oDispatch.ExecuteDispatch(oPresentacion.CurrentController.Frame, &amp;quot;.uno:Paste&amp;quot;, &amp;quot;&amp;quot;, 0, Array())&lt;br /&gt;
      DiapositivaBorra( oPresentacion, nActual+1 )&lt;br /&gt;
      DiapositivaSeleccionar oPresentacion, nNuevo&lt;br /&gt;
   EndIf&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mover diapositiva por posición ==&lt;br /&gt;
Mueve la diapositiva identificada por su posición{{Llamada|Notas|3}} '''''nPosActual''''' justo por delante de la diapositiva identificada por su posición '''''nPosNueva''''' en la presentación pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
No se admite el valor 1 para el argumento '''''nPosActual''''' ni para el argumento '''''nPosNueva'''''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub DiapositivaMuevePorPosicion( oPresentacion As Object, nPosActual As Long, nPosNueva As Long )&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaMueve( oPresentacion, nPosActual - 1, nPosNueva - 1 )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Propiedades de las diapositivas =&lt;br /&gt;
== Índice de la diapositiva ==&lt;br /&gt;
Devuelve el el índice{{Llamada|Notas|1}} de la diapositiva pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
El índice en realidad no existe como propiedad, sino que la determinamos a partir de la propiedad de sólo lectura '''''Number'''''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaIndice( oDiapositiva As Object ) As String&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaIndice = oDiapositiva.Number - 1&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Posición de la diapositiva ==&lt;br /&gt;
Devuelve el la posición{{Llamada|Notas|3}} de la diapositiva pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
Esta propiedad es de sólo lectura.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaPosicion( oDiapositiva As Object ) As String&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaPosicion = oDiapositiva.Number&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nombre de la diapositiva ==&lt;br /&gt;
Establece o devuelve{{Llamada|Notas|4}} el nombre{{Llamada|Notas|2}} de la diapositiva pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
Si se pasa el argumento '''''cNombre''''' se establece como nombre de la diapositiva.&lt;br /&gt;
&lt;br /&gt;
:* Si no se le pasa ningún valor, actúa como función y devuelve el nombre actual.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaNombre( oDiapositiva As Object, Optional cNombre As String ) As String&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   If Not IsMissing( cNombre ) Then oDiapositiva.Name = cNombre&lt;br /&gt;
   DiapositivaNombre = oDiapositiva.Name&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nombre mostrado en la diapositiva ==&lt;br /&gt;
Devuelve el nombre{{Llamada|Notas|2}} que se muestra de la diapositiva pasada como argumento.&lt;br /&gt;
&lt;br /&gt;
El nombre mostrado se corresponde con la propiedad '''linkDisplayName''', de sólo lectura, que se localiza (se traduce) al idioma del documento, salvo que se haya establecido un nombre personalizado para la diapositiva.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function DiapositivaNombreMostrado( oDiapositiva As Object ) As String&lt;br /&gt;
'--------------------------------------------------------------------------------------------&lt;br /&gt;
   DiapositivaNombreMostrado = oDiapositiva.linkDisplayName&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Nota al pie|Notas|El índice de una diapositiva es su número ordinal en la presentación menos uno. La 1ª diapositiva tiene como índice el número 0. La 4ª diapositiva tiene como índice el número 3. Si se agrega o elimina una diapositiva, todas las diapositivas que la suceden renumeran automáticamente su índice.|El nombre de una diapositiva, a menos que se le haya establecido uno personalizado, es &amp;lt;u&amp;gt;la palabra inglesa '''page''' seguida del número de orden de la diapositiva en la presentación&amp;lt;/u&amp;gt;. El nombre mostrado al situar el ratón sobre la diapositiva es distinto; se corresponde con la propiedad '''linkDisplayName''', que se localiza (se traduce) al idioma del documento; así, la diapositiva 5ª que muestra como nombre '''''Página 5''''' si el idioma del documento es Español, internamente se denomina '''''page5''''' independientemente del idioma, y es el nombre que debemos utilizar para referirnos a la misma, salvo que se le haya asignado un nombre personalizado. Si se agrega o elimina una diapositiva, todas las diapositivas que la suceden se renombran automáticamente, salvo que se les haya establecido un nombre personalizado, en cuyo caso lo conservan.|La posición de una diapositiva coincide con su propiedad '''Number''', y es un número más que su índice.|Función que actúa como '''Set'''/'''Get''' según se pase o no el argumento opcional; si se pasa el argumento es una función '''Set''' que establece el valor; si no se pasa, es una función '''Get''' que devuelve el valor actual.}}&lt;br /&gt;
&lt;br /&gt;
{{Pie|Macros en Basic para OpenOffice Base|Macros en Basic para OpenOffice Base|Larga=5}}&lt;br /&gt;
[[Category:Ver.4.0.x]][[Category:Ver.3.4.x]][[Category:Ver.3.3.x]][[Category:Ver.3.2.x]][[Category:Ver.3.1.x]]&lt;/div&gt;</summary>
		<author><name>Salva</name></author>	</entry>

	</feed>