............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

HORAS MUNDIALES SIMULTANEAS

Ver el tema anterior Ver el tema siguiente Ir abajo

HORAS MUNDIALES SIMULTANEAS

Mensaje por GalileoGali el Vie Jul 04, 2008 1:09 pm

En un foro consultan sobre como ver las horas de distintas localidaes al mismo tiempo en la planilla de excel.
Bueno, Tomo la hora de mi pais de [Tienes que estar registrado y conectado para ver este vínculo] mediante una consulta web, luego el resto es solo formulas para restar la cantidad de horas desde Greenwich, (tener en cuenta que esto puede cambiar en cada pais por razones estacionales u otras)


[Tienes que estar registrado y conectado para ver este vínculo]

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por P@li el Dom Jul 06, 2008 7:55 pm

Es un excelente aporte Gali!!!
Una pregunta, se puede evitar ese cartel que aparece al inicio advirtiendo sobre actualizar automáticamente los vínculos externos?
Quizás se podría lograr con XMLHTTP, consultando la página manualmente, y no automáticamente por excel...

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por GalileoGali el Dom Jul 06, 2008 8:38 pm

Independientemente de tu solucion, que sera bienvenida como enfoque, que desconozco, aunque ya deberia estar aprendiendo con la cantidad de veces que me has explicado de etiquetas de apertura y cierre

Como andan esos estudios...??

Mira recordè que el file que tengo en el banco, actualiza valores de la Pagina de Fondos Comunes de Inversion Pellegrini y no tiene alertas. Acudi a esto
Primero Posicionado en la Celda B2 click derecho, Propiedades del rango de datos y alli "Actualizar al Abrir" destildar
entonces asociar a una WorkBook_Open
el siguiente codigo
Sub Actualizar()
Range("B2").QueryTable.Refresh BackgroundQuery:=False
End Sub

Pero hete aqui Pablito que aqui podrias intervenir vos con el Objeto (mmmmInternetExplores?, QueryTables, Application.Timer???)....trando de manejar la siguiente situacion que reconozco, puede llegara ocurrir y es la siguiente:

Problemas de conexion impiden lograr la actualizacion, entonces se tilda temporariamente la PC, pero se toma su tiempo antes de comunicar el error y liberar la PC, para seguir adelante....

Me explico cual seria l intencion, atajar el posible error, No hay conexion, con la pagina, o la que se esta intentando "esta tardando demasiado"...
Yendo a otro tema , te tengo una preguntita de esas de APis y ventanas, pero tendria que formulartela por telefono...asi que si podes, escribime a mi correo....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por P@li el Lun Jul 07, 2008 1:01 pm

Una primera idea que se me ocurrió fue con internetexplorer.application, pero con eso gastaría recursos de memoria demás, en cambio ahorro esa memoria usando el objeto XMLHTTP, como ya lo había comentado.

La función (UDF) que propongo puede ser llamada incluyendo opcionalmente la distancia al horario universal UTC (Tiempo Universal Coordinado), o GMT (creo que así lo llama Windows), en horas.
La sintaxis es la siguiente:
=getUTC([dif])

Falta ver la manera de actualizar el horario cada cierto tiempo, quizás se podría lograr con Application.OnTime y Application.CalculateFull, pero tengo que investigar un poco.

A la tarde, después de las 19:00 hs. (GMT -3:00 / Buenos Aires - Georgetown) voy a estar conectado en MSN, si no podes entrar avisame y te paso mi numero.

Código:

