[RESUELTO] Insertar fecha automáticamente

Discute sobre la aplicación de hojas de cálculo

[RESUELTO] Insertar fecha automáticamente

Notapor layug » Sab May 23, 2009 2:47 pm

Hola amigos, mi problema es el siguiente:
He intentado sin resultados positivos que mi hoja de cálculo ingrese automáticamente la fecha del sistema en una columna específica sin que actualice toda la colunma a dicha fecha,es decir,lo que pretendo es que de manera automática OpenOffice ingrese la fecha del sistema en la fila que introduzco datos en la columna a la que definí como fecha.
Última edición por mauricio el Jue Sep 20, 2012 2:48 pm, editado 3 veces en total
Razón: Marcar como resuelto
layug
 
Mensajes: 2
Registrado: Sab May 23, 2009 2:14 pm

Re: Insertar fecha automáticamente

Notapor FJCC-ES » Dom May 24, 2009 2:16 am

En el foro inglés, Villeroy publicó una macro http://user.services.openoffice.org/en/forum/viewtopic.php?f=21&t=12575 que inserta la fecha del sistema en columna A cuando se introducen datos en una fila. Es fácil cambiar la macro para insertar la fecha en otra columna.
Código: Seleccionar todo   Expandir vistaContraer vista
    REM  *****  BASIC  *****

    Sub test_splitStringAddress()
    Dim s$,sSh$,sRg$
       a=Array("'my sheet'.A1", _
       "$'my sheet'.A", _
       "'file:///doc.ods'#'my sheet'.A1", _
       "$'file:///doc.ods'#$'my sheet'.A")
       for i= 0 to uBound(a())
          s = a(i)
          splitStringAddress(s,sSh,sRg)
          print sSh,sRg
       next
    End Sub
    sub splitStringAddress(s$, sSheet$, sRange$)
    dim sURL$, linkPos%, sheetPos%
       ' remove leading $ in any case:
       if left(s, 1) = "$" then s = mid(s, 2)
       linkPos = instr(s, "'#")
       if linkPos > 0 then
          sheetPos = instr(linkPos, s, ".")
          sURL = left(s, linkPos +1)
          sSheet = mid(s, linkPos +2, sheetPos -linkPos -2)
          sRange = mid (s, sheetPos +1)
       else
          sheetPos = instr(s, ".")
          if sheetPos > 0 then
             sSheet = left(s, sheetPos -1)
             sRange = mid (s, sheetPos +1)
          else
          sRange = s
          endif
       endif
       if left(sSheet, 1) = "$" then sSheet = mid(sSheet, 2)
       if (left(sSheet, 1) = "'") and (right(sSheet, 1) = "'") then
          sSheet = mid(sSheet, 2, len(sSheet) -2)
       endif
       sSheet = sURL & sSheet
    end sub
    '-------usefull helper-function, returning focussed cell
    'by UROS > http://www.oooforum.org/forum/viewtopic.phtml?t=19348
    REM 2006-08-09: fixed error when row > 8191
    '       ;sh;                     ;lSheet +3
    '100/60/0;1;tw:309;2/2/0/0/0/0/2/0/0/0/0;253/8191/0/0/0/0/2/246/0/0/8158;0/0/0/0/0/0/2/0/0/0/0
    '100/60/0;1;tw:309;2/2/0/0/0/0/2/0/0/0/0;253+8192+0+0+0+0+2+246+0+0+8158;0/0/0/0/0/0/2/0/0/0/0
    Function getActiveCell(oView)
    Dim as1(), lSheet&,lCol&,lRow$, sDum as String,bErr as Boolean
       as1()  = Split(oView.ViewData, ";")
       lSheet = CLng(as1(1))
       sDum = as1(lSheet +3)
       as1() = Split(sDum, "/")
       on error goto errSlash
          lCol = CLng(as1(0))
          lRow = CLng(as1(1))
       on error goto 0
       getActiveCell = oView.Model.getSheets.getByIndex(lSheet).getcellByPosition(lCol,lRow)
    exit Function
    errSlash:
       if NOT(bErr) then
          bErr = True
          as1() = Split(sDum, "+")
          resume
       endif
    End Function
    Sub printStamp(oCell)
        '''Put the current time into the active cell.
        'No formatting intended. Apply any date/time formatting you like.'''
        oCell.setFormula("=NOW()")
        oCell.setValue(oCell.getValue())
    End Sub

    Sub _NowToColumnAByValidation(sAddr, bOverwrite)
    Dim s$,r$
        iCol = 0
        doc = thisComponent
        splitStringAddress(sAddr,s,r)
        sh = doc.Sheets.getByName(s)
        rg = sh.getCellRangeByName(r)
        iRow = rg.RangeAddress.StartRow
        c = sh.getCellByPosition(iCol, iRow)
        if bOverwrite or (len(c.getFormula())=0)then printStamp(c)
    End Sub

    Sub _NowToTimeStampCell(bOverwrite)
        oNames = thisComponent.NamedRanges
        oName = oNames.getByName("TimeStamp")
        oRg = oName.getReferredCells()
        c = oRg.getCellByPosition(0,0)
        if bOverwrite or (len(c.getFormula())=0)then printStamp(c)
    End Sub

    Sub NowToEmptyColumnAByValidation(sFormula, sAddr):
        '''Current time to empty column A, triggered by failing validation'''
        _NowToColumnAByValidation(sAddr, False)
    End Sub

    Sub NowToColumnAByValidation(sFormula, sAddr):
        '''Current time to column A, triggered by failing validation'''
        _NowToColumnAByValidation(sAddr, True)
    End Sub

    Sub NowToTimeStampCell():
        '''Put current time into a cell named "TimeStamp"'''
        _NowToTimeStampCell(True)
    End Sub

    Sub NowToEmptyTimeStampCell():
        '''Put current time into an empty cell named "TimeStamp"'''
        _NowToTimeStampCell(False)
    End Sub

    Sub NowToActiveCell():
        '''Put current time into the currently active input cell'''
        oDoc = thisComponent
        oView = oDoc.getCurrentController()
        oCell = getActiveCell(oView)
        printStamp(oCell)
    End Sub

1.Copiar el código al archivo: Seleccione el código y elija Editar → Copiar.
Elija Herramientas → Macros → Organizar Macros → OpenOffice Basic. Escoja el archivo y su biblioteca Standard y haga clic en el botón “Nuevo”. Acepte el nombre Module1 y pegue (Editar → Pegar) el código debajo del texto “End Sub”

2.Cambiar el código: Busque esta sección del código
Código: Seleccionar todo   Expandir vistaContraer vista
    Sub _NowToColumnAByValidation(sAddr, bOverwrite)
    Dim s$,r$
        iCol = 0  'Cambie la columna aqui. Columna A=0, B=1, C=2, etc.
        doc = thisComponent
        splitStringAddress(sAddr,s,r)
        sh = doc.Sheets.getByName(s)
        rg = sh.getCellRangeByName(r)
        iRow = rg.RangeAddress.StartRow
        c = sh.getCellByPosition(iCol, iRow)
        if bOverwrite or (len(c.getFormula())=0)then printStamp(c)
    End Sub

y cambie iCol = 0. El cero significa columna A. Uno significaría Columna B, 2 significaría Columna C, etc.

3.Definir validez del contenido de celdas: Seleccione las celdas que contendrán datos. Elija Datos → Validez. En la pestaña Criterios escoja Permitir=Longitud de texto, Datos=igual, Valor = 0. En la pestaña Mensaje de Error escoja Acción = Macro. Haga clic en el botón “Examinar”. Escoja el archivo, su biblioteca Standard, y Module1. En la lista Nombre de la Macro, escoja “NowToColumnAByValidation”.

Ahora cuando introduzca datos en las celdas que seleccionó en la sección 3, la fecha del sistema aparecerá en la columna que eligió en la sección 2.
FJCC-ES
 
Mensajes: 565
Registrado: Mié Mar 25, 2009 1:19 am
Ubicación: Colorado, USA

Re: Insertar fecha automáticamente

Notapor layug » Dom May 24, 2009 9:43 pm

Gracias amigo, es justo lo que buscaba y todo funciona correctamente.
Muchas gracias por tu ayuda.
layug
 
Mensajes: 2
Registrado: Sab May 23, 2009 2:14 pm

Re: [Resuelto]Insertar fecha automáticamente

Notapor Gustavo Mattoni » Jue Sep 20, 2012 5:08 am

¿no hay una forma de hacerlo sin usar macros? o sea con simples fórmulas tipo..=ahora() y que ésta no cambie automáticamente?
LibreOffice 3.5.4.2 con windows 7
Gustavo Mattoni
 
Mensajes: 7
Registrado: Jue Jun 14, 2012 1:54 pm

Re: [RESUELTO] Insertar fecha automáticamente

Notapor SLV-es » Jue Sep 20, 2012 6:13 pm

No es posible hacerlo sin macros, pues =Ahora() se actualiza cada vez que se recalcula la hoja, o se imprime, o se guarda.

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor mauricio » Jue Sep 20, 2012 7:04 pm

En el ejemplo anexo, en cuanto agregan una clave o el nombre del empleado, inserta la fecha en la columna respectiva...

Saludos
Adjuntos
Sin título 1.ods
(10.96 KiB) 1014 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
AOO 4.1 | LibO 5.3 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
mauricio
 
Mensajes: 5376
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: México, D.F.

Re: [RESUELTO] Insertar fecha automáticamente

Notapor SLV-es » Vie Sep 21, 2012 1:18 am

Ummmm, muy original.

+1

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor xiseme » Vie Sep 21, 2012 12:07 pm

Original y simple (como es preferible) :mrgreen:

Ahora bien, ¿como ha hecho Mauricio para que la macro sólo se ejecute al modificar las celdas A2-A20 y C2-C20 y sólo con esas?
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
xiseme
 
Mensajes: 1837
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Insertar fecha automáticamente

Notapor mauricio » Vie Sep 21, 2012 4:55 pm

xiseme escribió:Ahora bien, ¿como ha hecho Mauricio para que la macro sólo se ejecute al modificar las celdas A2-A20 y C2-C20 y sólo con esas?

Selecciona cualquier celda de estos rangos y ve a Datos... Validez... ahí esta el secreto... claro, mi amigo FJCC-ES nos lo enseño...

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor xiseme » Vie Sep 21, 2012 6:39 pm

Me estaba volviendo loco, buscando por eventos, formatos ... Cuando lo veas, dale las gracias a FJCC-ES en mi nombre. :D
A ver si no me olvido de este truco, es como un evento de celda «al cambiar valor».
Gracias también a ti.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
xiseme
 
Mensajes: 1837
Registrado: Lun Nov 24, 2008 1:13 pm

Re: [RESUELTO] Insertar fecha automáticamente

Notapor SLV-es » Vie Sep 21, 2012 7:35 pm

Y con la ventaja que lo puedes extender, simplemente, con la herramienta brocha para copiar estilos !!!!!

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor olavarria_l » Mar Ene 19, 2016 3:21 am

Holaa te hago una consulta yo tengo en una lista desplegable 3 valores pendiente pasado y terminado, los uso para determinar el estado de las tareas y me gustaria ver como se puede cambiar el macro para que aparesca la fecha cuando en la lista lo pongo como Terminado.
winwods 8.1 openoffice 4.1.1
olavarria_l
 
Mensajes: 7
Registrado: Jue Nov 20, 2014 4:57 pm

Re: [RESUELTO] Insertar fecha automáticamente

Notapor mauricio » Mar Ene 19, 2016 5:15 am

Por favor, no hagas consultas a alguien en particular dado que cualquier te puede responder...

Tu pregunta es diferente del tema tratado y resuelto en este tema, por favor, abre un nuevo tema, de preferencia con un ejemplo lo más explicativo posible, obtendrás mejores respuestas...

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor deniscapo » Jue Jun 15, 2017 12:58 am

Hola mira tiene que ver quiero hacer lo mismo pero con la fecha y la hora en la celda intente hacer lo de arriba pero no me sale me da un error de sintaxsis seguro meti la pata podrias referirme o decirme como desde ya gracias y un abrazo desde Uruguay
OpenOffice 4.0 en Windows XP
deniscapo
 
Mensajes: 1
Registrado: Jue Jun 15, 2017 12:45 am

Re: [RESUELTO] Insertar fecha automáticamente

Notapor mauricio » Jue Jun 15, 2017 3:25 am

Por favor, es importante hacer una búsqueda primero, tu pregunta ya se ha respondido, por acá:
https://forum.openoffice.org/es/forum/v ... fecha+hora

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

Re: [RESUELTO] Insertar fecha automáticamente

Notapor guillepr » Jue Ago 10, 2017 10:55 pm

hola, ya sé que está resuelto, pero buscando entre las opciones y enlaces a otros foros que pusisteis, encontré una solución muy sencilla.
Hay que activar la iteración en HERRAMIENTAS-OPCIONES-LIBREOFFICE CALC-CALCULAR, y con esta fórmula:

=IF(B1="";"";IF(A1="";NOW();A1))

Al menos es la que he usado yo y me sirve para que cuando en la celda B1 introduzco algún dato, en la A1 pone automáticamente fecha y hora.

Espero no molestar y que os sirva.
libreoffice 5.3.5.2 en windows 10
guillepr
 
Mensajes: 4
Registrado: Mié Ago 09, 2017 2:59 pm


Volver a Calc

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 25 invitados