Excel - Rutas en Red en excel

 
Vista:

Rutas en Red en excel

Publicado por Manuel Pralong (3 intervenciones) el 25/11/2016 17:52:10
Buenas, necesito ayuda con Visual Basic y el Excel.
Resulta que tengo dos archivos de Excel, uno con una macro que envia datos a la otra. Si los usaba en la misma pc con el siguiente codigo funcionaba perfecto, estando ambos en la misma carpeta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Insertar()
'
' Insertar Macro
 
    Rows("5:5").Select
 
    Selection.Copy
 
    Windows("Client.xlsm").Activate
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
 
    Windows("Server.xlsm").Activate
 
    Range("F6").Select
 
    Application.CutCopyMode = False
    Selection.ClearContents
 
End Sub
Pero el problema es que lo requerido es que los excel´s esten abiertos en 2 computadoras distintas, conectadas via red. Entonces tenemos las dos pcs en la misma red, mapie la unidad de red, y tengo los dos archivos en esta ruta:
En la pc A la ruta seria: \\MANUEL\Users\Public\Recepcion\Client.xlsm
En la pc B la ruta seria: Y:\Public\Recepcion\Client.xlsm (Está mapeada)
Me gustaria saber que código tendría que usar para los archivos, porque recibo errores constantes en esta posicion Windows("Y:\Public\Recepcion\Client.xlsm").Activate y no se como ponerlo, agradeceria mucho su ayuda.
Saludos Manuel Pralong
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

Rutas en Red en excel

Publicado por Manuel Pralong (3 intervenciones) el 25/11/2016 20:12:56
El error es el mismo, se ha producido el error 9 en tiempo de ejecucion.
Con este código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Insertar()
'
' Insertar Macro
'
 
'
 
    Rows("5:5").Select
 
    Selection.Copy
 
    Windows("Y:\Public\Recepcion\Client.xlsm").Activate
    Rows("5:5").Select
    Selection.Insert Shift:=xlDown
 
    Windows("Server.xlsm").Activate
 
    Range("F6").Select
 
    Application.CutCopyMode = False
    Selection.ClearContents
 
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Rutas en Red en excel

Publicado por Antoni Masana (2478 intervenciones) el 29/11/2016 08:41:35
Buenos días,

Tienes un error de conceptos, vamos a ver si me explico, cuando ejecutabas esta Macro teniendo los dos libros en el mismo PC te funcionaba por que ya tenias abiertos los dos libros.

La instrucción Windows("Server.xlsm").Activate no abre el fichero excel Server.xlsm, lo que hace es que la ventana (Windows en ingles) que contiene este archivo esta activa.

La macro te funcionaba porque el EXCEL que tienes en el PC tiene abierto, en los dos ficheros: Server.xlsm y Client.xlsm. y el Windows("").Activate selecciona cual de los dos esta activo.

En el caso de abrir cada libro en un ordenador diferente, tiene dos programas EXCEL corriendo en cada ordenador y cada EXCEL solo sabe de su propios ficheros y no tiene acceso al otro fichero a menos que lo abra.

Los parámetros de esta instrucción Windows("Y:\Public\Recepcion\Client.xlsm").Activate esta mal. Esto NO abre un fichero. Activa el fichero abierto y lo identifica por el nombre.

Para que funcione la macro tienes que abrir el segundo libro en el mismo ordenador, pero ojo si ya esta abierto en otro ordenador no lo podrás modificar y guardar.

Saludos
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

Rutas en Red en excel

Publicado por Manuel Pralong (3 intervenciones) el 29/11/2016 14:19:56
Muchas gracias por las respuestas. El problema es que es de suma importancia que ambos archivos se abran en dos computadoras distintas, el cliente en A y el Servidor en B. Qué código habría que utilizar entonces?, necesito que haya varias personas con el mismo excel abierto, sólo dos pcs con dos excels distintos, los cuales puedan comunicarse mediante una macro, que le envie cierta informacion que un usuario escribe.
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Rutas en Red en excel

Publicado por Antoni Masana (2478 intervenciones) el 30/11/2016 07:31:54
Antes de buscar una solución hay que tener muy claro que uso se hace de cada fichero.
Entiendo que el Servidor es el que busca los datos el el Cliente. ¿Correcto?
¿El Cliente es un libro SOLO de consulta o se modifican los datos?

Si es de consulta se puede compartir:

https://support.office.com/es-es/article/Usar-un-libro-compartido-para-colaborar-49b833c0-873b-48d8-8bf2-c1c59a628534?ui=es-ES&rs=es-ES&ad=ES&fromAR=1

En caso contrario se me ocurre una posible solución, no es la única ni la mejor.

- Se ejecuta la MACRO del Servidor, esta crea un fichero en un lugar compartido con información de lo que desea del Cliente y espera la respuesta del cliente.
- El Cliente ejecuta una MACRO cada cierto tiempo y mira si existe el fichero del Servidor.

Si existe:
--> Avisa al Operador que se activa una MACRO. Esto es delicado porque si activas un PopUP y no hay alguien para responder se paraliza
--> Lee los datos del fichero del Servidor.
--> Borrar el fichero del Servidor.
--> Crear un nuevo fichero con los datos que pide el Servidor.
--> Finalizar la MACRO

- El Servidor encuentra el fichero del Cliente lo abre, lee datos, lo cierra y lo borra.

Y ahora la gran pregunta ¿Como ejecutar una MACRO cada cierto tiempo?

Con este codigo:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Option Explicit
 
Sub Tiempo()
    ' --- Mediante esta instruccion "llamamos" a "Actualizarreloj" para volver a _
             actualzizar el Label con la hora
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=True
End Sub
 
Sub Actualizarreloj()
    ' --- Coloca la hora en el Label del UserForm
    [A1] = Time
    ' --- "Llama a la rutina que cada 01 segundo "llama" a "Actualizarreloj" _
           para volver a actualzizar el Label con la hora
    Call Tiempo
End Sub
 
Sub Detener_reloj()
    ' --- Detiene el "OnTime"
 
    Application.OnTime Now + TimeValue("00:00:01"), _
                Procedure:="Actualizarreloj", _
                Schedule:=False
 
    ' --- Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), _
                      Procedure:="Actualizarreloj", _
                      Schedule:=False
End Sub

Mira esta consulta en la que explico como ejecutar la macro al abrir el excel

http://www.lawebdelprogramador.com/foros/Excel/1572176-macro-para-crear-mensajes-de-alerta.html

Saludos.
\\//_
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