Saludos de nuevo mira tengo un datacombo en donde selecciono un municipio, una vez seleccionado presiono un botón y aparecen los datos, hasta ahí bien, tengo otro botón en donde me abre una hoja de excel para que el usuario pueda manipular la información que se presenta en el DataGrid después de la selección realizada, como le hago para que este botón no permita abrir la hoja de calculo, hasta que el usuario no vea esa información en el DataGrid, lo que yo no quiero en mi sistema es que el usuario nada más oprima el botón de abrir excel sin que antes vea la información que se le esta presentando en el sistema, porque si no de nada me va servir esa pantalla.
Espero puedas ayudarme. Gracias
Respuesta de athrarn
1
1
athrarn, - Sistemas Operativos : - MS-DOS, Windows 3
El problema de generar informes con Excel, es que excel no funciona todo lo correctamente que debería. Si quieres que el excel no se muestre al declarar el Objeto Excel debes hacer dos cosas : O deshabilitas el botón con enabled a False hasta que termina la carga del Datagrid, o dejas la opción de excel de visible a false. Creo recordar que para dejar excel invisible se hacia de este modo : Dim app As Excel.Application Set app = New Excel.Application app.Visible= False Por simplicidad, también tengo una clase Excel generada. No tengo la última versio aquí, pero creo que con esta lo tendrás más cómodo... Option Explicit Dim app As Excel.Application Dim Libros As Excel.Workbooks Dim Libro As Excel.Workbook Dim hoja As Excel.Worksheet Dim blncargado As Boolean Public Sub AbrirExcel(archivo As String) Set app = New Excel.Application Set Libros = app.Workbooks Set Libro = Libros.Open(archivo) blncargado = True End Sub Public Sub AbrirHoja(PeHoja As String) On Error GoTo HojaNoExiste Set hoja = Libro.Worksheets(PeHoja) Exit Sub HojaNoExiste: MsgBox "Error, el libro excel debe tener una hoja llamada '" & PeHoja & "'" Me.CerrarExcel End Sub Public Function DevolverCelda(X As Long, Y As Long) As String DevolverCelda = hoja.Cells(X, Y) End Function Public Sub PonerValorCelda(X As Long, Y As Long, Valor As String) hoja.Cells(X, Y) = Valor End Sub Public Sub PonerValorTituloCelda(X As Long, Y As Long, Valor As String) hoja.Cells(X, Y).Font.Bold = True hoja.Cells.BorderAround hoja.Cells(X, Y) = Valor End Sub Private Sub Class_Initialize() blncargado = False End Sub Private Sub Class_Terminate() If blncargado Then Libro.Sabe Libro.Close Libros.Close End If End Sub Public Sub GuardarComo(archivo As String) Libro.SaveAs archivo End Sub Public Sub CerrarExcel() If blncargado Then Libro.Sabe Libro.Close Libros.Close End If blncargado = False End Sub