Cerrar otros archivos excel desde VBA
Publicado por Eduardol (35 intervenciones) el 10/01/2018 00:39:31
Hola.
Tengo un problema con mi codigo.
Les comento, tengo un Libro de Excel, que ejecuta una macro que vincula datos a unos formularios de Word y excel. Aqui solamente voy a escribir la parte del código que involucra a EXCEL.
El código basicamente lo que hace es llamar a los unos archivos Excel, y los imprime. La primera parte del código abre un archivo que se llama F63160 y llama a una macro que tiene ese archivo. Esta macro se llama ImprimeComisiones.
El problema es que una vez que ejecuta esa parte del codigo y una vez que cierra ese archivo la macro se interrumpe como si nada, sin revelar ningún error. Creo que lo que hace es cerrar el ObjExcel que esta declarado en la variable y no lo vuelve a ejecutar.
He intentado declarar otro objExcel pero no tuve exito.
También he eliminado la linea de código que cierra el archivo y he puesto ActiveWorkbook.Close SaveChanges:=False, al final de la macro principal, pero ademas de cerrar los dos archivos abiertos, cierra ademas el archivo principal, que es desde donde se ejecuta la macro y no debería cerrarse.
Espero sus comentarios.
Dim ObjExcel As Excel.Application
Dim relativePath As String
Dim F63160 As String
relativePath = ThisWorkbook.Path & "\" & "F63160" & ".xlsm"
If Worksheets("Solicitud").Range("Z14").Value = True Then
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Application.Visible = False
Application.PrintCommunication = False
Workbooks.Open Filename:=relativePath, UpdateLinks:=3
Application.Run ("'" & relativePath & "'!ImprimeComisiones")
Sub ImprimeComisiones()
'ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
Dim T1 As String, T2 As String, T3 As String, T4 As String, T5 As String, T6 As String, T7 As String, T8 As String, T9 As String, T10 As String, T11 As String
T1 = "Ctas.Ctes": T2 = "C.deAh.": T3 = "Cta.Esp. y a la vista": T4 = "T.Débito": T5 = "Gs.y Tr.": T6 = "Tar.Crédito"
T7 = "Paquetes": T8 = "C.Seguridad": T9 = "Títulos y Valores": T10 = "O-Com-Cargos": T11 = "Hoja1"
Select Case Worksheets(T11).Range("A1").Value
Case 1: Sheets(Array(T1, T4, T5, T10)).Select 'Cuentas Corrientes
Case 2: Sheets(Array(T2, T4, T5, T10)).Select 'Cuentas Caja de Ahorros
Case 3: Sheets(Array(T3, T4, T5, T10)).Select 'Cuentas Corrientes Especiales
Case 4: Sheets(Array(T2, T4, T5, T6, T7, T10)).Select 'Paquete Cuenta Simple
Case 5: Sheets(Array(T1, T2, T4, T5, T6, T7, T10)).Select 'Paquete Cuenta Estilo Con Cta Cte
Case 6: Sheets(Array(T2, T4, T5, T10)).Select 'Caja de Ahorros y Cuenta Comitente
Case 7: Sheets(Array(T6, T2, T4, , T5, T10)).Select 'Tarjeta de Credito Con Caja de Ahorros
Case 8: Sheets(Array(T6)).Select 'Tarjeta de Credito Con Caja de Ahorros
End Select
'Sheets(T11).Activate
Application.PrintCommunication = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets(T11).Select
Workbooks("F63160.xlsm").Close SaveChanges:=False
End Sub
´Hasta aca es la Macro llamada ImprimeComisiones
End If <<------------------------EL ERROR COMIENZA AQUI
'Aqui deberia ejecutar el siguiente IF, pero no hace nada
If Worksheets("Solicitud").Range("Z21").Value = True Then
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Application.Visible = False
Application.PrintCommunication = False
Workbooks.Open Filename:=Rutaxls2, UpdateLinks:=3
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
'Workbook.Close SaveChanges:=0
End Sub
Tengo un problema con mi codigo.
Les comento, tengo un Libro de Excel, que ejecuta una macro que vincula datos a unos formularios de Word y excel. Aqui solamente voy a escribir la parte del código que involucra a EXCEL.
El código basicamente lo que hace es llamar a los unos archivos Excel, y los imprime. La primera parte del código abre un archivo que se llama F63160 y llama a una macro que tiene ese archivo. Esta macro se llama ImprimeComisiones.
El problema es que una vez que ejecuta esa parte del codigo y una vez que cierra ese archivo la macro se interrumpe como si nada, sin revelar ningún error. Creo que lo que hace es cerrar el ObjExcel que esta declarado en la variable y no lo vuelve a ejecutar.
He intentado declarar otro objExcel pero no tuve exito.
También he eliminado la linea de código que cierra el archivo y he puesto ActiveWorkbook.Close SaveChanges:=False, al final de la macro principal, pero ademas de cerrar los dos archivos abiertos, cierra ademas el archivo principal, que es desde donde se ejecuta la macro y no debería cerrarse.
Espero sus comentarios.
Dim ObjExcel As Excel.Application
Dim relativePath As String
Dim F63160 As String
relativePath = ThisWorkbook.Path & "\" & "F63160" & ".xlsm"
If Worksheets("Solicitud").Range("Z14").Value = True Then
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Application.Visible = False
Application.PrintCommunication = False
Workbooks.Open Filename:=relativePath, UpdateLinks:=3
Application.Run ("'" & relativePath & "'!ImprimeComisiones")
Sub ImprimeComisiones()
'ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
Dim T1 As String, T2 As String, T3 As String, T4 As String, T5 As String, T6 As String, T7 As String, T8 As String, T9 As String, T10 As String, T11 As String
T1 = "Ctas.Ctes": T2 = "C.deAh.": T3 = "Cta.Esp. y a la vista": T4 = "T.Débito": T5 = "Gs.y Tr.": T6 = "Tar.Crédito"
T7 = "Paquetes": T8 = "C.Seguridad": T9 = "Títulos y Valores": T10 = "O-Com-Cargos": T11 = "Hoja1"
Select Case Worksheets(T11).Range("A1").Value
Case 1: Sheets(Array(T1, T4, T5, T10)).Select 'Cuentas Corrientes
Case 2: Sheets(Array(T2, T4, T5, T10)).Select 'Cuentas Caja de Ahorros
Case 3: Sheets(Array(T3, T4, T5, T10)).Select 'Cuentas Corrientes Especiales
Case 4: Sheets(Array(T2, T4, T5, T6, T7, T10)).Select 'Paquete Cuenta Simple
Case 5: Sheets(Array(T1, T2, T4, T5, T6, T7, T10)).Select 'Paquete Cuenta Estilo Con Cta Cte
Case 6: Sheets(Array(T2, T4, T5, T10)).Select 'Caja de Ahorros y Cuenta Comitente
Case 7: Sheets(Array(T6, T2, T4, , T5, T10)).Select 'Tarjeta de Credito Con Caja de Ahorros
Case 8: Sheets(Array(T6)).Select 'Tarjeta de Credito Con Caja de Ahorros
End Select
'Sheets(T11).Activate
Application.PrintCommunication = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets(T11).Select
Workbooks("F63160.xlsm").Close SaveChanges:=False
End Sub
´Hasta aca es la Macro llamada ImprimeComisiones
End If <<------------------------EL ERROR COMIENZA AQUI
'Aqui deberia ejecutar el siguiente IF, pero no hace nada
If Worksheets("Solicitud").Range("Z21").Value = True Then
Set ObjExcel = CreateObject("Excel.Application")
ObjExcel.Application.Visible = False
Application.PrintCommunication = False
Workbooks.Open Filename:=Rutaxls2, UpdateLinks:=3
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End If
'Workbook.Close SaveChanges:=0
End Sub
Valora esta pregunta
0