<?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</id>
		<title>Macros en Basic para OpenOffice - 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"/>
		<link rel="alternate" type="text/html" href="https://wiki.open-office.es/index.php?title=Macros_en_Basic_para_OpenOffice&amp;action=history"/>
		<updated>2026-06-04T02:23:47Z</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&amp;diff=13801&amp;oldid=prev</id>
		<title>Salva en 17:26 28 ago 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-office.es/index.php?title=Macros_en_Basic_para_OpenOffice&amp;diff=13801&amp;oldid=prev"/>
				<updated>2015-08-28T17:26:05Z</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|subcat=|Titulo=Macros en Basic para OpenOffice|vers=4.0.x}}&lt;br /&gt;
&amp;lt;seo title=&amp;quot;Macros en Basic para OpenOffice - Apache OpenOffice Basic&amp;quot; &lt;br /&gt;
metakeywords=&amp;quot;macro,basic,oobasic,ooobasic,starbasic,manual,curso,tutorial,open,office,openoffice,apache openoffice,libreoffice&amp;quot; &lt;br /&gt;
metadescription=&amp;quot;OpenOffice.org Basic, también conocido como OOo Basic o StarBasic, es el nombre de uno de los cuatro lenguajes de macros incluidos en la suites Apache OpenOffice y LibreOffice&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;menu-articulo&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;columnasx2&amp;quot;&amp;gt;&lt;br /&gt;
*[[#Versión de OpenOffice|Versión de OpenOffice]]&lt;br /&gt;
*[[#Idioma de OpenOffice|Idioma de OpenOffice]]&lt;br /&gt;
*[[#Macro para Deshacer (Undo)|Macro para Deshacer (Undo)]]&lt;br /&gt;
*[[#Determinar el tipo de documento|Determinar el tipo de documento]]&lt;br /&gt;
*[[#Determinar el tipo de filtro PDF|Determinar el tipo de filtro PDF]]&lt;br /&gt;
*[[#Obtener los filtros disponibles|Obtener los filtros disponibles]]&lt;br /&gt;
*[[#Recorrer todos los documentos abiertos|Recorrer todos los documentos abiertos]]&lt;br /&gt;
*[[#Guardar documento con Contraseña|Guardar documento con Contraseña]]&lt;br /&gt;
*[[#Ejecutar una aplicación o programa|Ejecutar una aplicación o programa]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*[[#Propiedades del documento|Propiedades del documento]]&lt;br /&gt;
*[[#Cambiar el número de documentos recientes|Cambiar el número de documentos recientes]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Versión de OpenOffice ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function Version() As String&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Devuelve la versión de OpenOffice&lt;br /&gt;
  Dim oSet, oCfgProvider&lt;br /&gt;
  Dim aAux(0) As New com.sun.star.beans.PropertyValue&lt;br /&gt;
&lt;br /&gt;
  oCfgProvider = createUnoService( _ &lt;br /&gt;
     &amp;quot;com.sun.star.configuration.ConfigurationProvider&amp;quot;)&lt;br /&gt;
  aAux(0).Name = &amp;quot;nodepath&amp;quot;&lt;br /&gt;
  aAux(0).Value = &amp;quot;/org.openoffice.Setup/Product&amp;quot;&lt;br /&gt;
  oSet = oCfgProvider.createInstanceWithArguments( _&lt;br /&gt;
     &amp;quot;com.sun.star.configuration.ConfigurationAccess&amp;quot;, aAux())&lt;br /&gt;
  Version = oSet.getByName(&amp;quot;ooSetupVersion&amp;quot;)&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Idioma de OpenOffice ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function Idioma( ByRef Idioma_Pais as string ) as string&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Devuelve el idioma y pais de la configuración regional de OpenOffice&lt;br /&gt;
  Dim oSet, oCfgProvider&lt;br /&gt;
  Dim aAux(0) As New com.sun.star.beans.PropertyValue&lt;br /&gt;
&lt;br /&gt;
  oCfgProvider = createUnoService( _&lt;br /&gt;
      &amp;quot;com.sun.star.configuration.ConfigurationProvider&amp;quot;)&lt;br /&gt;
  aAux(0).Name = &amp;quot;nodepath&amp;quot;&lt;br /&gt;
  aAux(0).Value = &amp;quot;/org.openoffice.Setup/L10N&amp;quot;&lt;br /&gt;
  oSet = oCfgProvider.createInstanceWithArguments( _&lt;br /&gt;
      &amp;quot;com.sun.star.configuration.ConfigurationAccess&amp;quot;, aAux())&lt;br /&gt;
&lt;br /&gt;
  Idioma_Pais = trim(oSet.getbyname(&amp;quot;ooLocale&amp;quot;))   'es-AR&lt;br /&gt;
  Idioma = lCase(Left(Idioma_Pais,2))              'es&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub Ejemplo()&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
  Dim Idioma_Pais as string&lt;br /&gt;
&lt;br /&gt;
  MsgBox &amp;quot;El idioma es: &amp;quot; &amp;amp; Idioma( Idioma_Pais )&lt;br /&gt;
  MsgBox &amp;quot;El idioma y país (variación) es: &amp;quot; &amp;amp; Idioma_Pais&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Macro para Deshacer (Undo) ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub Deshacer()&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Ejecuta el comando undo (deshacer)&lt;br /&gt;
' Deshace la última acción realizada por el usuario&lt;br /&gt;
  Dim oDispatch&lt;br /&gt;
  Dim oFrame&lt;br /&gt;
  oFrame = ThisComponent.CurrentController.Frame&lt;br /&gt;
  oDispatch = createUnoService(&amp;quot;com.sun.star.frame.DispatchHelper&amp;quot;)&lt;br /&gt;
  oDispatch.executeDispatch(oFrame,&amp;quot;.uno:Undo&amp;quot;, &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;
== Determinar el tipo de documento ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function GetTipoDocumento(optional oDoc as Object) As String&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Devuelve una cadena indicando el tipo de documento&lt;br /&gt;
' o una cadena vacía si no es detectado&lt;br /&gt;
&lt;br /&gt;
If IsMissing( oDoc ) then oDoc = ThisComponent&lt;br /&gt;
&lt;br /&gt;
On Local Error GoTo Error_NoDetectado&lt;br /&gt;
  If oDoc.SupportsService(&amp;quot;com.sun.star.sheet.SpreadsheetDocument&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;scalc&amp;quot;&lt;br /&gt;
  ElseIf  oDoc.SupportsService(&amp;quot;com.sun.star.text.TextDocument&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;swriter&amp;quot;&lt;br /&gt;
  ElseIf  oDoc.SupportsService(&amp;quot;com.sun.star.drawing.DrawingDocument&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;sdraw&amp;quot;&lt;br /&gt;
  ElseIf  oDoc.SupportsService(&amp;quot;com.sun.star.formula.FormulaProperties&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;smath&amp;quot;&lt;br /&gt;
  ElseIf  oDoc.SupportsService(&amp;quot;com.sun.star.presentation.PresentationDocument&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;simpress&amp;quot;&lt;br /&gt;
  ElseIf  oDoc.SupportsService(&amp;quot;com.sun.star.sdb.DatabaseDocument&amp;quot;) Then&lt;br /&gt;
    GetTipoDocumento = &amp;quot;sbase&amp;quot;&lt;br /&gt;
  End If&lt;br /&gt;
&lt;br /&gt;
Error_NoDetectado:&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Determinar el tipo de filtro PDF ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function GetFiltroPDF(optional oDoc as Object) As String&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Precisa la función GetTipoDocumento&lt;br /&gt;
' Devuelve una cadena indicando el tipo de filtro de exportación&lt;br /&gt;
' según el tipo de documento o una cadena vacía si no es detectado&lt;br /&gt;
&lt;br /&gt;
If IsMissing( oDoc ) then oDoc = ThisComponent&lt;br /&gt;
&lt;br /&gt;
  Select Case lCase( GetTipoDocumento( oDoc ) )&lt;br /&gt;
  Case &amp;quot;scalc&amp;quot; &lt;br /&gt;
    GetFiltroPDF = &amp;quot;calc_pdf_Export&amp;quot;&lt;br /&gt;
  Case &amp;quot;swriter&amp;quot;&lt;br /&gt;
    GetFiltroPDF = &amp;quot;writer_pdf_Export&amp;quot;&lt;br /&gt;
  Case &amp;quot;sdraw&amp;quot;&lt;br /&gt;
    GetFiltroPDF = &amp;quot;draw_pdf_Export&amp;quot;&lt;br /&gt;
  Case &amp;quot;smath&amp;quot;&lt;br /&gt;
    GetFiltroPDF = &amp;quot;math_pdf_Export&amp;quot;&lt;br /&gt;
  Case &amp;quot;simpress&amp;quot;&lt;br /&gt;
    GetFiltroPDF = &amp;quot;impress_pdf_Export&amp;quot;&lt;br /&gt;
  End Select&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Obtener los filtros disponibles ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub FiltrosDisponibles()&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
  Dim oFiltros As Object, aFiltros() As string, xFiltro As Object&lt;br /&gt;
  Dim n As Integer, k As Integer&lt;br /&gt;
  Dim lFiltroExp As Boolean&lt;br /&gt;
  Dim cExport As String, cImport As String&lt;br /&gt;
   &lt;br /&gt;
  oFiltros = createUnoService( &amp;quot;com.sun.star.document.FilterFactory&amp;quot; )&lt;br /&gt;
  aFiltros = oFiltros.getElementNames()&lt;br /&gt;
&lt;br /&gt;
  For n = LBound( aFiltros ) To UBound( aFiltros )&lt;br /&gt;
    lFiltroExp = False&lt;br /&gt;
    xFiltro = oFiltros.getByName( aFiltros(n) )&lt;br /&gt;
    For k = 0 To ubound( xFiltro )&lt;br /&gt;
      If xFiltro(k).Name = &amp;quot;Flags&amp;quot; Then&lt;br /&gt;
        lFiltroExp = ( xFiltro(k).Value mod 2 = 0 ) &lt;br /&gt;
        Exit For&lt;br /&gt;
      End If&lt;br /&gt;
    Next&lt;br /&gt;
  	&lt;br /&gt;
    If lFiltroExp Then&lt;br /&gt;
      cExport = cExport &amp;amp; aFiltros(n) &amp;amp; Chr(13)&lt;br /&gt;
    Else&lt;br /&gt;
      cImport = cImport &amp;amp; aFiltros(n) &amp;amp; Chr(13)&lt;br /&gt;
    End If&lt;br /&gt;
    &lt;br /&gt;
  Next&lt;br /&gt;
  MsgBox cExport&lt;br /&gt;
  MsgBox cImport&lt;br /&gt;
End Sub &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Recorrer todos los documentos abiertos ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function aDocumentosAbiertos()&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' devuelve una matriz con el título de todos los documentos abiertos&lt;br /&gt;
  Dim aDocs() as String, oDocs as Object, n as integer&lt;br /&gt;
  Dim oComponentes as Object&lt;br /&gt;
  &lt;br /&gt;
  oComponentes = StarDesktop.getComponents()&lt;br /&gt;
  oDocs = oComponentes.CreateEnumeration()&lt;br /&gt;
  &lt;br /&gt;
  Do While oDocs.hasMoreElements()&lt;br /&gt;
    oDoc = oDocs.NextElement()&lt;br /&gt;
    ReDim Preserve aDocs(n)&lt;br /&gt;
    aDocs(n) = oDoc.Title&lt;br /&gt;
    n = n + 1&lt;br /&gt;
  Loop&lt;br /&gt;
&lt;br /&gt;
  aDocumentosAbiertos = aDocs&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Guardar documento con Contraseña ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub Documento_GuardarConPassword( cRutayNombre As String, cClave As String )&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Guarda el documento actual con contraseña (clave, password)&lt;br /&gt;
  Dim aArgs(0) As New com.sun.star.beans.PropertyValue, cURL as string&lt;br /&gt;
&lt;br /&gt;
  aArgs(0).Name  =&amp;quot;Password&amp;quot;&lt;br /&gt;
  aArgs(0).Value = cClave&lt;br /&gt;
  cURL = ConvertToURL( cRutayNombre )&lt;br /&gt;
  ThisComponent.storeToURL( cURL , aArgs() )&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejecutar una aplicación o programa ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Function Ejecutar( ByVal cRutayNombre as String , _&lt;br /&gt;
                   Optional ByVal cParametros as String, _&lt;br /&gt;
                   Optional nEstiloVentana as integer, _&lt;br /&gt;
                   Optional bSync as Boolean) as integer&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Ejecuta un comando y opcionalmente, con parámetros, &lt;br /&gt;
' definiendo estado de la ventana y foco, y sincronismo&lt;br /&gt;
' Ejemplo:  cRutayNombre = &amp;quot;C:\Program Files\Mozilla Firefox\firefox.exe&amp;quot;&lt;br /&gt;
'           cParametros = &amp;quot;http://open-office.es&amp;quot;&lt;br /&gt;
'           nEstiloVentana: una de las siguientes opciones&lt;br /&gt;
'                  ventana Oculta Con Foco = 0&lt;br /&gt;
'                  ventana Estandar Con Foco = 1&lt;br /&gt;
'                  ventana Minimizada Con Foco = 2&lt;br /&gt;
'                  ventana Maximizada Con Foco = 3&lt;br /&gt;
'                  ventana Estandar Sin Foco = 4&lt;br /&gt;
'                  ventana Minimizada Sin Foco = 6&lt;br /&gt;
'                  ventana PantallaCompleta con Foco = 10&lt;br /&gt;
'           bSync: Falso (por defecto): el shell vuelve inmediatamente.&lt;br /&gt;
'                  True: todas las tareas de OO se detienen hasta que vuelva el shell&lt;br /&gt;
&lt;br /&gt;
  cRutayNombre = ConvertToURL( cRutayNombre )&lt;br /&gt;
  cParametros = ConvertToURL( cParametros )&lt;br /&gt;
  If IsMissing( nEstiloVentana ) Then nEstiloVentana = 3&lt;br /&gt;
	&lt;br /&gt;
  On Local Error Goto Error_Ejecutar&lt;br /&gt;
  Shell( cRutayNombre, nEstiloVentana, cParametros, bSync )&lt;br /&gt;
  On Local Error Goto 0&lt;br /&gt;
  Exit Function&lt;br /&gt;
	&lt;br /&gt;
Error_Ejecutar:&lt;br /&gt;
  Ejecutar = Err&lt;br /&gt;
  MsgBox &amp;quot;Error &amp;quot; &amp;amp; Err &amp;amp; &amp;quot;: &amp;quot; &amp;amp; Error &amp;amp; chr(13) &amp;amp; chr(13) &amp;amp; _&lt;br /&gt;
         cRutayNombre &amp;amp; &amp;quot; &amp;quot; &amp;amp; cParametros, 16, &amp;quot;Función Ejecutar, línea &amp;quot; &amp;amp; Erl&lt;br /&gt;
  &lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Propiedades del documento ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Public Type NombreValor&lt;br /&gt;
  Nombre As String&lt;br /&gt;
  Valor As Variant&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Public Type PropiedadesDocumento&lt;br /&gt;
  Autor As String           ' Autor del documento.  &lt;br /&gt;
  Aplicacion As String      ' Aplicación que creó o modificó por última vez el documento&lt;br /&gt;
  CreadoFecha As Date       ' Fecha y hora de creación del documento&lt;br /&gt;
  Titulo As String          ' Título del documento&lt;br /&gt;
  Tema As String            ' Tema del documento  &lt;br /&gt;
  Comentarios As String     ' Comentarios (multi-línea) del documento&lt;br /&gt;
  PalabrasClave() As String ' Lista de las palabras clave del documento&lt;br /&gt;
  Idioma As String          ' Idioma por defecto del documento  &lt;br /&gt;
  IdiomaPais As String      ' Idioma-País&lt;br /&gt;
  IdiomaVariante As String  ' Idioma-Variante&lt;br /&gt;
  ModificadoPor             ' Nombre del usuario que modificó el documento la última vez&lt;br /&gt;
  ModificadoFecha           ' Fecha y hora de la última modificación&lt;br /&gt;
  ImpresoPor                ' Nombre del usuario que imprimió el documento la última vez&lt;br /&gt;
  ImpresoFecha              ' Fecha y hora de la última impresión&lt;br /&gt;
  Plantilla                 ' Nombre de la plantilla que creó el documento&lt;br /&gt;
  PlantillaURL              ' URL de la plantilla&lt;br /&gt;
  PlantillaFecha            ' Fecha y hora de creación o última actualización&lt;br /&gt;
                            ' con la plantilla&lt;br /&gt;
  AutoloadURL               ' Contains the URL to load automatically at a specified &lt;br /&gt;
                            ' time after the document is loaded into a desktop frame.  &lt;br /&gt;
  AutoloadSecs              ' Contains the number of seconds after which a specified &lt;br /&gt;
                            ' URL is to be loaded after the document is loaded&lt;br /&gt;
                            ' into a desktop frame.  &lt;br /&gt;
  DefaultTarget             ' Contains the name of the default frame into which   &lt;br /&gt;
                            ' links should be loaded if no target is specified.  &lt;br /&gt;
  EdicionCiclos             ' Describe las veces que el documento ha sido&lt;br /&gt;
                            ' guardado o modificado  &lt;br /&gt;
  EdicionSegundos           ' Contiene el tiempo total de edición del documento&lt;br /&gt;
                            ' en segundos &lt;br /&gt;
  PropiedadesUsuario() As NombreValor ' Matriz con las propiedades de usuario  &lt;br /&gt;
  Estadisticas() as NombreValor ' Contiene las estadísticas del documento&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Function DocumentoPropiedades() as PropiedadesDocumento&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
  Dim oPropUsuario as Object&lt;br /&gt;
  Dim oPropiedades as Object&lt;br /&gt;
  Dim Estadisticas() as NombreValor, PropUsuario() as NombreValor&lt;br /&gt;
  Dim aTmp(), n as integer&lt;br /&gt;
  Dim dp as PropiedadesDocumento  &lt;br /&gt;
  &lt;br /&gt;
  oPropiedades = ThisComponent.getDocumentProperties()&lt;br /&gt;
  &lt;br /&gt;
  With oPropiedades&lt;br /&gt;
    aTmp = .DocumentStatistics&lt;br /&gt;
    For n = LBound(aTmp) To UBound(aTmp)&lt;br /&gt;
      ReDim Preserve Estadisticas(n)&lt;br /&gt;
      Estadisticas(n).Nombre = aTmp(n).Name&lt;br /&gt;
      Estadisticas(n).Valor = aTmp(n).Value&lt;br /&gt;
    Next&lt;br /&gt;
    &lt;br /&gt;
    n = 0&lt;br /&gt;
    For Each oPropUsuario In oPropiedades.UserDefinedProperties.PropertyValues&lt;br /&gt;
      With oPropUsuario&lt;br /&gt;
        ReDim Preserve PropUsuario(n)&lt;br /&gt;
        If IsUnoStruct(.Value)  Then&lt;br /&gt;
          PropUsuario(n).Nombre = .Name&lt;br /&gt;
          PropUsuario(n).Valor =  .Value.Day &amp;amp; &amp;quot;/&amp;quot; &amp;amp; .Value.Month &amp;amp; &amp;quot;/&amp;quot; &amp;amp; .Value.Year  &lt;br /&gt;
        Else&lt;br /&gt;
          PropUsuario(n).Nombre = .Name&lt;br /&gt;
          PropUsuario(n).Valor =  .Value&lt;br /&gt;
        End If&lt;br /&gt;
        n = n + 1&lt;br /&gt;
      End With&lt;br /&gt;
    Next      &lt;br /&gt;
  &lt;br /&gt;
    dp.Autor = .Author&lt;br /&gt;
    dp.Aplicacion = .Generator&lt;br /&gt;
    dp.CreadoFecha = DateStruct2String(.CreationDate)&lt;br /&gt;
    dp.Titulo = .Title 	&lt;br /&gt;
    dp.Tema = .Subject&lt;br /&gt;
    dp.Comentarios = .Description&lt;br /&gt;
    dp.PalabrasClave() = .KeyWords&lt;br /&gt;
    dp.Idioma = .Language.Language&lt;br /&gt;
    dp.IdiomaPais = .Language.Country&lt;br /&gt;
    dp.IdiomaVariante = .Language.Variant&lt;br /&gt;
    dp.ModificadoPor = .ModifiedBy&lt;br /&gt;
    dp.ModificadoFecha = .ModificationDate&lt;br /&gt;
    dp.ImpresoPor = .PrintedBy&lt;br /&gt;
    dp.ImpresoFecha = DateStruct2String(.PrintDate)&lt;br /&gt;
    dp.Plantilla = .TemplateName&lt;br /&gt;
    dp.PlantillaURL = .TemplateURL&lt;br /&gt;
    dp.PlantillaFecha = DateStruct2String(.TemplateDate)&lt;br /&gt;
    dp.AutoloadURL = .AutoloadURL &lt;br /&gt;
    dp.AutoloadSecs = .AutoloadSecs&lt;br /&gt;
    dp.DefaultTarget = .DefaultTarget&lt;br /&gt;
    dp.Estadisticas = Estadisticas()&lt;br /&gt;
    dp.EdicionCiclos = .EditingCycles&lt;br /&gt;
    dp.EdicionSegundos = .EditingDuration&lt;br /&gt;
    dp.PropiedadesUsuario = PropUsuario()    &lt;br /&gt;
  End With&lt;br /&gt;
  &lt;br /&gt;
  GetDocumentoPropiedades = dp&lt;br /&gt;
&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Function DateStruct2String(dS) As String&lt;br /&gt;
  DateStruct2String() =  dS.Day &amp;amp; &amp;quot;/&amp;quot; &amp;amp; _&lt;br /&gt;
     dS.Month &amp;amp; &amp;quot;/&amp;quot; &amp;amp; dS.Year &amp;amp; &amp;quot; &amp;quot; &amp;amp; _&lt;br /&gt;
     dS.Hours &amp;amp; &amp;quot;:&amp;quot; &amp;amp; dS.Minutes &amp;amp; &amp;quot;:&amp;quot; &amp;amp; _&lt;br /&gt;
     dS.Seconds &amp;amp; &amp;quot;,&amp;quot; &amp;amp; dS.HundredthSeconds&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cambiar el número de documentos recientes ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
function ListaDocumentosRecientes( optional nLargoLista as integer ) as integer&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
' Basado en un documento de Ariel Constenla-Haile&lt;br /&gt;
Dim sProvider as string, sAccess as string, EsLeer as boolean&lt;br /&gt;
Dim oProvider as object, oConfig as object&lt;br /&gt;
Dim aAux(2) As New com.sun.star.beans.PropertyValue&lt;br /&gt;
&lt;br /&gt;
  EsLeer = IsMissing( nLargoLista )&lt;br /&gt;
	&lt;br /&gt;
  sProvider = &amp;quot;com.sun.star.configuration.ConfigurationProvider&amp;quot;&lt;br /&gt;
  If EsLeer Then&lt;br /&gt;
    sAccess = &amp;quot;com.sun.star.configuration.ConfigurationAccess&amp;quot;&lt;br /&gt;
  Else&lt;br /&gt;
    sAccess = &amp;quot;com.sun.star.configuration.ConfigurationUpdateAccess&amp;quot;&lt;br /&gt;
  End If	&lt;br /&gt;
	&lt;br /&gt;
  aAux(0).Name = &amp;quot;Locale&amp;quot;&lt;br /&gt;
  aAux(0).Value = &amp;quot;*&amp;quot;&lt;br /&gt;
  aAux(1).Name = &amp;quot;EnableAsync&amp;quot;&lt;br /&gt;
  aAux(1).Value = false&lt;br /&gt;
  aAux(2).Name = &amp;quot;nodepath&amp;quot;&lt;br /&gt;
  aAux(2).Value = &amp;quot;/org.openoffice.Office.Common/History&amp;quot;&lt;br /&gt;
	&lt;br /&gt;
  oProvider = createUNOService(sProvider)&lt;br /&gt;
  oConfig = oProvider.createInstanceWithArguments(sAccess, aAux())&lt;br /&gt;
	&lt;br /&gt;
  if EsLeer then&lt;br /&gt;
    ListaDocumentosRecientes = oConfig.PickListSize&lt;br /&gt;
  else&lt;br /&gt;
    if nLargoLista &amp;lt; 0  then nLargoLista = 0&lt;br /&gt;
    oConfig.PickListSize = nLargoLista&lt;br /&gt;
    oConfig.CommitChanges()&lt;br /&gt;
  end if&lt;br /&gt;
End function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de uso&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;oobas&amp;quot;&amp;gt;&lt;br /&gt;
Sub Main&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
  msgbox &amp;quot;Configurado para &amp;quot; &amp;amp; ListaDocumentosRecientes  &amp;amp; &amp;quot; documentos&amp;quot;&lt;br /&gt;
  ListaDocumentosRecientes 15 ' cambia a 15 el número de documentos&lt;br /&gt;
  msgbox &amp;quot;Cambiado a &amp;quot; &amp;amp; ListaDocumentosRecientes  &amp;amp; &amp;quot; documentos&amp;quot;&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Pie|Macros_en_Basic_para_OpenOffice_Writer|Macros en Basic para Writer|cat=Basic|subcat=}}&lt;br /&gt;
[[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>