Macro para borrar secciones

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Narox
Mensajes: 1
Registrado: Mié Abr 29, 2015 1:50 pm

Macro para borrar secciones

Mensaje por Narox »

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
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Macro para borrar secciones

Mensaje por SLV-es »

¿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
satuple2015
Mensajes: 5
Registrado: Lun Ene 12, 2015 6:00 pm

Re: Macro para borrar secciones

Mensaje por satuple2015 »

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

Borra Todas las Secciones de un Documento...

Código: Seleccionar todo

        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
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: Macro para borrar secciones

Mensaje por SLV-es »

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
satuple2015
Mensajes: 5
Registrado: Lun Ene 12, 2015 6:00 pm

Re: Macro para borrar secciones

Mensaje por satuple2015 »

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

    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
Responder