Function getUTC(Optional dif As Integer = 0) As Date
    Dim tempdate As String
    'el elemento xml va a ser nuestro "explorador"
    Dim xml As MSXML2.ServerXMLHTTP60
    'creamos el elemento
    Set xml = New MSXML2.ServerXMLHTTP60
    'para abrir la página necesitamos configurar los parametros necesarios,
    'el metodo puede ser "get" o "post", dependiendo de los valores que acepte el servidor que vamos a llamar
    'eso depende del que programo la página
    'el método get lo podemos distinguir porque son las variables que se envian en la misma direccion a la pagina
    'despues de un signo de interrogacion
    'por ejemplo:
    '[Tienes que estar registrado y conectado para ver este vínculo]
    'en esta url se pasaron dos valores de variables
    '[nombre] que es igual a 'pablo' y
    '[apellido] que es igual a 'gonzalez'
    'ambas con el metodo get
    '
    'el segundo parametro es justamente la direccion de la pagina web que vamos a visitar
    'y en la misma ya incluimos los valores de las variables que vamos a enviar
    'en este caso, iso=ES
    '
    'la pagina finalmente nos va a dar el horario de España, incluyendo el de Madrid
    'pero el que voy a usar es el horario universal UTC,
    'al que despues vamos a añadir las diferencias relativas a la posicion del pais
    On Error Resume Next
    xml.Open "get", "http://www.horamundial.com/verpais.cgi?iso=ES"
    'si se produjo algun error al intentar abrir la conexion,
    'enviamos un mensaje de error
    If Err.Number <> 0 Then
        msgError Err.Number, Err.Description
        Set xml = Nothing
        Exit Function
    End If
    'cuando enviamos los valores,
    'el objeto envia la informacion al servidor,
    'y este devuelve el resultado de la pagina,
    'del que vamos a poder obtener el codigo fuente para buscar el valor que queremos obtener
    xml.send
    'si la propiedad status es igual a 200 está todo ok,
    'de lo contrario tenemos un error de conexion
    If xml.Status = 200 Then
        'la propiedad responseText, contiene el codigo fuente devuelto por el servidor
        'a partir del caracter 2479,
        'está el horario UTC, y abarca 8 caracteres,
        'asi que podemos recuperarlo con la funcion MID
        tempdate = Mid(xml.responseText, 2479, 8)
        'primero vamos a comprobar que el resultado sea una fecha
        'si la validacion es incorrecta enviamos un mensaje de error
        If IsDate(tempdate) Then
            getUTC = TimeValue(tempdate)
        Else
            msgError 13, "El servidor ha devuelto un valor inválido"
            Set xml = Nothing
            Exit Function
        End If
    Else
        'si por algun motivo fallo la conexion con el servidor enviamos un mensaje de error
        msgError 520, "Error de conexión: " & xml.statusText
        Set xml = Nothing
        Exit Function
    End If
    'si el parametro dif (diferencia UTC) es distinto a cero,
    'vamos a agregar las horas q sean necesarias segun los requerimientos del usuario
    If dif <> 0 Then
        getUTC = DateAdd("h", dif, getUTC)
    End If
    'vaciamos el objeto xml
    Set xml = Nothing
End Function

Sub msgError(Optional num As Long = 0, Optional desc As String = "")
    MsgBox "Error " & num & ":" & vbCrLf & desc, vbCritical + vbOKOnly, "Error"
End Sub

Espero tu comentario,
y si se puede nos encontramos más tarde en msn.

Saludos.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por GalileoGali el Dom Jul 13, 2008 6:27 pm

P@LI: antes que otra cosa te cuetno que anduve con poco tiempo. Pero tuve el suficiente para probar SetForegroundWindow, y con Application.SendKeys, esta transmitiendo, superjoya, inclusive cuando el Campo es Autotab, se desplaza y cuando no, ya probe "{TAB}", y OK.
Pero bueno me queda ahora enfrentar los dos o tres programas que teniena la dificultad y adaptarlos....eso ya es solo una cuestion de tiempo y ganas..., fundamentalmente

Ahora bien estuve probando tu UDF, PERO setiene en la Declaracion de la variable xml as MSXML2.ServerXMLHTTP60.
"No se ha definido el tipo definido por el usuario"

Busque alguna referencia para habilitar y encontre una que carga la msxml2.dll. La activé, pero el error continúa....
lo dejo en tus manos
Me voy a ver tu otro post...., aunque ese de las ventanas, ya lo estuve probando, y anda de "10".....

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por P@li el Dom Jul 13, 2008 8:33 pm

Probemos esto:
Cambiá las líneas que dicen
Dim xml as MSXML2.ServerXMLHTTP60
set xml=new MSXML2.ServerXMLHTTP60

por:
dim xml as object
set xml=createobject("MSXML2.ServerXMLHTTP60")

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por GalileoGali el Dom Jul 13, 2008 8:42 pm

Pali;

Hecho el cambio:
se detiene la macro en
Set xml = CreateObject("MSXML2.ServerXMLHTTP60"), digamos que se queda tildada la corrida del codigo, gralte, hay diferencias entre el Nombre del tipo de objeto, y la cadena que se usa para Crear o Getear el Object, no sera distinta?
A popòsito donde se podra conseguir uan tabla que especifique:

1) Nombre de la dll u ocx
que
2) corresponde con determinado nombre de una referencia
y
corresponde a una denominacion de Tipo de "........"
y
4) Puede ser Creada o Geteada mediante invocacion de la cadena: """""....."""""

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1963
Edad : 62
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por P@li el Lun Jul 14, 2008 6:41 pm

Voy a investigar un poco acerca del tema,
La referencia correcta es Microsoft XML, v6.0 (msxml6.dll)
No habría problemas en usar una versión anterior de la dll, como la 4 por ejemplo, pero entonces, el objeto debería ser del tipo MSXML2.ServerXMLHTTP40.

El problema es que una misma dll, puede contener varios tipo de objetos, así por ejemplo la de excel, tiene Workbook, Worksheet, Range, etc, etc, todos pertenecen a la misma dll.

Así una dll, va a tener un "nombre de clase", como por ejemplo la de excel es Excel, y la de msxml6 es MSXML2.

P@li
Admin

Masculino Cantidad de envíos : 243
Edad : 34
Ciudad - Pais : Buenos Aires, Argentina
Version de Excel : Microsoft Excel 2002 (10.2614.2625)
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Re: HORAS MUNDIALES SIMULTANEAS

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.