Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error 462: El equipo servidor remoto no existe o no está disponible

Estas en el tema de Error 462: El equipo servidor remoto no existe o no está disponible en el foro de Visual Basic clásico en Foros del Web. Hola a tod@s Necesito ayuda para intentar comprender el porqué de este error. He desarrollado una función que genera tablas dinámicamente en un documento word ...
  #1 (permalink)  
Antiguo 12/12/2005, 03:30
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
Error 462: El equipo servidor remoto no existe o no está disponible

Hola a tod@s

Necesito ayuda para intentar comprender el porqué de este error.

He desarrollado una función que genera tablas dinámicamente en un documento word (ya que los informes que estoy generando no tienen porqué tener el mismo número de tablas), y las formatea.

He hecho mis pruebas y en mis PC's en los que desarrollo me funciona correctamente SIEMPRE!!!!
Después he probado en mi cliente el mismo ejecutable y no me funciona correctamente. Y digo esto porque a veces funciona y a veces no. Es decir, cuando inicio el PC funciona a la primera correctamente, generando todo el informe, así como todas las tablas, pero a la segunda me da este error:

Error 462 en tiempo de ejecución:
El equipo servidor remoto no existe o no está disponible


Y aqui viene lo bueno. A partir de este momento, todas las ejecuciones dan error.

Y,lo mejor de todo es que, si reinicio el PC, después de obtener este error, funciona correctamente SÓLO UNA VEZ!!!

El código de la función que me genera el error es el siguiente (por si alguien sabe el porqué)

NOTA: appWord es la variable Word.Aplication


appWord.ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=NRows, NumColumns:=NCols

With appWord.Selection.Tables(appWord.Selection.Tables. Count)

.Rows.AllowBreakAcrossPages = False

If .Style <> "Tabla con cuadrícula" Then
.Style = "Tabla con cuadrícula"
End If

.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True

.Columns(1).Width = 230 'GREMIO
.Columns(2).Width = 75 'VALOR A NUEVO
.Columns(3).Width = 50 'DEMERITO
.Columns(4).Width = 75 'DAÑo

End With


He mirado en los procesos y no se me queda abierto el winword.exe (esto generaría un error que ya tengo controlado, el "error 91 en tiempo de ejecución: La variable de tipo Object o de bloque With no está establecida")

Si alguien me pudiera ayudar con este error... Es que a mi en mis PCs no he obtenido NUNCA este error. Por ello, sé que es por cosa de la configuración del PC o de alguna llamada a alguna función o similar, pero aún no he encontrado solución en internet aunque seguiré buscando.

Gracias de todas formas
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad
  #2 (permalink)  
Antiguo 12/12/2005, 05:23
 
Fecha de Ingreso: mayo-2005
Mensajes: 93
Antigüedad: 19 años
Puntos: 1
SOLUCIONADO!!!!

Pues bien, como casi siempre, no hay más que buscar en serio para encontrar.

Este error no tiene nada que ver con las suposiciones iniciales (error de configuración, PC...), sino que era problema de las instancias que utiliza vb para poder generar el documento Word.

Es decir, cuando abres el word, declaras una aplicación de word, el word.application (en nuestro caso anterior, era el appWord), pero internamente, también se genera otra instancia de dicha aplicación. Por ello, es necesario que todas las referencias que hagamos en nuestro programa estén dirigidas a nuestra word.Application (appWord), ya que sino, intenta hacer lo que manda la instrucción correspondiente a la instancia que genera internamente.

Esta instancia, se utiliza para minimizar errores, ya que también se genera cuando se abre directamente el word, pero claro, a la hora de programar no nos sirve de ayuda, ya que lo que nos hace, realmente, es esconder la solución de dicho error.

Este error solo se genera con ciertas instrucciones del propio Word que tienen llamadas a las secciones definidas en el word, como es el caso de las secciones, marcadores y tablas (es en lo único que he podido comprobar hasta el momento).

La solución es sencilla de aplicar, pero muy difícil de localizar dónde se debe aplicar. Por ello, voy a poner un código que da error y después la solución del mismo.

Por ejemplo, vamos a poner el código para crear una tabla en word

(Recordemos que appWord es el Word.Application)

Cita:
appWord.ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=NRows, NumColumns:=NCols

With appWord.Selection.Tables(appWord.Selection.Tables. Count)

.Rows.AllowBreakAcrossPages = False

If .Style <> "Tabla con cuadrícula" Then
.Style = "Tabla con cuadrícula"
End If

.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = True
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = True

.Columns(1).Width = 230 'GREMIO
.Columns(2).Width = 75 'VALOR A NUEVO
.Columns(3).Width = 50 'DEMERITO
.Columns(4).Width = 75 'DAÑo

