Error al guardar libro compartido

Tengo una macro en un "pc1" que en un momento guarda un libro que
a su vez lo consulta un segundo pc (pc2) de la red, funciona bien pero
existen ocasiones en que la macro guarda el el libro en el pc 1 justo
en el momento que el pc2 lo esta consultando y se produce un error,
como puedo hacer para que cuando esto suceda, intente nuevamente
guardar el libro, tengo en la macro que se salte el error y que salte al fin y automáticamente me abre un nuevo libro con un nombre aleatorio.

1 respuesta

Respuesta
1
¿Y en dicho archivo esta activada la opción "compartir libro"? ¿Y cómo es tu macro?
Abraham
En realidad no esta compartido, funciona de la siguiente manera... el pc1 tiene un libro llamado ventas que es el principal y contiene las macros, en un momento una macro copia información del libro ventas en otro libro llamado cocina y el archivo cocina esta en una carpeta compartida en red. El pc2 tiene el libro cocina2, que tiene una macro que automáticamente cada 20 segundos abre el libro cocina, copia la información y lo cierra. La función del pc2 es mostrar pedidos que faltan por entregar en un restaurant (funciona autoimaticamente todo es manejado desde el pc1, en el se van eliminando los pedidos y agregándolos). Lo hice de esa forma por que compartiendo el libro me generaba errores y no pude hacer que actualice los cambios automáticamente en el intervalo de tiempo que necesito, ademas que molesta que resalte los cambios. Todo funciona bien pero hay ocasiones en que cuando el pc1 esta guardando el libro cocina coincide con el pc2 que lo esta abriendo y no se puede guardar (que es necesario para que cuando lo abra el pc2 estén actulizados los cambios, el pc2 no guarda ni cambia el archivo cocina solo copia la información al artchivo cocina2 que esta en el pc2). Entonces se genera un error, en la macro agregue el comando:
Sub Borra2()
'
' Borra2 Macro
'
' Acceso directo: CTRL+a
'
On Error GoTo Noencontro
Rem Application.DisplayAlerts = False
Windows("Ventas.xlsm").Activate
Sheets("Pedidos Pendientes").Select
Rows("2:2").Select
Selection.Cut
Sheets("Pedidos Entregados").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Range("E1").Select
Selection.Copy
Range("J2").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Sheets("Pedidos Pendientes").Select
Rows("2:2").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Sheets("Pedidos Pendientes").Select
Range("A1:J27").Select
Selection.Copy
Windows("Cocina.xlsx").Activate
Cells.Select
Range("B1").Activate
ActiveSheet.Paste
ActiveWorkbook.Save                                     ---->aqui se genera el error
Windows("Ventas.xlsm").Activate
      intente lo siguiente pero nome funciono
Noencontro:
Rem ActiveWorkbook.SaveAs      ------->no se como sigue el comando
Rem Workbooks("cocina2.xls").Close
Rem Workbooks.Open "C:\dammy's\cocina.xlsx"
Rem Workbooks("Ventas.xls").Worksheets("Pedidos Pendientes").Activate
Rem Range("A1:J27").Select
Rem Selection.Copy
Rem Windows("Cocina.xlsx").Activate
Rem Cells.Select
Rem Range("B1").Activate
Rem ActiveSheet.Paste
Rem ActiveWorkbook.Save
Rem Windows("Ventas.xlsm").Activate
Rem Application.DisplayAlerts = True
End Sub
La idea es que cuando se produzca el error intente nuevamente guardar el archivo. Intente que lo guarde con otro nombre la parte que esta con rem pero no funciono.
Al encontrar el error excel automáticamente genera un archivo "6F4C8000.xlsx" por ej. en reemplazo del libro cocina.
Intente ser lop más claro posible espero que me puedas ayudar. Muchas gracias
En realidad Excel no es la herramienta ideal para hacer lo que estas haciendo, y si tienes el office yo te recomendaría Access, o de insistir con Excel, usar ADO y/o DAO, claro que probablemente te complique la cosa, así que, como ya lo tienes hecho, pues, necesito saber lo siguientes:
- ¿Me parece o tienes permanentemente abierto el libro "cocina"? Te pregunto ya que en la macro que envías, usas Activate, como que el libro esta abierto y no veo alguna instrucción que lo haya abierto
- ¿Necesariamente tienes que actualizar cada 20 segundos?
Abraham
Si, el libro cocina esta permanentemente abierto en el pc1, la macro que se actualiza automáticamente esta en el libro cocina2 del pc2... eso funciona bien y es la que abre el libro cocina del pc1 (como solo lectura) para copiar la información y luego lo cierra. Es en ese momento guando hay conflictos ya que si lo esta abriendo y justo en ese momento el pc1 lo intenta guardar es que me da el error. Son varias las macros que efectúan la misma oeratoria (como 8) el error siempre es en el mismo lugar, cuando lo intenta guardar mientras esta abierto en el pc2.
Respecto al intervalo de tiempo tiene que ser corto ya que constantemente están entrando y saliendo pedidos. El error no es siempre, solo algunas veces. Es más frecuente cuando la carga de trabajo es mayor.
En relación a utilizar access, lo intente pero en realidad no tengo idea como funciona.
La macro del libro cocina2 del pc2 es la siguiente:
Sub Macro1()
'
' Macro1 Macro
'
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Open Filename:="\\caja\dammy's\cocina.xlsx", Notify:=False
Range("A1:J20").Select
Selection.Copy
ActiveWorkbook.Close False
Windows("Cocina2.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.OnTime Now + TimeValue("00:00:30"), "Macro1"
End Sub
Con esta no tengo problemas. Gracias.
Si puedes guiarme o donde conseguir información para hacer esto con access también estaría agradecido, pero por el momento necesito solucionar el problema para así trabajar sin problemas y de ahí pasar a access. Gracias.
Pues, lo ideal es que el libro "cocina" este siempre cerrado, y que cada macro que opere con el pues, lo abra, realize la copia o lo que tenga que hacer, lo guarde y lo cierre. Si es así, a pesar del intervalo corto de tiempo, es muy difícil que ocurran conflictos
Abraham

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas