1. AyudaExcel utiliza cookies. Si continuas utilizando AyudaExcel, estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Solucionado Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

Tema publicado en 'Macros y programación VBA' iniciado por verzulsan, 3 Nov 2009.

Estado del tema:
Cerrado para nuevas respuestas
  1. verzulsan

    verzulsan Incondicional de Ayuda Excel

    Registrado:
    25 Oct 2009
    Mensajes:
    812
    Me Gusta recibidos:
    112
    Muy buenas,

    Llevo ya varios dias buscando por internet como resolver el tema de las referencias remotas y no encuentro solucion, he probado ya casi todo lo que se me ha ocurrido pero no consigo avanzar. Os planteo mi problema a ver si por casualidad alguno sabe que es lo que debo estar haciendo mal.

    Tengo un varios excel apuntandose entre ellos, tienen activada la casilla de no preguntar al abrir, el problema es que a veces, uno de esos excel no esta disponible en la red, y el excel que intenta acceder al no disponible se queda congelado, teniendo que reiniciar el PC, ya que son muchas referencias.

    He intentado desactivar la casilla "Actualizar referencias remotas" probando muchas maneras pero no lo he conseguido, la desmarco y al volver a abrir el excel vuelve a estar activada. Es la de la opcion de la foto que pongo a continuacion:
    Imageshack - 45825618

    Luego he intentado ir a "EDICION" / "VINCULOS", y activar la casilla de "MANUAL", la que aparece rodeada de rojo en la foto, pero esta siempre deshabilitada y no encuentro nada por internet que me diga como puedo activarla :'(.
    Imageshack - 17630281

    Ya por ultimo, encontre un post que me ofrecia una macro donde no me preguntara la dichosa pregunta de actualizar referencias:
    CÓDIGO:
    Sub auto_open()
         Application.DisplayAlerts = True
         ActiveWorkbook.UpdateRemoteReferences = True
    End Sub
    Este codigo lo puse en la hoja donde estaban las referencias a otros libros, y todo perfecto, hasta que me dio por cerrar el libro y me encuentro con otro problema mas, la imagen de la ultima foto.
    Imageshack - 19040079

    Ahora me sale ese mensaje cada vez que abro cualquier libro que tenga vinculos, da lo mismo que ponga todas las opciones por defecto tal y como lo tenia antes. Es una locura ya no se que hacer, he intentado de todo.

    Cualquier ayuda que me podais dar seria de gran ayuda, ya que lo unico que intentaba desde el principio era desactivar los vinculos automaticos y establecer la opcion a manual, no se por que algo tan simple como desactivar una casilla puede terminar siendo tan complicado... ¿Por que la desactivo, grabo, entro y vuelve a estar activada? no lo entiendo :'(
    Última edición: 3 Nov 2009
  2. ST_

    ST_ Usuario Activo

    Registrado:
    9 Sep 2008
    Mensajes:
    1.167
    Me Gusta recibidos:
    19
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    me parece que este tema ya estba resuelto con anterioridad :confused:

    de cualquier forma las recomendaciones:
    1.-usar el buscador para ver ejemplos similares

    2.-regresa los valores como estaban por defecto,es decir:
    2.1.-el calculo del libro en automatico
    2.2.-actualizar referencias remotas y
    2.3.-guardar valores de vinculos externos

    3.-despues de eso y con el libro 'destino' abierto (sin el libro origen,por supuesto)
    3.1.-ve al Menu Edicion\Vinculos\pregunta inicial\no mostrar alerta ni actualizar vinculos automaticos
    3.2.-acepta en cada caso
    3.3.-guarda los cambios
    3.4.-abre de nuevo el libro para verificar que ya no te envia el mensaje de advertencia

    4.-para mayor claridad checa la imagen y el adjunto

    5.-por cierto con macros,esto parece funcionar:
    CÓDIGO:
    Sub Evitar_mensaje_de_vinculos()
        ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
    End Sub

    Adjuntos:

  3. josemaria

    josemaria Usuario

    Registrado:
    24 Sep 2008
    Mensajes:
    738
    Me Gusta recibidos:
    5
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    Hola a todos;


    Algo sobre eso creo recordar que lei, y tal y como has dicho funciona, lo que jamas me funciono, fue la tercera opcion: "no mostrar alerta y actualizar vinculos", lo que yo queria es no tener que darle ha aceptar cada vez que abriera el libro, todo lo contrario.

    Pero nunca lo consegui, siempre que abria el libro tenia que darle a aceptar y que actualizara los valores.


    Por cierto, un saludo viejo amigo. ( lo de viejo no es por la edad :p )
  4. verzulsan

    verzulsan Incondicional de Ayuda Excel

    Registrado:
    25 Oct 2009
    Mensajes:
    812
    Me Gusta recibidos:
    112
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    Hola ST, muchas gracias por la bien explicada respuesta, lo malo es que no ha funcionado ya que no tengo esa version de excel, mientras escribia el mensaje estaba pensando donde ponerlo si al final o al principio y al final se me paso ponerlo, de hecho abri un post muy similar a esto hace unos dias pero con una ligera diferencia:
    http://www.ayudaexcel.com/foro/excel-general/7925-como-hacer-que-no-se-abra-explorer-al-actualizar-vinculos-externos.html. En las imagenes que puse en el post arriba, veras que no salen los mismos menus. Mi padre tiene excel 2003 y ahi si he conseguido que funcione con esas opciones que mencionabas, pero en excel 2000 me es completamente imposible.

    He buscado bastante por internet, sin exagerar, (esto lo digo por que soy de los que buscan exaustivamente antes de abrir una consulta que ya puede estar resuelta y que lo mas seguro este, pero esto al ser excel 2000..., por los tiempos de esta version no habia tanto forero como hoy en dia), creo que he buscado por casi todos los foros, e incluso por los ingleses, y solo encontre un caso exacto al mio que lo soluciono cambiandose a una version posterior.

    De todas formas te comento, he encontrado una solucion a mi problema, aun que un tanto retorcida pero bastante efectiva. No se si exponer mi solucion aqui ya que los usuarios de 2003 o 2007 no tendran los mismos problemas, no obstante os comento como he solucionado mi problema:

    Extraje un codigo de una pagina de internet con el cual puedo hacer ping a una direccion de red. Si la direccion no responde en 50ms, entonces devuelve un valor distinto de 0 y si responde devuelve 0. Con este resultado, si existe respuesta, una macro crea todas las referencias a las hojas en red, las arrastra, y por ultimo las copia y pega con forma de valores, asi, al guardar el libro, no guardo con referencias a otros libros y ni corro el riesgo que el otro equipo este apagado dejando en consecuencia el excel colgado.

    Me va bastante bien con esta solucion, es como tener vinculos automaticos pero sin los inconvenientes de "NO SE ENCUENTRA ARCHIVO", "DESEA ACTUALIZAR" y otras cosas que ami por lo menos no me hacen falta, quizas haya poca gente que tenga vinculados archivos en red, pero si un equipo no se encuentra disponible, el excel se queda colgado 21 segundos o asi y no solo eso, sino que luego si encuentra equipo y no el archivo entonces se para las macros en ejecucion... Mi solucion resuelve todo esto.

    Pues eso, que ya lo tengo solucionado y que no me sirvio la solucion del excel 2003 ya que uso 2000. Si os interesa que ponga el codigo que he usado para hacer lo arriba mencionado, buscare un hueco para exponerlo ya que no dispongo de demasiado tiempo y poner cosas por poner...

    Un saludo y gracias por la ayuda ;)
  5. ST_

    ST_ Usuario Activo

    Registrado:
    9 Sep 2008
    Mensajes:
    1.167
    Me Gusta recibidos:
    19
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    pues como decimos en Mex ..de que?

    por otra parte si estoy interesando en tu solución ya que se me hace una forma muy 'inteligente' de resolver problemas cuando no podemoshacerlo por algun otro metodo,asi que esperaremos(seguro que no seré el único) 'pacientemente' para poder darle un vistazo a ese código :)
  6. verzulsan

    verzulsan Incondicional de Ayuda Excel

    Registrado:
    25 Oct 2009
    Mensajes:
    812
    Me Gusta recibidos:
    112
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    Pues el codigo lo extrage este manual sacado de esta pagina, pongo link directo, es una pagina autotraducida de microsoft:
    Cómo hacer ping a una dirección IP con Visual Basic mediante el uso de ICMP

    Es un manual bastante bien explicado, aun que da mas explicaciones de las necesarias, puesto que lo unico que hay que hacer es copiar el primer codigo "El mas extenso" a un modulo cualquiera de nuestro libro, y luego la funcion que va a hacer el ping a una de las hojas donde queramos trabajar.

    Pongo aqui el codigo ya modificado por mi de la hoja donde uso las funciones del modulo importado:
    CÓDIGO:
    Sub HacerPingIP_CreadoVinculos()
        Dim HojaActual As String
        HojaActual = ActiveSheet.Name
        Sheets("refresh").Select
        
       Dim Reply As ICMP_ECHO_REPLY
       Dim lngSuccess As Long
       Dim strIPAddress As String
       
       'Get the sockets ready.
       If SocketsInitialize() Then
          
        'Address to ping
        strIPAddress = Cells(1, 10)
        
        'Ping the IP that is passing the address and get a reply.
        lngSuccess = ping(strIPAddress, Reply)
          
        'Display the results.
        'Cells(1, 1) = strIPAddress
        'Cells(2, 1) = "Raw ICMP code: " & lngSuccess
        'Cells(3, 1) = "Ping Response Message : " & EvaluatePingResponse(lngSuccess)
        'Cells(4, 1) = "Time : " & Reply.RoundTripTime & " ms"
          
        'Clean up the sockets.
        SocketsCleanup
          
        Else
        
        'Winsock error failure, initializing the sockets.
        Debug.Print WINSOCK_ERROR
        
        End If
           
         'Mi macro empieza aqui, resto de arriba copiado de internet
    
    
        If lngSuccess <> 0 Then GoTo IPnolocalizada    
       
        For i = 1 To 5
            Cells(1, i).Select
            ActiveCell.FormulaR1C1 = "" & Cells(i + 10, 12) & ""
        Next i
        
        
        Range("A1:E1").Copy
        Dim Filas As Integer
        
        Filas = Cells(7, 10) - Cells(6, 10) + 1
        ActiveSheet.Paste Destination:=Worksheets("refresh").Range("A2:E" & Filas & "")
        
    
        Range("A1:E" & Filas & "").Select
    
        Selection.Copy
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=False
        
    IPnolocalizada:
        
        Sheets(HojaActual).Select
    End Sub
    Mi macro empieza donde esta el comentario de "If lngSuccess <> 0 Then GoTo IPnolocalizada", el resto es todo de la pagina que menciono al principio.

    Tiene muchas mas opciones el modulo pero realmente a mi lo que me interesaba era la opcion "lngSuccess" que me devuelve 0 o X, segun la informacion de respuesta, donde X es alguno de los siguientes valores de la tabla que pongo a continuacion:
    CÓDIGO:
    Private Const ICMP_SUCCESS As Long = 0
    Private Const ICMP_STATUS_BUFFER_TO_SMALL = 11001                   'Buffer Too Small
    Private Const ICMP_STATUS_DESTINATION_NET_UNREACH = 11002           'Destination Net Unreachable
    Private Const ICMP_STATUS_DESTINATION_HOST_UNREACH = 11003          'Destination Host Unreachable
    Private Const ICMP_STATUS_DESTINATION_PROTOCOL_UNREACH = 11004      'Destination Protocol Unreachable
    Private Const ICMP_STATUS_DESTINATION_PORT_UNREACH = 11005          'Destination Port Unreachable
    Private Const ICMP_STATUS_NO_RESOURCE = 11006                       'No Resources
    Private Const ICMP_STATUS_BAD_OPTION = 11007                        'Bad Option
    Private Const ICMP_STATUS_HARDWARE_ERROR = 11008                    'Hardware Error
    Private Const ICMP_STATUS_LARGE_PACKET = 11009                      'Packet Too Big
    Private Const ICMP_STATUS_REQUEST_TIMED_OUT = 11010                 'Request Timed Out
    Private Const ICMP_STATUS_BAD_REQUEST = 11011                       'Bad Request
    Private Const ICMP_STATUS_BAD_ROUTE = 11012                         'Bad Route
    Private Const ICMP_STATUS_TTL_EXPIRED_TRANSIT = 11013               'TimeToLive Expired Transit
    Private Const ICMP_STATUS_TTL_EXPIRED_REASSEMBLY = 11014            'TimeToLive Expired Reassembly
    Private Const ICMP_STATUS_PARAMETER = 11015                         'Parameter Problem
    Private Const ICMP_STATUS_SOURCE_QUENCH = 11016                     'Source Quench
    Private Const ICMP_STATUS_OPTION_TOO_BIG = 11017                    'Option Too Big
    Private Const ICMP_STATUS_BAD_DESTINATION = 11018                   'Bad Destination
    Private Const ICMP_STATUS_NEGOTIATING_IPSEC = 11032                 'Negotiating IPSEC
    Private Const ICMP_STATUS_GENERAL_FAILURE = 11050                   'General Failure
    
    Toda esta informacion esta ya dentro del modulo.


    En el modulo principal, el valor de tiempo de respuesta timeout esta establecido a 1000ms, esto traducido a excel 2000 tarda 3 segundos en responder en caso de no obtener respuesta y no es necesario, basta con cambiar el siguiente valor:
    CÓDIGO:
    'ICMP (ping) timeout
    lTimeOut = 1000 'ms
    
    estableciendolo a 50ms da una respuesta fiable y casi instantanea

    Seguramente se le puede sacar mucho mas partido a esto, por ahora solo lo he aplicado a las referencias automaticas y me ha funcionado a la perfeccion.

    Una cosa mas... Despues de encontrar el server, es posible que el archivo no este disponible, en cuyo caso, tengo 2 codigos mas que determinan si un archivo es o no accesible, esto es conveniente para despues de haber verificado que el server esta respondiendo, pongo los 2:

    CÓDIGO:
    Sub pollas()
        If Dir("\\192.168.47.128\asd\123.xls") <> "" Then
    
            MsgBox "It Exists!"
    
        Else
    
            MsgBox "No Go!"
    
        End If
    End Sub
    Es bastante basico y devuelve un error en caso de no responder el equipo, pero esto esta solucionado haciendo previamente una llamada al server con la primera sentencia de ping. No obstanet, me gusta mucho mas esta otra opcion:

    CÓDIGO:
    Public Sub DetermineIfFileDirectoryExists()
        
    Dim DetermineFileExists As Integer
    Dim PathOfName As String
        
    Range("C8").Value = ""
    Range("C8").Interior.ColorIndex = 0
        
    ' If the file does not exist the program will log an error
    On Error Resume Next
    PathOfName = "\\192.168.47.128\asd\123.xls"
       
    DetermineFileExists = GetAttr(PathOfName)
        
    Select Case Err.Number
    Case Is = 0
        Range("C8").Value = "The File or Directory Exists"
        Range("C8").Interior.ColorIndex = 4
    Case Else
        Range("C8").Value = "The File or Directory does NOT Exists"
        Range("C8").Interior.ColorIndex = 3
    End Select
       
    On Error GoTo 0
    End Sub
    Aun no retoque estos ultimos 2 codigos por falta de tiempo pero me funciono bien el ultimo.

    Creo que es bastante interesante el codigo de hacer ping mediante el uso de ICMP, se le podria sacar bastante partido aplicado a otras cosas.


    Un saludo.
  7. ST_

    ST_ Usuario Activo

    Registrado:
    9 Sep 2008
    Mensajes:
    1.167
    Me Gusta recibidos:
    19
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    hola 1000 gracias por tu 'contribución':

    de momento comentarte 2 detalles menores:
    1.-me llama la atencion que los avisos/mensajes que esperas tener de las macros sean en Ingles pero veo que estas en españa !!!???

    2.-las unidades de medida del tiempo de respuesta tambien captaron mi atencion ya que se miden en "ms" lo cual pense por logica que eran 'milisegundos' pero entonces 1000 ms deberian ser 1 segundo y no 3 como comentas,por lo que mis 'rudimentarias' matmaticas no me dan para resolver semejante 'incognita' ?

    3.-por lo demas coincido contigo es un código digno de revisar con calma y ver las posibilidades con el,en cuanto ami experiencia se refiere esta es la 2ª vez que tengo 'contacto' con algo parecido asi que me resulta verdaderamente atractivo.

    nuevamente gracias por compartir :)
  8. verzulsan

    verzulsan Incondicional de Ayuda Excel

    Registrado:
    25 Oct 2009
    Mensajes:
    812
    Me Gusta recibidos:
    112
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    Hola, me alegro que te sirviera, si descubres alguna nueva aplicacion sobre esto comentala tambien, que a mi me interesa todo sobre conexiones en red :)

    Sobre los avisos en ingles, ya dije que el codigo lo copie de la pagina que linke mas arriba en mi anterior post, cierto que soy de España, pero ni me detuve a cambiarlos por que practicamente soy bilingue, estuve varios años estudiando en Estados Unidos y casi no me doy cuenta ya si estoy leyendo en ingles o español :p

    Lo de los milisegundos no estas mal informado jeje, es como dices, 1000ms=1s, pero quizas me exprese mal y no me entendiste. Te explico, las macros VB en excel tardan en mi opinion mas tiempo en ejecutarse que solo en VB, no se el porque pero se que a mi me pasa al menos. Lo que queria decir era que con 1000ms, si no encontraba la IP, la respuesta tardaba 3,x segundos en aparecer, hasta que decidi cambiar el TIMEOUT a 50ms, y la respuesta ya aparecio sin demoras. Este mismo codigo ejecutado en un programa VB fuera del excel si que tarda 1s con 1000ms, hice la prueba en los 2, en VB 6.0 me tarda 1seg, pero en excel me tarda mas de 3... cosas del excel jajaja :D


    Por cierto, ya que estamos hablando de malentendidos, yo tampoco entendi una cosa que dijiste en tu primer post,
    Me quede con la intriga de a que te referias :confused:

    Un saludo
  9. ST_

    ST_ Usuario Activo

    Registrado:
    9 Sep 2008
    Mensajes:
    1.167
    Me Gusta recibidos:
    19
    Respuesta: Actualizar referencias remotas (IMPOSIBLE DESACTIVAR)

    en Mexico,cuando alguien pide ayuda y da las gracias (como lo hiciste) es una constumbre decir "de que" ...que puede significar entre otras cosas:
    1.-"para eso estoy para servir"
    2.-fue un gusto/placer haberte ayudado
    3.-"en realidad no fue nada" (de ayuda proporcionada)
    4.-"intente ayudarte,pero en realidad no lo hice"

    en mi caso,te oferto ayuda,me respondes con un "gracias" y yo te respondo a la vez "de que" ,que significaría el 4º numeral de los encunciados anteriormente :)
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página