Excel - Adquisicion de datos en excel.

 
Vista:

Adquisicion de datos en excel.

Publicado por Andres Arevalo (5 intervenciones) el 24/11/2008 02:27:24
Hola; necesito de su ayuda para lo siguiente; en la celda A1 adquiero datos a traves de comunicacion DDE; estos varian automaticamente. Lo que necesito es que cada vez que cambie el valor, este sea copiado a una celda vacia.... En pocas palabras necesito generar un historico con todos los valores e es celda. Espero me hallan entendido gracias.

PSD: La verdad no soy muy bueno haciendo macros....

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Adquisicion de datos en excel.

Publicado por Abraham Valencia (2415 intervenciones) el 25/11/2008 01:49:26
En realidad, el uso de DDE, es considerado obsoleto hasta por microsoft:

http://office.microsoft.com/es-es/excel/HP030662103082.aspx

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Adquisicion de datos en excel.

Publicado por Andres Arevalo (5 intervenciones) el 25/11/2008 05:09:25
Abraham, gracias por responder, la verdad no tenia ni idea de que este tipo de comunicacion ya fuera obsoleta. Quizas puedas ayudarme en lo siguiente; con ayuda de algunos foros he logrado hacer un codigo en el VBA de excel el cual adquiere datos en la celda A1 y los envia a una celda libre en la misma columna, cada vez que se hace esto muestra la fecha y la hora de dicho proceso. El problema es que es necesario introducir el dato en A1 y presionar enter para que la macro haga su trabajo. Lo que nececito es que el dato de A1 sea enviado a una celda libre cuando cambie, sin necesidad de darle enter,ni click, ni nada por el estilo. Simplemente que funcione cuando dicha celda sea modificada externamente o por otro programa. Adjunto el codigo; espero me puedas ayudar... Muchas Gracias.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then 'columna A
Target.Offset(0, 1) = Date
Target.Offset(0, 2) = Time
End If

If Target.Address = "$A$1" Then
fila = 2
Do While Target.Offset(fila, 0).Value <> ""
fila = fila + 1
Loop
Target.Offset(fila, 0).Value = Target.Value
End If

End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Adquisicion de datos en excel.

Publicado por Abraham Valencia (2415 intervenciones) el 25/11/2008 17:26:13
Pero si haces una modificacion "de forma externa" o atraves de "otro programa", no seria mas facil ahi mismo enviar con esa misma "apliacion externa" u "otro programa" la fehca y la hora?

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Adquisicion de datos en excel.

Publicado por Andres Arevalo (5 intervenciones) el 25/11/2008 17:52:19
Si tienes razón, la hora y fecha la puedo tomar desde el otro programa.... Lo que me preocupa realmente es que la macro no detecta la variacion de la celda A1 cuando es modificada desde otro programa... Te comento, lo que necesito es generar una pequeño reporte con los diversos datos adquiridos de un PLC ( controlador logico Programable), datos que actualmente solo recibo en la celda A1 y que se refrescan cada vez que el PLC genera algun evento. Para que te hagas una mejor idea imaginate que el PLC cuenta de 0 hasta 100 por ejemplo y este conteo los ves en la celda A1. Usando la macro necesito coger cada numero y enviarlo a una celda vacia con el objetivo de tener un historico de los datos visualizados en la celda A1.. Se que suena un poco enredado pero espero que me hallas entendido.......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Adquisicion de datos en excel.

Publicado por Abraham Valencia (2415 intervenciones) el 25/11/2008 20:23:44
Pues si hablamos de una PLC, pues, la verdad, hacer lo que pides no es tan simple, ya que la conexion necesariamente(hasta donde recuerdo), debe ser a traves de VBA, pero, dicha conexion depende no es, digamos, "universal", y depende del modelo, marca, entrada, etc, de tu PLC, y dependiendo de ella, quizas haya que usar API's y/o ocx y/o dll y/o mscommon y/o winsokc

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Adquisicion de datos en excel.

Publicado por Andres Arevalo (5 intervenciones) el 25/11/2008 21:47:15
El modelo y marca del PLC ya lo tengo definido, voy a usar un Festo FC34 el cual tiene una interfaz ethernet con la cual voy a comunicarlo con el pc asignandole una dirrecion IP en el mismo segmento de red. La comunicacion ya esta esta funcionando a traves de un software llamado dataserver. El PLC recibe una serie de señales digitales que son enviadas por varios sensores. El pLC realiza el conteo de cada señal y envia ese valor a una celda de excel.....Eso ya funciona..... Lo que no he logrado es que la macro que hice detecte el cambio de los valores en la celda A1,. Yo estuve mirando y al parecer un worksheet_calculate me podria ayudar en vez del worksheet_change. El dilema esta en que no manejo muy bien el VBA de excel y me genera un error cuando hagola modificacion........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

RE:Adquisicion de datos en excel.

Publicado por JuanC (1237 intervenciones) el 25/11/2008 22:51:06
disculpen q me meta en el tema...
quizá pueda hacerse mediante un timer que chequee el valor de [a1] cada x tiempo y haga lo que corresponda
o también provocando cambios para lanzar el evento Change de la hoja que quizá no se actualiza debidamente al recibir el dato desde el PLC
si no lográs resolverlo contactame x mail que por ahí podemos hacer algo
(inclusive un programa externo que maneje Excel)

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Abraham Valencia
Val: 313
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

RE:Adquisicion de datos en excel.

Publicado por Abraham Valencia (2415 intervenciones) el 26/11/2008 16:16:17
1- Creo que la custion esta mas clara, pero, no si el evento Calculate servira, habria que probarlo, puede que si, pero, no tengo una PLC aqui para probarlo

Private Sub Worksheet_Calculate()
Static ValorAnterior As Variant
If Range("a1") <> ValorAnterior Then
MsgBox "El valor en A1 ha cambiado"
End If
ValorAnterior = Range("a1")
End Sub

2- Juan no hay que disculpar nada ;)

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Adquisicion de datos en excel.

Publicado por Andres Arevalo (5 intervenciones) el 26/11/2008 22:40:59
Les cuento que después de varios intentos logré ajustar el programa, ya funciona correctamente de acuerdo a mis necesidades. Agradezco sus aportes y el interes que demostraron al colaborarme. Sin duda nos pondremos en contacto nuevamente cuando necesite de la ayuda de ustedes. Ahí dejo el codigo para que lo vean, tal vez a alguien le pueda servir en un futuro.

Muchas Gracias.

ANDRES AREVALO
Estudiante Ing. Electrónica

Private Sub Worksheet_Calculate()
Static ValorAnterior As Variant
If Range("a1") <> ValorAnterior Then
Columns("A:E").AutoFit
ActiveSheet.Range("A1").Select
Do While Selection.Offset(fila, 0).Value <> ""
fila = fila + 1
Loop
Selection.Offset(fila, 0).Value = Selection.Value
End If
ValorAnterior = Range("a1")
If Selection.Column = 1 Then 'columna A
ActiveSheet.Cells(fila, 2).Select
Cells(fila + 1, 2) = Date
Cells(fila + 1, 3) = Time
ActiveSheet.Cells(1, 6).Select
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Adquisicion de datos en excel.

Publicado por Yola (1 intervención) el 13/06/2012 05:05:48
Hola. Y como haria si en lugar de capturar los datos del plc que pasan por una celda quiero capturar los datos del plc que pasan por 5 celdas de una fila?? Desde a4 hasta b4. O sea, que cada vez que cambien los valores de estas casillas se copien en una celda vacia... Si me puyedes ayudasr, te agradezco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar