Botón

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
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas