[RESUELTO]Rellenar con un caractar, todos los parrafos de un
-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
[RESUELTO]Rellenar con un caractar, todos los parrafos de un
Buenas, arme en vb un procedimiento, el cual detallo.
Ojo: aun no lo pruebo si funciona o no, pero la idea es que en un documento, recorra todo, y al final de cada parrafo, rellena de una linea doble o con el caracter "=" el final de dicha linea de fin de parrafo.
Ojala puedan ayudarme
Private Sub Command1_Click()
Dim oDocument As Object
Dim oServiceManager As Object
Dim oDeskTop As Object
Dim Enu As Object
Dim TextTables As Object
Dim ElementoTexto As Object
Dim Tabla As Object
Dim Filas As Object
Dim Columnas As Object
Dim oNuevoEstilo As Object
Dim tabs As Object 'no acepta New com.sun.star.Style.TabStop
Dim newstops(0) As Object
Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
Set oDeskTop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
url = "c:\uno.odt"
url = "file:///" & Replace(url, "\", "/")
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args)
Set Enu = oDocument.Text.createEnumeration
Set Cursor = oDocument.Text.createTextCursor()
While Enu.hasMoreElements
Set ElementoTexto = Enu.nextElement
If ElementoTexto.supportsService("com.sun.star.text.Paragraph") Then
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
Cursor.gotoEndOfParagraph (False)
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
tabs.position = 25000
tabs.Alignment = 2
tabs.FillChar = Asc("-")
Set newstops(0) = tabs
Cursor.ParaTabStops = newstops
Cursor.gotoEndOfParagraph (False)
Cursor.String = Chr(9)
End If
If Cursor.isEndOfParagraph() Then
Cursor.gotonextparagraph (True)
End If
End If
Wend
End Sub
cuando lo ejecuto en vb6, me sale justo en esta linea
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args)
el mensaje de error, que dice "No coinciden los tipos"
diganme si esta bien, o si ya existe este tema resuelto.
Saludos. y gracias.
Ojo: aun no lo pruebo si funciona o no, pero la idea es que en un documento, recorra todo, y al final de cada parrafo, rellena de una linea doble o con el caracter "=" el final de dicha linea de fin de parrafo.
Ojala puedan ayudarme
Private Sub Command1_Click()
Dim oDocument As Object
Dim oServiceManager As Object
Dim oDeskTop As Object
Dim Enu As Object
Dim TextTables As Object
Dim ElementoTexto As Object
Dim Tabla As Object
Dim Filas As Object
Dim Columnas As Object
Dim oNuevoEstilo As Object
Dim tabs As Object 'no acepta New com.sun.star.Style.TabStop
Dim newstops(0) As Object
Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
Set oDeskTop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
url = "c:\uno.odt"
url = "file:///" & Replace(url, "\", "/")
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args)
Set Enu = oDocument.Text.createEnumeration
Set Cursor = oDocument.Text.createTextCursor()
While Enu.hasMoreElements
Set ElementoTexto = Enu.nextElement
If ElementoTexto.supportsService("com.sun.star.text.Paragraph") Then
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
Cursor.gotoEndOfParagraph (False)
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
tabs.position = 25000
tabs.Alignment = 2
tabs.FillChar = Asc("-")
Set newstops(0) = tabs
Cursor.ParaTabStops = newstops
Cursor.gotoEndOfParagraph (False)
Cursor.String = Chr(9)
End If
If Cursor.isEndOfParagraph() Then
Cursor.gotonextparagraph (True)
End If
End If
Wend
End Sub
cuando lo ejecuto en vb6, me sale justo en esta linea
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args)
el mensaje de error, que dice "No coinciden los tipos"
diganme si esta bien, o si ya existe este tema resuelto.
Saludos. y gracias.
Última edición por RGB-es el Dom Ago 19, 2012 10:07 am, editado 1 vez en total.
Razón: Marcar como resuelto
Razón: Marcar como resuelto
Re: Rellenar con un caractar, todos los parrafos de un Docum
Args tiene que ser una matriz
Código: Seleccionar todo
Dim args()
...
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args()) -
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Hola, muchas gracias por responder...
mira hice lo que me indicaste
el codigo quedaria asi:
Private Sub Command1_Click()
Dim args()
Dim url As String
Dim oDocument As Object
Dim oServiceManager As Object
Dim oDeskTop As Object
Dim Enu As Object
Dim TextTables As Object
Dim ElementoTexto As Object
Dim Tabla As Object
Dim Filas As Object
Dim Columnas As Object
Dim oNuevoEstilo As Object
Dim tabs As Object 'no acepta New com.sun.star.Style.TabStop
Dim newstops(0) As Object
Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
Set oDeskTop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
url = "c:\uno.odt"
url = "file:///" & Replace(url, "\", "/")
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args())
Set Enu = oDocument.Text.createEnumeration
Set Cursor = oDocument.Text.createTextCursor()
While Enu.hasMoreElements
Set ElementoTexto = Enu.nextElement
If ElementoTexto.supportsService("com.sun.star.text.Paragraph") Then
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
Cursor.gotoEndOfParagraph (False)
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
tabs.position = 25000
tabs.Alignment = 2
tabs.FillChar = Asc("-")
Set newstops(0) = tabs
Cursor.ParaTabStops = newstops
Cursor.gotoEndOfParagraph (False)
Cursor.String = Chr(9)
End If
If Cursor.isEndOfParagraph() Then
Cursor.gotonextparagraph (True)
End If
End If
Wend
End Sub
Pero justo en
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args())
Me sale el error:
Error 1001 en tiempo de ejecucion
com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one
Agradeceria ayudarme, o darme una opcion de solucion al problema del enunciado.
Saludos.
mira hice lo que me indicaste
el codigo quedaria asi:
Private Sub Command1_Click()
Dim args()
Dim url As String
Dim oDocument As Object
Dim oServiceManager As Object
Dim oDeskTop As Object
Dim Enu As Object
Dim TextTables As Object
Dim ElementoTexto As Object
Dim Tabla As Object
Dim Filas As Object
Dim Columnas As Object
Dim oNuevoEstilo As Object
Dim tabs As Object 'no acepta New com.sun.star.Style.TabStop
Dim newstops(0) As Object
Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
Set oDeskTop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
url = "c:\uno.odt"
url = "file:///" & Replace(url, "\", "/")
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args())
Set Enu = oDocument.Text.createEnumeration
Set Cursor = oDocument.Text.createTextCursor()
While Enu.hasMoreElements
Set ElementoTexto = Enu.nextElement
If ElementoTexto.supportsService("com.sun.star.text.Paragraph") Then
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
Cursor.gotoEndOfParagraph (False)
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
tabs.position = 25000
tabs.Alignment = 2
tabs.FillChar = Asc("-")
Set newstops(0) = tabs
Cursor.ParaTabStops = newstops
Cursor.gotoEndOfParagraph (False)
Cursor.String = Chr(9)
End If
If Cursor.isEndOfParagraph() Then
Cursor.gotonextparagraph (True)
End If
End If
Wend
End Sub
Pero justo en
Set oDocument = oDeskTop.loadComponentFromURL(url, "_blank", 0, args())
Me sale el error:
Error 1001 en tiempo de ejecucion
com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one
Agradeceria ayudarme, o darme una opcion de solucion al problema del enunciado.
Saludos.
Re: Rellenar con un caractar, todos los parrafos de un Docum
El error significa que no existe un archive con el URL igual al valore de la variable url. Sugiero que verifica que existe el archivo c:\uno.odt y que url = file:///c:/uno.odt
Última edición por FJCC-ES el Vie Ago 17, 2012 11:57 pm, editado 1 vez en total.
-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Muchas Gracias.
Ahora al compilar, dice que el error esta en:
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
El mensaje es: "Error de automatizacion"
Antes de nada, estoy muy agradecido, por la ayuda.
Gracia de verdad.
Saludos.
Ahora al compilar, dice que el error esta en:
Set tabs = oDocument.Bridge_GetStruct("com.sun.star.Style.TabStop")
El mensaje es: "Error de automatizacion"
Antes de nada, estoy muy agradecido, por la ayuda.
Gracia de verdad.
Saludos.
Re: Rellenar con un caractar, todos los parrafos de un Docum
Bridge_GetStruct () es un método del oServiceManager
Código: Seleccionar todo
Set tabs = oServiceManager.Bridge_GetStruct("com.sun.star.Style.TabStop" )-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Hola
Gracias... por el tiempo dedicado a mi pregunta.
Te cuento que hice el cambio, pero me sigue dando el mismo problema.
El mismo error,
El mensaje es: "Error de automatizacion"
Gracias.
PD. Una consulta
Como recorrer un Documento completo
y ponerle lo siguiente "===" al final de cada farrafo del documento.
Solo esos 3 caracteres "=" por farrafo.
Saludos.
Gracias... por el tiempo dedicado a mi pregunta.
Te cuento que hice el cambio, pero me sigue dando el mismo problema.
El mismo error,
El mensaje es: "Error de automatizacion"
Gracias.
PD. Una consulta
Como recorrer un Documento completo
y ponerle lo siguiente "===" al final de cada farrafo del documento.
Solo esos 3 caracteres "=" por farrafo.
Saludos.
-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Gracias.
La solucion solo era:
Set tabs = oServiceManager.Bridge_GetStruct("com.sun.star.style.TabStop" )
Style por style
Pero sigue el problema
Ahora el problema es:
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
Me dice que el Error es: Llamada a procedimientos y argumentos no validos.
Gracias.
La solucion solo era:
Set tabs = oServiceManager.Bridge_GetStruct("com.sun.star.style.TabStop" )
Style por style
Pero sigue el problema
Ahora el problema es:
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then '46 es el código ASCII del PUNTO (.)
Me dice que el Error es: Llamada a procedimientos y argumentos no validos.
Gracias.
Re: Rellenar con un caractar, todos los parrafos de un Docum
No veo error en
¿Qué pasa si el código es
Seleccione Editar → Buscar y Reemplazar
En el cuadro Buscar escriba .* (un Punto y un asterisco)
En el cuadro Reemplazar Por escriba &===
Elija Más Opciones y marque Expresiones Regulares
Pulse Reemplazar Todo
En Expresiones Regulares:
. (Punto) Representa cualquier carácter menos un salto de línea o de párrafo.
* Significa busca cero o más de los caracteres que preceden a "*".
& Significa agrega la cadena de caracteres que se encontró según los criterios de búsqueda
Una macro (en OpenOffice Basic) que hace lo mismo es
Código: Seleccionar todo
If Asc(Mid(Cursor.String, Len(Cursor.String))) = 46 Then¿Qué pasa si el código es
Código: Seleccionar todo
w = Cursor.String
x = Len(Cursor.String)
y = Mid(w,x)
z = Asc(y)
If z = 46 Then
Esto se puede hacer sin una macroPD. Una consulta
Como recorrer un Documento completo
y ponerle lo siguiente "===" al final de cada farrafo del documento.
Solo esos 3 caracteres "=" por farrafo.
Seleccione Editar → Buscar y Reemplazar
En el cuadro Buscar escriba .* (un Punto y un asterisco)
En el cuadro Reemplazar Por escriba &===
Elija Más Opciones y marque Expresiones Regulares
Pulse Reemplazar Todo
En Expresiones Regulares:
. (Punto) Representa cualquier carácter menos un salto de línea o de párrafo.
* Significa busca cero o más de los caracteres que preceden a "*".
& Significa agrega la cadena de caracteres que se encontró según los criterios de búsqueda
Una macro (en OpenOffice Basic) que hace lo mismo es
Código: Seleccionar todo
oDocument = ThisComponent
Desc = oDocument.createReplaceDescriptor()
Desc.SearchRegularExpression = True
Desc.SearchString = (".*")
Desc.ReplaceString = ("&===")
oDocument.replaceAll(Desc)-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Gracias, muchas gracias, parece que la salida es esa "expresiones regulares".
Una consulta mas, para cerrar este tema, como seria en una Macro lo siguiente, en ese orden:
1.Buscar por:
^[:space:]*$
Reemplazar por: NADA
2. Buscar por
^$
Reemplazar por: NADA
3.Buscar por
$
Reemplazar por: ===\n
Gracias.
Una consulta mas, para cerrar este tema, como seria en una Macro lo siguiente, en ese orden:
1.Buscar por:
^[:space:]*$
Reemplazar por: NADA
2. Buscar por
^$
Reemplazar por: NADA
3.Buscar por
$
Reemplazar por: ===\n
Gracias.
Re: Rellenar con un caractar, todos los parrafos de un Docum
Mi amigo FJCC-ES ya te dio la respuesta, solo tienes que repetir la secuencia que propones:
Código: Seleccionar todo
oDocument = ThisComponent
Desc = oDocument.createReplaceDescriptor()
Desc.SearchRegularExpression = True
Desc.SearchString = (".*")
Desc.ReplaceString = ("&===")
oDocument.replaceAll(Desc)______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
-
edgarcarranza
- Mensajes: 20
- Registrado: Lun Dic 22, 2008 11:18 pm
Re: Rellenar con un caractar, todos los parrafos de un Docum
Gracias Mauricio
RESUELTO
Gracias
RESUELTO
Gracias
Re: [RESUELTO]Rellenar con un caractar, todos los parrafos d
Hola amigos, mucho gusto saludarlos. Amigos, soy bastante nuevo con el tema de programación en macros. Pero tengo que realizar el mismo requisito que ustedes están resolviendo, estoy que sigo los paso a detalle pero tengo errores en el código. Por favor me podrian ayudar con dicho alcance le agradeceria mucho. el problema que tengo es en la línea: Set tabs = oServiceManager.Bridge_GetStruct("com.sun.star.style.TabStop" )
en el error me muestra que:
Propiedad o método no encontrados: Bridge_GetStruct. Estoy realizando OpenOffice 3.3
en el error me muestra que:
Propiedad o método no encontrados: Bridge_GetStruct. Estoy realizando OpenOffice 3.3
OppenOffice 3.3 Windows Sistema Op. 64 bits
Re: [RESUELTO]Rellenar con un caractar, todos los parrafos d
No es recomendable continuar temas tan viejos... es mejor que abras un nuevo tema, haciendo referencia a este...
La línea que te da error, es por que esta macro esta pensada para usarse desde VB, "fuera" de OpenOffice, dentro de OpenOffice puedes usar
pero... como dije, el código es para usarse de VB, varias cosas te fallaran si no consideras esto.
Saludos
La línea que te da error, es por que esta macro esta pensada para usarse desde VB, "fuera" de OpenOffice, dentro de OpenOffice puedes usar
Código: Seleccionar todo
oStruct = CreateUnoStruct( "com.sun.star.Style.TabStop" )
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro