Autor Tema: Abrir Excel con Visual Basic Guardar, cerrar y salir desde VBA y Excel  (Leído 19347 veces)

Rutlhess

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Saludos a todos, tengo el siguiente problema, diseñe un formulario para cargar sus datos en excel, no pretendo que se muestre excel, para eso use el codigo siguiente:

Código: [Seleccionar]
Private Sub Workbook_Open()
     Application.visible = False
     UserForm1.Show
End Sub

el problema es que no quiero que el usuario tenga acceso al libro de excel, y con el fin de que al cerrar el formulario se cierre y guarde los cambios añadí lo siguiente:

Código: [Seleccionar]
Private Sub Workbook_BeforeClose(Cancel As Boolean)
     ActiveWorkbook.Close savechanges:=True
     ThisWorkbook.Close
     Application.Quit
End Sub

Realmente no sé si esta correcto, o bien ubicado, el problema es que al cerrar el formulario me dí cuenta que Excel sigue abierto en segundo plano y si abro nuevamente el formulario me aparece un mensaje que dice "el archivo que esta intentando abrir ya se esta ejecutando" o algo similar y en ocasión de mostrarme el formulario me muestra es el libro con su contenido... como soluciono este error?

espero haberme explicado de manera clara...
« Última modificación: 08 de Junio 2015, 08:48 por Ogramar »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Guardar, cerrar y salir desde VBA y Excel
« Respuesta #1 en: 08 de Junio 2015, 08:25 »
Hola no veo el código donde haces la apertura del excel, creo que no lo has pegado. ¿Estás usando Visual Basic 6? Para evitar que excel continue corriendo tienes que cerrar todo en orden inverso a como lo fuiste abriendo.

He encontrado este ejemplo que usa dos textbox y dos command buttons

Código: [Seleccionar]
'Para declarar estas variables antes hay que añadir una referencia
'a microsoft excel 'xx' object library utilizando los menús.

'you need two text boxes and two command buttons
'on the form, an excel file in c:\book1.xls

Dim xl As New Excel.Application
Dim xlsheet As Excel.Worksheet
Dim xlwbook As Excel.Workbook

Private Sub Command1_Click()
'the benifit of placing numbers in (row, col) is that you
'can loop through different directions if required. I could
'have used column names like "A1" 'etc.

    Text1.Text = xlsheet.Cells(2, 1) ' row 2 col 1
    Text2.Text = xlsheet.Cells(2, 2) ' row 2 col 2

'No olvidar hacer esto o no será posible volver a abrir
'book1.xls de nuevo hasta que se reinicie el computador.
    xl.ActiveWorkbook.Close False, "c:\book1.xls"
    xl.Quit
End Sub

Private Sub Command2_Click()
    xlsheet.Cells(2, 1) = Text1.Text
    xlsheet.Cells(2, 2) = Text2.Text
    xlwbook.Save

'No olvidar hacer esto o no será posible volver a abrir
'book1.xls de nuevo hasta que se reinicie el computador.
    xl.ActiveWorkbook.Close False, "c:\book1.xls"
    xl.Quit
End Sub

Private Sub Form_Load()
    Set xlwbook = xl.Workbooks.Open("c:\book1.xls")
    Set xlsheet = xlwbook.Sheets.Item(1)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set xlwbook = Nothing
    Set xl = Nothing
End Sub
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".