Ayuda con Macro para OpenOffice

Discute sobre la aplicación de hojas de cálculo
Responder
ortizguillermo
Mensajes: 2
Registrado: Lun Feb 06, 2017 10:46 pm

Ayuda con Macro para OpenOffice

Mensaje por ortizguillermo »

Buenas Tardes Srs Openoffice, soy nuevo en el mundo openoffice, solicito de su ayuda, estoy trabajando en un pequeño archivo que se me hace dificil trabajarlo en Openoffice, ¿me pueden ayudar? Les adjunto el codigo:

Código: Seleccionar todo

Public Sub Registrarpuntualidad()
Dim registros As Long
Dim nombreregistro As String

Application.ScreenUpdating = False

nombreregistro = "C:\Users\guillermo.blandon\Documents\Registro Puntualidad.xls"
Workbooks.Open nombreregistro

registros = Range("AA1").Value
Range("A2").Offset(registros, 0).FormulaR1C1 = "=NOW()"
Range("A2").Offset(registros, 0).Select

Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("A2").Offset(registros, 1).FormulaR1C1 = ThisWorkbook.Path

Range("A2").Offset(registros, 2).FormulaR1C1 = "=MID(MID(RC[-1],FIND(""\Users\"",RC[-1])+LEN(""\Users\""),100),1,FIND(""\"",MID(RC[-1],FIND(""\Users\"",RC[-1])+LEN(""\users\""),100))-1)"
Range("A2").Offset(registros, 2).Select
Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("A2").Offset(registros, 3).FormulaR1C1 = "=IF(TEXT(RC[-3],""hh:mm"")*1<R1C10,""Entrada"",""Salida"")"
Range("A2").Offset(registros, 3).Select

Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

ActiveWorkbook.Close True

Windows("Puntualidad").Activate

Application.ScreenUpdating = True
MsgBox "Registro Realizado Satisfactoriamente"

ActiveWorkbook.Close False

End Sub
Última edición por mauricio el Lun Feb 06, 2017 11:17 pm, editado 1 vez en total.
Razón: Usar etiquetas CODE
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ayuda con Macro para OpenOffice

Mensaje por fornelasa »

Es imposible que alguien traduzca tu macro VBA entre otras cosas debido a por ejemplo:
1) Haces referencia a un archivo que solo tu conoces.
2) Parece que tienes un rango con nombre llamado "registros" que solo tu sabes donde esta.
3) Parece que hay incongruencia en esta parte del codigo debido a que cierras el archivo y despues pides se seleccione ¿¿¿???

Código: Seleccionar todo

ActiveWorkbook.Close True
Windows("Puntualidad.xls").Activate
4) Utilizas una formula que solo tu sabes que hace

Código: Seleccionar todo

Range("A2").Offset(registros, 2).FormulaR1C1 = "=MID(MID(RC[-1],FIND(""\Users\"",RC[-1])+LEN(""\Users\""),100),1,FIND(""\"",MID(RC[-1],FIND(""\Users\"",RC[-1])+LEN(""\users\""),100))-1)"
5) Etcetera.

No esperaras que alguien la traduzca con esos unicos datos ..... ¿ o si?

Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
ortizguillermo
Mensajes: 2
Registrado: Lun Feb 06, 2017 10:46 pm

Re: Ayuda con Macro para OpenOffice

Mensaje por ortizguillermo »

OK, entiendo, gracias por la pronta respuesta, explico esto.

Estoy trabajando en un registro de entradas del personal que trabaja en la empresa donde estoy trabajando.
Ellos tienen Openoffice 4 por reduccion de gastos.

El archivo puntualidad ellos lo tendran en su escritorio y en excel trabaja bien, quise hacer el intento en openoffice y no ejecuta, es por el lenguaje. El punto es que el archivo al abrirse apertura el Archivo Registro Puntualidad

Fecha y Hora Direccion Usuario Accion
06/02/2017 16:24 C:\Users\guillermo.blandon\Documents guillermo.blandon Salida
06/02/2017 16:33 C:\Users\guillermo.blandon\Documents guillermo.blandon Salida
06/02/2017 16:35 C:\Users\guillermo.blandon\Documents guillermo.blandon Salida
06/02/2017 17:10 C:\Users\guillermo.blandon\Documents guillermo.blandon Salida

La formula que aparece ahi es una =MED(MED(B6,ENCONTRAR("\Users\",B6)+LARGO("\Users\"),100),1,ENCONTRAR("\",MED(B6,ENCONTRAR("\Users\",B6)+LARGO("\users\"),100))-1)
Que lo que hace es buscar \Users\ dentro de la direccion y extraera el usuario (a menos que me ayuden con Application.username) a como sale en la muestra.
Variable Registros es el conteo de datos que hay en la BD, Celda AA1 que es una formula CONTARA enfocada en el nombre del usuario.

Ya adjunte los archivos para ver si me pueden ayudar

Gracias de Antemano
Adjuntos
Registro Puntualidad.xls
Archivo que contendra el registro de todo el personal del depto
(26.5 KiB) Descargado 90 veces
Puntualidad.xls
Archivo que aperturara Registro Puntualidad y actualizara la bd con los datos de entrada del usuario
(38 KiB) Descargado 81 veces
OpenOffice 3.1 en Windows Vista
Avatar de Usuario
fornelasa
Mensajes: 3268
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: Ayuda con Macro para OpenOffice

Mensaje por fornelasa »

Intenta con este código, no es igual pero si muy similar:

Obvio, pega el código en un archivo .ods por ejemplo "Puntualidad.ods"

Asigna la macro al evento "Abrir Documento" (Herramientas <> Personalizar <> Pestaña Eventos <> Selecciona "Abrir Documento" <> Botón Macro <> ..... Etc.

La ruta/carpeta en donde está el archivo "Puntualidad.ods" debe ser agregada como sitio seguro, es decir: Herramientas <> Opciones <> Seguridad <> Seguridad de macros <> Origenes de confianza <> Agregar ..... Etc.

Código: Seleccionar todo

Sub Registrarpuntualidad()
         Dim mArg()
         Dim aPath() As String
On Error GoTo VerMas
        aDoc = ThisComponent    
       sRuta = ConvertToUrl("C:\Users\guillermo.blandon\Documents\Registro Puntualidad.xls")
        oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mArg() )
        ctrl = oDoc.CurrentController
               ctrl.componentwindow.visible = false
       sheet = ctrl.ActiveSheet
   registros = sheet.getCellRangeByName("AA1").Value
               sheet.getCellByPosition(0, registros + 1).Formula = "=NOW()"
       texto = sheet.getCellByPosition(0, registros + 1).String
               sheet.getCellByPosition(0, registros + 1).String = texto
       aPath = split(oDoc.Url,"/")
               aPath(UBound(aPath)) = "" 
       sPath = join(aPath,"/")         
sheet.getCellByPosition(1, registros + 1).String = sPath 
sheet.getCellByPosition(2, registros + 1).String = Environ("USERNAME")
sheet.getCellByPosition(3, registros + 1).Formula = "=IF(VALUE(RIGHT(OFFSET($A$1;AA1;0);5))<$J$1;""Entrada"";""Salida"")"
       texto = sheet.getCellByPosition(3, registros + 1).String
sheet.getCellByPosition(3, registros + 1).String = texto
        oDoc.Store(True)
        ctrl.componentwindow.visible = true
        oDoc.Close(True)
       sRuta = "private:factory/scalc"
oNuevoDocumento = StarDesktop.loadComponentFromURL( sRuta, "_default", 0, mArg() )      
        aDoc.Close(True)
        MsgBox "Registro Realizado Satisfactoriamente"
Exit Sub
           VerMas:
            MsgBox "Error, parece que no se ha encontrado el archivo"           
End Sub
 Editado: ********** He hecho unos ligeros cambios. ********** 
Saludos, Federico.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Responder