Macro para borrar secciones

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

Macro para borrar secciones

Notapor Narox » Mié Abr 29, 2015 1:53 pm

Tengo un problema, en una gran cantidad de documentos, me aparece una sección protegida contra escritura. Cambiar 1 a 1 los archivos es inviable, sí alguien supiese de una macro, me ayudaría muchísimo. Gracias!!
OpenOffice 4.1 en Windows 7
Narox
 
Mensajes: 1
Registrado: Mié Abr 29, 2015 1:50 pm

Re: Macro para borrar secciones

Notapor SLV-es » Mié May 13, 2015 12:45 pm

¿Has probado con la grabadora de macros?

Si puede grabar la macro para desbloquear una sección, puede darnos pistas.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Macro para borrar secciones

Notapor satuple2015 » Sab Jun 13, 2015 6:45 pm

Tengo algo en Visual Basic 6....
si le sirve???? avise... es algo asi:

Borra Todas las Secciones de un Documento...

Código: Seleccionar todo   Expandir vistaContraer vista
        If Document.getTextSections().getCount() > 0 Then
            Set oSec = Document.getTextSections()
            Names = Document.getTextSections.getElementNames()
            For i = 0 To UBound(Names)
                Set oSeccion = oSec.getByName(Names(i))
                Set oText = Document.text
                oSeccion.isProtected = False
                oSeccion.Anchor.String = ""
                Call oText.removeTextContent(oSeccion)
            Next i
        End If

Document: Referencia al Documento OpenOffice
Última edición por SLV-es el Sab Jun 13, 2015 6:51 pm, editado 1 vez en total
Razón: Insertar etiquetas [Code]
OpenOffice 4.1.1 en Windows 7
satuple2015
 
Mensajes: 5
Registrado: Lun Ene 12, 2015 6:00 pm

Re: Macro para borrar secciones

Notapor SLV-es » Sab Jun 13, 2015 10:54 pm

Este código no es Visual Basic :D

Las macros en Apache OpenOffice pueden escribirse, entre otros, en lenguaje Basic, bastante similar a Visual Basic, pero los objetos que se emplean son por completo diferentes.
Los objetos utilizados en el código son de OpenOffice, por lo que la macro está escrita en Basic y es sólo para OpenOffice/LibreOffice.

Saludos
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Avatar de Usuario
SLV-es
 
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España

Re: Macro para borrar secciones

Notapor satuple2015 » Sab Oct 03, 2015 6:45 pm

El código que envie... está en Visual Basic 6... Yo lo estoy utilizando... claro que es muy muy similar PERO NO IGUAL
Se deben iniciar las variables para abrir el Documento... asi(ejemplo):
Código: Seleccionar todo   Expandir vistaContraer vista
    Dim oServiceManager As Object
    Dim oDesktop As Object
    Dim Document As Object
    Dim args() As Variant
luego (donde Ruta_Archivo es la ruta del archivo debidamente arreglada o sea "File:///" & Replace(Ruta_Archivo, "\", "/")):

    Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
    Set oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
    Set Document = oDesktop.loadComponentFromURL(Ruta_Archivo, "_blank", 0, args())

Logicamente hay que declarar e iniciar las variables... asi:

Private Document as Object     (Public o Dim... según el caso)
Private oSec as Object
Private oSeccion as Object
Private oText as Object
Private oSeccion as Object
..... asi todas las variables que vayas a utilizar en el código....
        If Document.getTextSections().getCount() > 0 Then
            Set oSec = Document.getTextSections()
            Names = Document.getTextSections.getElementNames()
            For i = 0 To UBound(Names)
                Set oSeccion = oSec.getByName(Names(i))
                Set oText = Document.text
                oSeccion.isProtected = False
                oSeccion.Anchor.String = ""
                Call oText.removeTextContent(oSeccion)
            Next i
        End If
Última edición por mauricio el Sab Oct 03, 2015 6:54 pm, editado 1 vez en total
Razón: Usar etiquetas CODE
OpenOffice 4.1.1 en Windows 7
satuple2015
 
Mensajes: 5
Registrado: Lun Ene 12, 2015 6:00 pm


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados