[RESUELTO] Insertar fecha automáticamente
[RESUELTO] Insertar fecha automáticamente
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.
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
Razón: Marcar como resuelto
Re: Insertar fecha automáticamente
En el foro inglés, Villeroy publicó una macro http://user.services.openoffice.org/en/ ... 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.
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
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.
Código: Seleccionar todo
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
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
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
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.
Re: Insertar fecha automáticamente
Gracias amigo, es justo lo que buscaba y todo funciona correctamente.
Muchas gracias por tu ayuda.
Muchas gracias por tu ayuda.
-
- Mensajes: 7
- Registrado: Jue Jun 14, 2012 1:54 pm
Re: [Resuelto]Insertar fecha automáticamente
¿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
Re: [RESUELTO] Insertar fecha automáticamente
No es posible hacerlo sin macros, pues =Ahora() se actualiza cada vez que se recalcula la hoja, o se imprime, o se guarda.
Saludos
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
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
Re: [RESUELTO] Insertar fecha automáticamente
En el ejemplo anexo, en cuanto agregan una clave o el nombre del empleado, inserta la fecha en la columna respectiva...
Saludos
Saludos
- Adjuntos
-
- Sin título 1.ods
- (10.96 KiB) Descargado 2089 veces
______________________________________________
"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
Re: [RESUELTO] Insertar fecha automáticamente
Ummmm, muy original.
+1
Saludos
+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
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
Re: [RESUELTO] Insertar fecha automáticamente
Original y simple (como es preferible)
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?
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.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Re: [RESUELTO] Insertar fecha automáticamente
Selecciona cualquier celda de estos rangos y ve a Datos... Validez... ahí esta el secreto... claro, mi amigo FJCC-ES nos lo enseño...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?
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
Re: [RESUELTO] Insertar fecha automáticamente
Me estaba volviendo loco, buscando por eventos, formatos ... Cuando lo veas, dale las gracias a FJCC-ES en mi nombre.
A ver si no me olvido de este truco, es como un evento de celda «al cambiar valor».
Gracias también a ti.
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.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Re: [RESUELTO] Insertar fecha automáticamente
Y con la ventaja que lo puedes extender, simplemente, con la herramienta brocha para copiar estilos !!!!!
Saludos
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
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
-
- Mensajes: 7
- Registrado: Jue Nov 20, 2014 4:57 pm
Re: [RESUELTO] Insertar fecha automáticamente
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
Re: [RESUELTO] Insertar fecha automáticamente
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
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
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
Re: [RESUELTO] Insertar fecha automáticamente
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
Re: [RESUELTO] Insertar fecha automáticamente
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
https://forum.openoffice.org/es/forum/v ... fecha+hora
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
Re: [RESUELTO] Insertar fecha automáticamente
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.
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