[RESUELTO] Problema con macro oob

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

[RESUELTO] Problema con macro oob

Notapor nitocoli » Dom Abr 15, 2018 10:38 pm

Hola a todos... tengo un problema con un macro que no me funciona.
lo grabe utilizando OpenOffice 4.1.5 . a la hora de ejeutarlo no funciona... hice el mismo en excel 2003 y funciona perfecto...

el codigo generado en oob es este:
Código: Seleccionar todo   Expandir vistaContraer vista
Attribute VB_Name = "Módulo1"

sub AUTO
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "StringName"
args1(0).Value = "0"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "C"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "C"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertColumns", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:InsertColumns", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Flags"
args10(0).Value = "C"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args10())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DataFilterAutoFilter", "", 0, Array())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "ToPoint"
args12(0).Value = "$D$1048576"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "ToPoint"
args13(0).Value = "$A$2:$F$8"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args13())

rem ----------------------------------------------------------------------
dim args14(0) as new com.sun.star.beans.PropertyValue
args14(0).Name = "Flags"
args14(0).Value = "SVDFN"

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args14())

rem ----------------------------------------------------------------------
dim args15(0) as new com.sun.star.beans.PropertyValue
args15(0).Name = "ToPoint"
args15(0).Value = "$G$7"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args15())

rem ----------------------------------------------------------------------
dim args16(0) as new com.sun.star.beans.PropertyValue
args16(0).Name = "ToPoint"
args16(0).Value = "$A$2:$F$8"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args16())


end sub



y el de excel es este:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub stock01()
'
' stock01 Macro
' Macro grabada el 14/4/2018 por NITO
'

'
    Columns("C:C").Select
    ActiveWindow.SmallScroll ToRight:=3
    Columns("C:R").Select
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 22
    ActiveWindow.ScrollColumn = 23
    ActiveWindow.ScrollColumn = 24
    ActiveWindow.ScrollColumn = 25
    ActiveWindow.ScrollColumn = 26
    ActiveWindow.ScrollColumn = 27
    ActiveWindow.ScrollColumn = 28
    ActiveWindow.ScrollColumn = 29
    ActiveWindow.ScrollColumn = 30
    ActiveWindow.ScrollColumn = 31
    ActiveWindow.ScrollColumn = 32
    ActiveWindow.ScrollColumn = 33
    ActiveWindow.ScrollColumn = 34
    ActiveWindow.ScrollColumn = 35
    ActiveWindow.ScrollColumn = 36
    ActiveWindow.ScrollColumn = 37
    ActiveWindow.ScrollColumn = 38
    ActiveWindow.ScrollColumn = 39
    ActiveWindow.ScrollColumn = 40
    ActiveWindow.ScrollColumn = 41
    ActiveWindow.ScrollColumn = 42
    ActiveWindow.ScrollColumn = 43
    ActiveWindow.ScrollColumn = 44
    ActiveWindow.ScrollColumn = 45
    ActiveWindow.ScrollColumn = 46
    ActiveWindow.ScrollColumn = 47
    Columns("E:BC").Select
    Selection.Delete Shift:=xlToLeft
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Columns("G:G").Select
    Selection.Cut
    Columns("C:C").Select
    ActiveSheet.Paste
    Columns("H:H").Select
    Selection.Cut
    Columns("B:B").Select
    ActiveSheet.Paste
    Selection.ColumnWidth = 1.43
    Columns("C:C").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
    Columns("G:G").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 22
    ActiveWindow.ScrollColumn = 24
    ActiveWindow.ScrollColumn = 25
    ActiveWindow.ScrollColumn = 26
    ActiveWindow.ScrollColumn = 27
    ActiveWindow.ScrollColumn = 28
    ActiveWindow.ScrollColumn = 29
    ActiveWindow.ScrollColumn = 30
    ActiveWindow.ScrollColumn = 31
    ActiveWindow.ScrollColumn = 32
    ActiveWindow.ScrollColumn = 33
    ActiveWindow.ScrollColumn = 34
    ActiveWindow.ScrollColumn = 35
    ActiveWindow.ScrollColumn = 36
    ActiveWindow.ScrollColumn = 37
    ActiveWindow.ScrollColumn = 38
    ActiveWindow.ScrollColumn = 39
    ActiveWindow.ScrollColumn = 40
    ActiveWindow.ScrollColumn = 41
    ActiveWindow.ScrollColumn = 42
    ActiveWindow.ScrollColumn = 43
    ActiveWindow.ScrollColumn = 44
    ActiveWindow.ScrollColumn = 45
    ActiveWindow.ScrollColumn = 46
    ActiveWindow.ScrollColumn = 47
    ActiveWindow.ScrollColumn = 48
    ActiveWindow.ScrollColumn = 49
    ActiveWindow.ScrollColumn = 50
    ActiveWindow.ScrollColumn = 51
    ActiveWindow.ScrollColumn = 52
    ActiveWindow.ScrollColumn = 53
    ActiveWindow.ScrollColumn = 54
    ActiveWindow.ScrollColumn = 55
    ActiveWindow.ScrollColumn = 56
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 61
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 64
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 66
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 68
    ActiveWindow.ScrollColumn = 69
    ActiveWindow.ScrollColumn = 68
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 66
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 64
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 58
    Columns("G:BQ").Select
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").ColumnWidth = 10.57
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Columns("E:F").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="0"
    Selection.AutoFilter Field:=2, Criteria1:="0"
    Range("A2:F2221").Select
    Selection.EntireRow.Delete
    ActiveWindow.SmallScroll Down:=-6
    Selection.AutoFilter Field:=1
    Selection.AutoFilter Field:=2
    Range("H6").Select
End Sub



alguien podra ayudarme a resolver el error y explicarme en que me equivoco. o si la funcion de grabar macros no sirve en open office??
utileze la pagina https://www.business-spreadsheets.com/vba2oo.asp vi que la recomendaron en este foro pero me dio como resultado este codigo que tampoco funciona


Código: Seleccionar todo   Expandir vistaContraer vista
Sub stock01()
'
' stock01 Macro
' Macro grabada el 14/4/2018 por NITO
'

'
    Columns("C:C").Select
    ActiveWindow.SmallScroll ToRight:=3
    Columns("C:R").Select
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 22
    ActiveWindow.ScrollColumn = 23
    ActiveWindow.ScrollColumn = 24
    ActiveWindow.ScrollColumn = 25
    ActiveWindow.ScrollColumn = 26
    ActiveWindow.ScrollColumn = 27
    ActiveWindow.ScrollColumn = 28
    ActiveWindow.ScrollColumn = 29
    ActiveWindow.ScrollColumn = 30
    ActiveWindow.ScrollColumn = 31
    ActiveWindow.ScrollColumn = 32
    ActiveWindow.ScrollColumn = 33
    ActiveWindow.ScrollColumn = 34
    ActiveWindow.ScrollColumn = 35
    ActiveWindow.ScrollColumn = 36
    ActiveWindow.ScrollColumn = 37
    ActiveWindow.ScrollColumn = 38
    ActiveWindow.ScrollColumn = 39
    ActiveWindow.ScrollColumn = 40
    ActiveWindow.ScrollColumn = 41
    ActiveWindow.ScrollColumn = 42
    ActiveWindow.ScrollColumn = 43
    ActiveWindow.ScrollColumn = 44
    ActiveWindow.ScrollColumn = 45
    ActiveWindow.ScrollColumn = 46
    ActiveWindow.ScrollColumn = 47
    Columns("E:BC").Select
    Selection.Delete Shift:=xlToLeft
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight
    Selection.Insert Shift:=xlToRight
    Columns("G:G").Select
    Selection.Cut
    Columns("C:C").Select
    ThisComponent.CurrentController.ActiveSheet.Paste
    Columns("H:H").Select
    Selection.Cut
    Columns("B:B").Select
    ThisComponent.CurrentController.ActiveSheet.Paste
    Selection.ColumnWidth = 1.43
    Columns("C:C").EntireColumn.AutoFit
    Columns("D:D").EntireColumn.AutoFit
    Columns("G:G").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 16
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 13
    ActiveWindow.ScrollColumn = 14
    ActiveWindow.ScrollColumn = 15
    ActiveWindow.ScrollColumn = 17
    ActiveWindow.ScrollColumn = 18
    ActiveWindow.ScrollColumn = 19
    ActiveWindow.ScrollColumn = 20
    ActiveWindow.ScrollColumn = 21
    ActiveWindow.ScrollColumn = 22
    ActiveWindow.ScrollColumn = 24
    ActiveWindow.ScrollColumn = 25
    ActiveWindow.ScrollColumn = 26
    ActiveWindow.ScrollColumn = 27
    ActiveWindow.ScrollColumn = 28
    ActiveWindow.ScrollColumn = 29
    ActiveWindow.ScrollColumn = 30
    ActiveWindow.ScrollColumn = 31
    ActiveWindow.ScrollColumn = 32
    ActiveWindow.ScrollColumn = 33
    ActiveWindow.ScrollColumn = 34
    ActiveWindow.ScrollColumn = 35
    ActiveWindow.ScrollColumn = 36
    ActiveWindow.ScrollColumn = 37
    ActiveWindow.ScrollColumn = 38
    ActiveWindow.ScrollColumn = 39
    ActiveWindow.ScrollColumn = 40
    ActiveWindow.ScrollColumn = 41
    ActiveWindow.ScrollColumn = 42
    ActiveWindow.ScrollColumn = 43
    ActiveWindow.ScrollColumn = 44
    ActiveWindow.ScrollColumn = 45
    ActiveWindow.ScrollColumn = 46
    ActiveWindow.ScrollColumn = 47
    ActiveWindow.ScrollColumn = 48
    ActiveWindow.ScrollColumn = 49
    ActiveWindow.ScrollColumn = 50
    ActiveWindow.ScrollColumn = 51
    ActiveWindow.ScrollColumn = 52
    ActiveWindow.ScrollColumn = 53
    ActiveWindow.ScrollColumn = 54
    ActiveWindow.ScrollColumn = 55
    ActiveWindow.ScrollColumn = 56
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 61
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 64
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 66
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 68
    ActiveWindow.ScrollColumn = 69
    ActiveWindow.ScrollColumn = 68
    ActiveWindow.ScrollColumn = 67
    ActiveWindow.ScrollColumn = 66
    ActiveWindow.ScrollColumn = 65
    ActiveWindow.ScrollColumn = 64
    ActiveWindow.ScrollColumn = 63
    ActiveWindow.ScrollColumn = 62
    ActiveWindow.ScrollColumn = 60
    ActiveWindow.ScrollColumn = 59
    ActiveWindow.ScrollColumn = 58
    ActiveWindow.ScrollColumn = 57
    ActiveWindow.ScrollColumn = 58
    Columns("G:BQ").Select
    Selection.Delete Shift:=xlToLeft
    Columns("E:E").ColumnWidth = 10.57
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Columns("E:F").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=1, Criteria1:="0"
    Selection.AutoFilter Field:=2, Criteria1:="0"
    Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet[n]ThisComponent.CurrentController.select(oSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("A2:F2221")))
    Selection.EntireRow.Delete
    ActiveWindow.SmallScroll Down:=-6
    Selection.AutoFilter Field:=1
    Selection.AutoFilter Field:=2
    Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ThisComponent.CurrentController.ActiveSheet[n]ThisComponent.CurrentController.select(oSheet.getCellDim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)ByName(("H6")))
End Sub

les agradezco mucho y me encantaria aprender mucho mas sobre OO . SALUDOS!!
OpenOffice 4.1.5 en Windows 10 X64
Avatar de Usuario
nitocoli
 
Mensajes: 5
Registrado: Dom Abr 15, 2018 10:15 pm

Re: Problema con macro oob

Notapor mauricio » Lun Abr 16, 2018 7:23 am

Si, la grabadora de macros sirve, pero para cosas sencillas y bien estructuradas.

Si agregas un archivo de ejemplos detallando lo que tienes y lo que esperas lograr, será más fácil ayudarte.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Problema con macro oob

Notapor fornelasa » Lun Abr 16, 2018 9:31 pm

ummmm, varios temas:
1) La grabadora de macros de Excel es muy superior a la de Calc.
2) Tu macro Excel grabada está muy mal hecha, ¿por ejemplo para que sirve esto?
Código: Seleccionar todo   Expandir vistaContraer vista
ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 11
    ActiveWindow.ScrollColumn = 12
    ActiveWindow.ScrollColumn = 13

3) ¿Quien te recomendó el vinculo de abajito? ..... digo, para de una vez demandarlo :mrgreen:
nitocoli escribió:utileze la pagina https://www.business-spreadsheets.com/vba2oo.asp vi que la recomendaron en este foro

