[RESUELTO] Mudar Macro de Excel a Libreoffice
Publicado: Vie May 31, 2019 9:17 pm
Buenas tardes, me gustaria saber si ¿hay alguna forma de pasar una macro de Excel a Libreoffice?.
El tema es que al abrir el archivo que tiene la macro por primera vez en LibO, la macro funciona (aparentemente). Pero al cerrarlo y volverlo a abrir , deja de funcionar y da errores por todos lados.
lo que hace la macro es: si identifica que en la columna (2) de la Hoja("Demo") hay una "I", Entonces copia los valores de las columnas siguientes, en una planilla del mismo libro llamada "VALE2" (esta planilla es similar a un remito).
Al copiar todos los datos, imprime el rango de impresion seleccionado de la Hoja "VALE2".
una vez impreso, Los datos de "VALE2" quedan en vacio , para que se copie otra columna que contenga "I", y asi sucesivamente, hasta encontrarse con vacio en la columna (2) de la Hoja "Demo".
Una vez finalizado todo, todas las columnas que tenian la letra "I", Cambian su Valor por la Letra "P" (para que cuando se vuelva a ejecutar la macro, no vuelva a imprimir lo que ya esta impreso).
Dejo el Codigo pegado abajo.(vale aclarar que fue una de las primeras macro que realice y como funciono, nunca mas la volvi a mejorar).
Sub VALE()
'
' VALE Macro
' IMPRESION DE VALES
'
' Acceso directo: Ctrl+Mayús+O
With Application
.Calculation = xlAutomatic
End With
i = 5
u_STOP = 0
Do While u_STOP = 0
If Sheets("Demo").Cells(i, 2) = "I" Then
Sheets("VALE2").Cells(1, 9) = Sheets("Demo").Cells(i, 1)
Sheets("VALE2").Cells(2, 9) = Sheets("Demo").Cells(i, 5)
Sheets("VALE2").Cells(3, 9) = Sheets("Demo").Cells(i, 6)
Sheets("VALE2").Cells(4, 2) = Sheets("Demo").Cells(i, 8)
Sheets("VALE2").Cells(4, 6) = Sheets("Demo").Cells(i, 9)
Sheets("VALE2").Cells(4, 9) = Sheets("Demo").Cells(i, 7)
Sheets("VALE2").Cells(5, 2) = Sheets("Demo").Cells(i, 10)
Sheets("VALE2").Cells(5, 6) = Sheets("Demo").Cells(i, 11)
Sheets("VALE2").Cells(5, 9) = Sheets("Demo").Cells(i, 12)
Sheets("VALE2").Cells(8, 2) = Sheets("Demo").Cells(i, 13)
Sheets("VALE2").Cells(8, 4) = Sheets("Demo").Cells(i, 14)
Sheets("VALE2").Cells(8, 8) = Sheets("Demo").Cells(i, 15)
Sheets("VALE2").Cells(9, 9) = Sheets("Demo").Cells(i, 29)
Sheets("VALE2").Cells(8, 9) = Sheets("Demo").Cells(i, 17)
Sheets("VALE2").Cells(10, 2) = Sheets("Demo").Cells(i, 19)
Sheets("VALE2").Cells(11, 2) = Sheets("Demo").Cells(i, 20)
Sheets("VALE2").Cells(10, 4) = Sheets("Demo").Cells(i, 3)
Sheets("VALE2").Cells(12, 2) = Sheets("Demo").Cells(i, 21)
Sheets("VALE2").Cells(13, 2) = Sheets("Demo").Cells(i, 22)
Sheets("VALE2").Cells(14, 2) = Sheets("Demo").Cells(i, 23)
Sheets("VALE2").Cells(15, 2) = Sheets("Demo").Cells(i, 24)
Sheets("VALE2").Cells(15, 5) = Sheets("Demo").Cells(i, 27)
Sheets("VALE2").Cells(15, 9) = Sheets("Demo").Cells(i, 28)
Sheets("VALE2").Select
Range("A1 : D5").Select
ActiveSheet.PageSetup.Orientation = xlPortrait
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("VALE2").Cells(1, 9) = ""
Sheets("VALE2").Cells(2, 9) = ""
Sheets("VALE2").Cells(3, 9) = ""
Sheets("VALE2").Cells(4, 2) = ""
Sheets("VALE2").Cells(4, 6) = ""
Sheets("VALE2").Cells(4, 9) = ""
Sheets("VALE2").Cells(5, 2) = ""
Sheets("VALE2").Cells(5, 6) = ""
Sheets("VALE2").Cells(5, 9) = ""
Sheets("VALE2").Cells(8, 2) = ""
Sheets("VALE2").Cells(8, 4) = ""
Sheets("VALE2").Cells(8, 8) = ""
Sheets("VALE2").Cells(8, 9) = ""
Sheets("VALE2").Cells(9, 9) = ""
Sheets("VALE2").Cells(10, 2) = ""
Sheets("VALE2").Cells(11, 2) = ""
Sheets("VALE2").Cells(10, 4) = ""
Sheets("VALE2").Cells(12, 2) = ""
Sheets("VALE2").Cells(13, 2) = ""
Sheets("VALE2").Cells(14, 2) = ""
Sheets("VALE2").Cells(15, 2) = ""
Sheets("VALE2").Cells(15, 5) = ""
Sheets("VALE2").Cells(16, 9) = ""
Sheets("Demo").Select
End If
If Sheets("Demo").Cells(i, 2) = "" Then u_STOP = 1
i = i + 1
Loop
Sheets("Demo").Select
E = 5
u_STOP = 0
Do While u_STOP = 0
If Cells(E, 2) = "I" Then Cells(E, 2) = "P"
If Cells(E, 2) = "" Then u_STOP = 1
E = E + 1
Loop
Sheets("Demo").Select
End Sub
El tema es que al abrir el archivo que tiene la macro por primera vez en LibO, la macro funciona (aparentemente). Pero al cerrarlo y volverlo a abrir , deja de funcionar y da errores por todos lados.
lo que hace la macro es: si identifica que en la columna (2) de la Hoja("Demo") hay una "I", Entonces copia los valores de las columnas siguientes, en una planilla del mismo libro llamada "VALE2" (esta planilla es similar a un remito).
Al copiar todos los datos, imprime el rango de impresion seleccionado de la Hoja "VALE2".
una vez impreso, Los datos de "VALE2" quedan en vacio , para que se copie otra columna que contenga "I", y asi sucesivamente, hasta encontrarse con vacio en la columna (2) de la Hoja "Demo".
Una vez finalizado todo, todas las columnas que tenian la letra "I", Cambian su Valor por la Letra "P" (para que cuando se vuelva a ejecutar la macro, no vuelva a imprimir lo que ya esta impreso).
Dejo el Codigo pegado abajo.(vale aclarar que fue una de las primeras macro que realice y como funciono, nunca mas la volvi a mejorar).
Sub VALE()
'
' VALE Macro
' IMPRESION DE VALES
'
' Acceso directo: Ctrl+Mayús+O
With Application
.Calculation = xlAutomatic
End With
i = 5
u_STOP = 0
Do While u_STOP = 0
If Sheets("Demo").Cells(i, 2) = "I" Then
Sheets("VALE2").Cells(1, 9) = Sheets("Demo").Cells(i, 1)
Sheets("VALE2").Cells(2, 9) = Sheets("Demo").Cells(i, 5)
Sheets("VALE2").Cells(3, 9) = Sheets("Demo").Cells(i, 6)
Sheets("VALE2").Cells(4, 2) = Sheets("Demo").Cells(i, 8)
Sheets("VALE2").Cells(4, 6) = Sheets("Demo").Cells(i, 9)
Sheets("VALE2").Cells(4, 9) = Sheets("Demo").Cells(i, 7)
Sheets("VALE2").Cells(5, 2) = Sheets("Demo").Cells(i, 10)
Sheets("VALE2").Cells(5, 6) = Sheets("Demo").Cells(i, 11)
Sheets("VALE2").Cells(5, 9) = Sheets("Demo").Cells(i, 12)
Sheets("VALE2").Cells(8, 2) = Sheets("Demo").Cells(i, 13)
Sheets("VALE2").Cells(8, 4) = Sheets("Demo").Cells(i, 14)
Sheets("VALE2").Cells(8, 8) = Sheets("Demo").Cells(i, 15)
Sheets("VALE2").Cells(9, 9) = Sheets("Demo").Cells(i, 29)
Sheets("VALE2").Cells(8, 9) = Sheets("Demo").Cells(i, 17)
Sheets("VALE2").Cells(10, 2) = Sheets("Demo").Cells(i, 19)
Sheets("VALE2").Cells(11, 2) = Sheets("Demo").Cells(i, 20)
Sheets("VALE2").Cells(10, 4) = Sheets("Demo").Cells(i, 3)
Sheets("VALE2").Cells(12, 2) = Sheets("Demo").Cells(i, 21)
Sheets("VALE2").Cells(13, 2) = Sheets("Demo").Cells(i, 22)
Sheets("VALE2").Cells(14, 2) = Sheets("Demo").Cells(i, 23)
Sheets("VALE2").Cells(15, 2) = Sheets("Demo").Cells(i, 24)
Sheets("VALE2").Cells(15, 5) = Sheets("Demo").Cells(i, 27)
Sheets("VALE2").Cells(15, 9) = Sheets("Demo").Cells(i, 28)
Sheets("VALE2").Select
Range("A1 : D5").Select
ActiveSheet.PageSetup.Orientation = xlPortrait
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("VALE2").Cells(1, 9) = ""
Sheets("VALE2").Cells(2, 9) = ""
Sheets("VALE2").Cells(3, 9) = ""
Sheets("VALE2").Cells(4, 2) = ""
Sheets("VALE2").Cells(4, 6) = ""
Sheets("VALE2").Cells(4, 9) = ""
Sheets("VALE2").Cells(5, 2) = ""
Sheets("VALE2").Cells(5, 6) = ""
Sheets("VALE2").Cells(5, 9) = ""
Sheets("VALE2").Cells(8, 2) = ""
Sheets("VALE2").Cells(8, 4) = ""
Sheets("VALE2").Cells(8, 8) = ""
Sheets("VALE2").Cells(8, 9) = ""
Sheets("VALE2").Cells(9, 9) = ""
Sheets("VALE2").Cells(10, 2) = ""
Sheets("VALE2").Cells(11, 2) = ""
Sheets("VALE2").Cells(10, 4) = ""
Sheets("VALE2").Cells(12, 2) = ""
Sheets("VALE2").Cells(13, 2) = ""
Sheets("VALE2").Cells(14, 2) = ""
Sheets("VALE2").Cells(15, 2) = ""
Sheets("VALE2").Cells(15, 5) = ""
Sheets("VALE2").Cells(16, 9) = ""
Sheets("Demo").Select
End If
If Sheets("Demo").Cells(i, 2) = "" Then u_STOP = 1
i = i + 1
Loop
Sheets("Demo").Select
E = 5
u_STOP = 0
Do While u_STOP = 0
If Cells(E, 2) = "I" Then Cells(E, 2) = "P"
If Cells(E, 2) = "" Then u_STOP = 1
E = E + 1
Loop
Sheets("Demo").Select
End Sub