End With
Este código es el que nos generaba error desde la segunda ejecución y en adelante. La diferencia es simple, ya que hay una parte que se referencia a appword que no la incluimos, por lo que nos da error.

La solución está marcado en negrita a continuación

Cita:
appWord.ActiveDocument.Tables.Add Range:=appWord.Selection.Range, NumRows:=NRows, NumColumns:=NCols

appWord.Selection.Tables(appWord.Selection.Tables. Count).Rows.AllowBreakAcrossPages = False

If appWord.Selection.Tables(appWord.Selection.Tables. Count).Style <> "Tabla con cuadrícula" Then
appWord.Selection.Tables(appWord.Selection.Tables. Count).Style = "Tabla con cuadrícula"
End If

appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleHeadingRows = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleLastRow = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleFirstColumn = True
appWord.Selection.Tables(appWord.Selection.Tables. Count).ApplyStyleLastColumn = True

appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(1).Width = 230 'GREMIO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(2).Width = 75 'VALOR A NUEVO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(3).Width = 50 'DEMERITO
appWord.Selection.Tables(appWord.Selection.Tables. Count).Columns(4).Width = 75 'DAÑo
En resumen:
Para que funcione correctamente todas las llamadas a la aplicación word deben incluir explícitamente la isntancia de la aplicación word (appWord) que hemos generado.
Además, siguiendo el consejo de una web que os incluyo al final de este post, aparece una sugerencia por la cual se pide que no se utilice el comando with, ya que puede perder la referencia a nuestro appWord más fácilmente.


Para finalizar:
Las webs donde he econtrado todo esto han sido las siguientes (por si quereis obtener más información)...

http://www.devx.com/vb2themax/Article/19834
http://support.microsoft.com/default...b;en-us;189618
http://www.programmersheaven.com/c/M...ing=A9999F0001

Un saludo a todos, y si teneis alguna duda sobre esta explciación... ya sabeis, escribir después para discutir sobre ello.

Sin más, gurgur
__________________
No te hubieran dado la capacidad de soñar sin darte también la posibilidad de convertir tus sueños en realidad
  #3 (permalink)  
Antiguo 31/03/2009, 03:51
 
Fecha de Ingreso: marzo-2009
Mensajes: 11
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Error 462: El equipo servidor remoto no existe o no está disponible

muy bueno, me as salvado de una... muchas gracias!!!
  #4 (permalink)  
Antiguo 26/12/2009, 09:48
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Error 462: El equipo servidor remoto no existe o no está disponible

HOLA!!!!
CREO QUE ME SUCEDE ALGO PARECIDO!! PERO NOSÉ COMO SOLUCIONARLO EN MI CASO POR FAVOR AYÚDENME!!

Estoy haciendo una Macro, que copia una tabla de Excel y la pega en la Hoja de Recursos de Project.

Cuando la macro termina de construir la tabla en Excel, la copia con una sentencia;luego, abre Project con otra sentencia; después, activa la hoja de recursos; posteriormente, pega en la hoja de recursos la tabla y finalmente ajusta el ancho de las columnas.

El drama es que la macro no funcionaba cuando presionaba el botón ejecutar (error 462) y SI funcionaba cuando la ejecutaba Paso a Paso con F8. En un principio pensé que era porque la macro era muy veloz, no esperaba que Project se abriera completamente y le comenzaba a dar instrucciones de inmediato con sus sentencias a este, que al no estar abierto aún (demora poco menos de un segundo en abrir), arrojaba el error.
Así, le incorporé una sentencia que detuviera la ejecución de la macro 2 segundos, para esperar que abriera Project. Cuando hice eso, comenzó a funcionar al presionar el botón ejecutar, pero sólo el 70% de las veces. Ocasionalmente sigue dándome el error. Si aumento el tiempo de pausa a 10 segundos, funciona como el 80% de las veces. Aquí les muestro la macro problema:

Sub LlevarTablaAProject()

Range("B3").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, ActiveCell.Offset(0, 9)).Select
Selection.Copy
' Con esta sentencia abre Project:
Application.ActivateMicrosoftApp xlMicrosoftProject
'Esta sentencia le da la pausa:
t = Timer: Do Until Timer > t + 2: Loop
' Esta sentencia genera el error 462 (en ocasiones, a veces corre bien), la alumbra con amarillo al depurar:
ViewApply Name:="H&oja de recursos"
SelectResourceField Row:=0, Column:="Nombre"
EditPaste
ColumnBestFit Column:=3

End Sub

MUCHAS GRACIAS, FELIZ NAVIDAD, ESPERO QUE ME PUEDA ALGUIEN AYUDAR PARA QUE FUNCIONE BIEN EL 100% DE LAS VECES Y OJALÁ SIN PAUSA EN LA MACRO.
GIOVANNI
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 10:44.