4) Como ya lo han comentado, explica claramente lo que deseas hacer y envía un archivo ejemplo (si envías el archivo de Excel por favor quitarle toda la basura que trae el código).
lo 6.0.6 | aoo 4.1.5 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3092
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Problema con macro oob

Notapor nitocoli » Mar Abr 17, 2018 3:43 am

mauricio escribió:Si, la grabadora de macros sirve, pero para cosas sencillas y bien estructuradas.

Si agregas un archivo de ejemplos detallando lo que tienes y lo que esperas lograr, será más fácil ayudarte.

Saludos


fornelasa escribió:

Hola chicos. Gracias por su respuesta...
Explico bien asi se entiende el por q necesito el macro.
Trabajo en un grupo de auditoria. Utilizamos el sistema lince de zoologic. A la hora de guardar el informe. Se genera un archivo xls. Lo cual nosotros tenemos que modificarlo para obtener mas claro los resultados. Esto lo hacemos varias veces al dia y se pierde mucho tiempo. Por q no todos lo hacen rapidamente y se atrasa bastante...
Voy a detallar los pasos a seguir y a subir el archivo...
Borrar de la columna C a la R.
Borrar de la columna E a la BC.
Agregar dos columnas vacias en B y en C.
Cortar y pegar contenido de la columna G en la C y de la columna H en la B
luego borrar todos los datos que quedan de G en adelante ...
y a las columnas E y F . Seleccionarlas y hacer un filtro automatico. Seleccionar el rango 0 en ambas y borrar su resultado ( en esta parte seria por lo menos seleccionar hasta la fila 5000 o mas por q no siempre da los mismos resultados. Y luego en el filtro automatico seleccionamos todo en las dos columnas... y listo asi quedaria.

Este es el archivo .xls sin editar
STOCK.xls
archivo sin editar
(37 KiB) 40 veces


Este es el archivo .xls editado
OPENSTOCK.xls
archivo editado
(11.5 KiB) 37 veces

claramente el macro es para editar el archivo. en excel funciono pero la empresa utiliza aoo.
en aoo grabandolo no me funciona. y no entiendo el error que me da al finalizar. " se esperaba sub." ---
gracias espero no haberlos mareado mucho
OpenOffice 4.1.5 en Windows 10 X64
Avatar de Usuario
nitocoli
 
Mensajes: 5
Registrado: Dom Abr 15, 2018 10:15 pm

Re: Problema con macro oob

Notapor mauricio » Mar Abr 17, 2018 6:09 am

¿alguna razón en especial para mover las columnas A72 y A73 entre las columnas A1 y A2?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Problema con macro oob

Notapor mauricio » Mar Abr 17, 2018 7:05 am

Para el filtrado por ceros, veo que en tu ejemplo los ceros se corresponden en las dos columnas, ¿siempre es así o pueden venir combinados y entonces por eso se filtra cero en las dos columnas?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Problema con macro oob

Notapor mauricio » Mar Abr 17, 2018 7:28 am

Con EasyMacro es trivial:
https://gitlab.com/mauriciobaeza/easy-m ... s/index-es

Código: Seleccionar todo   Expandir vistaContraer vista
from libo import LIBO


def main():
    app = LIBO()
    sheet = app.doc.active
    rango = sheet['A1'].current_region
    rango.columns.removeByIndex(2, 16)
    rango.columns.removeByIndex(4, 51)
    rango.columns.insertByIndex(1, 2)
    rango[0:,1].data = rango[0:,7].data
    rango[0:,2].data = rango[0:,6].data
    rango.columns.removeByIndex(6, 11)

    rows = []
    for i, row in enumerate(rango.data):
        if not row[-1] and not row[-2]:
            rows.append(i)

    for i in reversed(rows):
        rango.rows.removeByIndex(i, 1)
    return
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.4 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5645
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: Problema con macro oob

Notapor nitocoli » Mar Abr 17, 2018 12:52 pm

La razon de las columnas es para organizar mejor el codigo... el archivo q subi es un ejemplo... pero tiene que quedar ordenado por (codigo. Color. Talle y nombre del articulo... las dos ultimas son cantidad en stock. Y cantidad tomadas fisicamente... los resultados en 0 pueden dar mezclados por eso se realiza el filtro automatico
OpenOffice 4.1.5 en Windows 10 X64
Avatar de Usuario
nitocoli
 
Mensajes: 5
Registrado: Dom Abr 15, 2018 10:15 pm

Re: Problema con macro oob

Notapor fornelasa » Mar Abr 17, 2018 7:49 pm

Creo, tal vez, esta macro hace más o menos lo mismo (es una macro para OpenOffice) , una macro ya muy recortada a la que tenias, la macro esta en VBA. Después cuando haya más tiempo la traduciré (bueno lo intentaré) :mrgreen:
Código: Seleccionar todo   Expandir vistaContraer vista
Option VBASupport 1
Sub stock01()
     Columns("C:R").Delete Shift:=xlToLeft
     Columns("E:BC").Delete Shift:=xlToLeft
     Columns("B:B").Insert Shift:=xlToRight
     Columns("B:B").Insert Shift:=xlToRight
     Columns("G:G").Cut
     Columns("C:C").Select
     ActiveSheet.Paste
     Columns("H:H").Cut
     Columns("B:B").Select
     ActiveSheet.Paste
     Columns("G:BQ").Delete Shift:=xlToLeft
     Columns("E:F").AutoFilter Field:=1, Criteria1:="0", Field:=2, Criteria1:="0"
     Range(Range("A2"), Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible).Select     
     Selection.EntireRow.Delete       
     Columns("E:F").AutoFilter Field:=1, Field:=2
     Columns("A:F").EntireColumn.AutoFit
     Range("H6").Select
End Sub

Saludos, Federico.
Adjuntos
STOCK_II.ods
Limpiar datos
(13.68 KiB) 37 veces
lo 6.0.6 | aoo 4.1.5 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3092
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Problema con macro oob

Notapor fornelasa » Mar Abr 17, 2018 11:11 pm

Aquí una versión para LibreOffice y ApacheOpenOffice en StarBasic.
Saludos.
Adjuntos
Stock_rap.ods
Limpiar datos.
(14.98 KiB) 29 veces
lo 6.0.6 | aoo 4.1.5 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3092
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Problema con macro oob

Notapor fornelasa » Mié Abr 18, 2018 12:03 am

nitocoli escribió:La razón de las columnas es para organizar mejor el código... el archivo q subí es un ejemplo... pero tiene que quedar ordenado por (código. Color. Talle y nombre del articulo... las dos ultimas son cantidad en stock. Y cantidad tomadas físicamente... los resultados en 0 pueden dar mezclados por eso se realiza el filtro automático
Si ok, bien.
Todos los 3 ejemplos de macro que se te han enviado (mauricio y yo) funcionan (creo) exactamente a como lo hace tu macro VBA.

Saludos, Federico.
lo 6.0.6 | aoo 4.1.5 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3092
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Problema con macro oob

Notapor nitocoli » Mié Abr 18, 2018 3:35 am

fornelasa escribió:Creo, tal vez, esta macro hace más o menos lo mismo (es una macro para OpenOffice) , una macro ya muy recortada a la que tenias, la macro esta en VBA. Después cuando haya más tiempo la traduciré (bueno lo intentaré) :mrgreen:
Código: Seleccionar todo   Expandir vistaContraer vista
Option VBASupport 1
Sub stock01()
     Columns("C:R").Delete Shift:=xlToLeft
     Columns("E:BC").Delete Shift:=xlToLeft
     Columns("B:B").Insert Shift:=xlToRight
     Columns("B:B").Insert Shift:=xlToRight
     Columns("G:G").Cut
     Columns("C:C").Select
     ActiveSheet.Paste
     Columns("H:H").Cut
     Columns("B:B").Select
     ActiveSheet.Paste
     Columns("G:BQ").Delete Shift:=xlToLeft
     Columns("E:F").AutoFilter Field:=1, Criteria1:="0", Field:=2, Criteria1:="0"
     Range(Range("A2"), Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible).Select     
     Selection.EntireRow.Delete       
     Columns("E:F").AutoFilter Field:=1, Field:=2
     Columns("A:F").EntireColumn.AutoFit
     Range("H6").Select
End Sub

Saludos, Federico.


Hola federico... muchas gracias este funciona perfecto. ahora veo q todo el codigo q me aparecia era al seleccionar las columnas. voy a empezar aprender a escribir el codigo directamente para ahorrar tantos pasos. quedo genial. saludos nuevamente
OpenOffice 4.1.5 en Windows 10 X64
Avatar de Usuario
nitocoli
 
Mensajes: 5
Registrado: Dom Abr 15, 2018 10:15 pm

Re: Problema con macro oob

Notapor nitocoli » Mié Abr 18, 2018 3:39 am

mauricio escribió:Con EasyMacro es trivial:
https://gitlab.com/mauriciobaeza/easy-m ... s/index-es

Código: Seleccionar todo   Expandir vistaContraer vista
from libo import LIBO


def main():
    app = LIBO()
    sheet = app.doc.active
    rango = sheet['A1'].current_region
    rango.columns.removeByIndex(2, 16)
    rango.columns.removeByIndex(4, 51)
    rango.columns.insertByIndex(1, 2)
    rango[0:,1].data = rango[0:,7].data
    rango[0:,2].data = rango[0:,6].data
    rango.columns.removeByIndex(6, 11)

    rows = []
    for i, row in enumerate(rango.data):
        if not row[-1] and not row[-2]:
            rows.append(i)

    for i in reversed(rows):
        rango.rows.removeByIndex(i, 1)
    return


hola mauricio... este no me funciono. le agregue el sub al principio y al final sub end pero tampoco sirvio... gracias de todos modos y perdon por molestar... son unos genios. mil gracias por la buena onda. saludos
OpenOffice 4.1.5 en Windows 10 X64
Avatar de Usuario
nitocoli
 
Mensajes: 5
Registrado: Dom Abr 15, 2018 10:15 pm

Re: Problema con macro oob

Notapor fornelasa » Mié Abr 18, 2018 5:40 pm

Hola Raul, que bueno que la consulta ha sido resuelta :super:

Solo como cultura general me gustaría comentar lo siguiente hablando de LibreOffice y Windows

El archivo libo.py al que hace referencia Mauricio lineas arriba debe copiarse y después almacenarse en la ruta de abajo ; si fuera necesario hay que crear todas las carpetas para obtener dicha ruta.

C:\Users\Federico\AppData\Roaming\LibreOffice\4\user\Scripts\python\pythonpath\

La macro presentada en python y que fue creada con easy-macro debe ser copiada a un archivo de texto con el programa bloc de notas o con Geany o con etc., dicho archivo lo podríamos nombrar como por ejemplo limpiar.py

El archivo limpiar.py debe ser almacenado en una ruta similar a:

C:\Program Files\LibreOffice 5\share\Scripts\python\python\

Ejecutamos limpiar.py con el menú herramientas <> macros <> organizar macros ……. Etc.


Imagen
lo 6.0.6 | aoo 4.1.5 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3092
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: physic y 129 invitados