Questo esempio l'ho derivato dal tuo codice ed in sostanza fa le stesse cose:
codice:
Dim ex As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Private Sub btnApri_Click()
Set ex = New Excel.Application
Set wb = ex.Workbooks.Open("d:\aventidiritto.xls", , 0)
Set ws = wb.Sheets.Item("aventidiritto")
ex.Visible = True
ws.Rows("1:1").RowHeight = 60
ws.Columns("A:A").ColumnWidth = 10#
ws.Columns("B:B").ColumnWidth = 10#
ws.Cells(1, 1) = "Cognome"
ws.Cells(1, 2) = "Nome"
wb.Save
End Sub
Private Sub btnChiudi_Click()
wb.Close
Set wb = Nothing
ex.Quit
End Sub
Utilizzando i due pulsanti riesco ad aprire e chiudere quante volte voglio il file di excel, senza problemi di alcun tipo.
E' evidente che se chiudo excel manualmente, VB non potrà in seguito eseguire il metodo Close in quanto l'oggetto puntato da wb non è più valido.
Per risolvere il problema potresti evitare di visualizzare Excel (ex.Visible = False) così l'utente non può più chiuderlo manualmente.
Spero di esserti stato d'aiuto,