Problemas con MACRO

23/10/2007 - 23:20 por Marvin | Informe spam
Que tal grupo, no se que es lo que pasa, pero cuando mando llamar desde una
macro este proceso no se ejecuta, pero si la ejecuto al terminar todo si
funciona, de verdad que no se que sucede...

desde otro proceso solo tengo este codigo

sub inicio()
.
.
.
cerrar
end sub

********************************************************************************
Sub cerrar()
Dim wb As Workbook
If MsgBox("EN ESTE MOMENTO SE CERRARAN TODOS LOS ARCHIVOS DE EXCEL, DESEA
CONTINUAR??", vbYesNo + vbCritical, "CIERRE DE ARCHIVOS EXCEL") = vbYes Then
With ThisWorkbook
For Each wb In Workbooks
Select Case wb.Name
Case .Name 'ignorar
Case "RIH_Titulos_Ejemplo.xls", "pipes_RIH_" + Dia + "" + Mes +
"" + AnioComp + ".lst", "Master_Roaming.xls", "series_iusacell.xls" 'guardar
wb.Close False
Case Else 'no guardar
wb.Close True
End Select
Next wb
.Save
.Close
End With
Else
With ThisWorkbook
For Each wb In Workbooks
Select Case wb.Name
Case .Name 'ignorar
Case "RIH_Titulos_Ejemplo.xls", "pipes_RIH_" + Dia + "" + Mes +
"" + AnioComp + ".lst", "Master_Roaming.xls", "Master_Roaming_2.xls", "Switch
Origen.xls", "COMPAÑIAS_2.xls" 'guardar
wb.Close False

End Select
Next wb
.Save
.Close
End With
End If
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

Espero me puedan ayudar.

GRCS
 

Leer las respuestas

#1 Héctor Miguel
24/10/2007 - 04:55 | Informe spam
hola, Marvin !

... cuando mando llamar desde una macro este proceso no se ejecuta
pero si la ejecuto al terminar todo si funciona... no se que sucede...
desde otro proceso solo tengo este codigo (...)



prueba estableciendo puntos de interrupcion y/o ejecutando los procedimientos "paso a paso" (aunque)...

1) no son muy claras las intenciones del msgbox ya que sin importar la respuesta hay 3 libros que se guardan "igual"...
- "RIH_Titulos_Ejemplo.xls"
- "pipes_RIH_" + Dia + "" + Mes + "" + AnioComp + ".lst"
- "Master_Roaming.xls"

2) tampoco resulta muy claro cuando dices (en los comentarios del codigo)... -> ' guardar
ya la instruccion siguiente dice: -> wb.Close False
lo que es el equivalente de cerrar SIN "guardar" los cambios: wb.Close SaveChanges:=False

3) pasa similar (a la inversa) cuando tu comentario dice -> ' no guardar
la siguiente instruccion dice: -> wb.Close True

4) otro detalle que pudiera estar causando interferencias, es el "manejo" que haces de los eventos de la aplicacion:
-> Application.DisplayAlerts = True
-> Application.EnableEvents = True
OJO: estan hasta el final de codigo, y DESPUES de que ocurre un ThisWorkbook.Save y un .Close
con lo cual, las lineas que siguen al .Close YA NO SE EJECUTAN (el libro ya esta cerrado)
con lo cual, los eventos (que no se ve en donde hubieran sido deshabiltados)... -> seguiran DESHABILITADOS
y la aplicacion (al menos aparentemente)... seguira abierta (aunque sin libros a la vista) -???-

5) (comentario aparte) no me parece "correcto" obligar al cierre de todo libro abierto en la sesion...
-> sin el consentimiento del usuario de si guarda o no los cambios (tu codigo lo maneja "a su entera discrecion")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ los codigos expuestos __
sub inicio()
.
.
.
cerrar
end sub
********************************************************************************
Sub cerrar()
Dim wb As Workbook
If MsgBox("EN ESTE MOMENTO SE CERRARAN TODOS LOS ARCHIVOS DE EXCEL, DESEA
CONTINUAR??", vbYesNo + vbCritical, "CIERRE DE ARCHIVOS EXCEL") = vbYes Then
With ThisWorkbook
For Each wb In Workbooks
Select Case wb.Name
Case .Name 'ignorar
Case "RIH_Titulos_Ejemplo.xls", "pipes_RIH_" + Dia + "" + Mes +
"" + AnioComp + ".lst", "Master_Roaming.xls", "series_iusacell.xls" 'guardar
wb.Close False
Case Else 'no guardar
wb.Close True
End Select
Next wb
.Save
.Close
End With
Else
With ThisWorkbook
For Each wb In Workbooks
Select Case wb.Name
Case .Name 'ignorar
Case "RIH_Titulos_Ejemplo.xls", "pipes_RIH_" + Dia + "" + Mes +
"" + AnioComp + ".lst", "Master_Roaming.xls", "Master_Roaming_2.xls", "Switch
Origen.xls", "COMPAà‘IAS_2.xls" 'guardar
wb.Close False

End Select
Next wb
.Save
.Close
End With
End If
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub

Preguntas similares