Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941

    VB 6.0 interazione con Excell

    ciao a tutti
    sto avendo un piccolo problema con
    la gestione di un file Excell...

    Succede che dopo aver lanciato il mio programma in Visual basic 6.0
    e dopo aver richiamato il file prova.xls
    se vado a chiuderlo(il file xls) non riesco più ad aprirlo se non chiudendo il programma in visual basic
    Questo perche nel codice utilizzato per richiamare il file excell
    non scrivo il codice excell.close e quindi resta aperto l'oggetto fino a che resta aperto il programma in VB.

  2. #2
    Mi sembra che ti sei già risposto da solo...
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    ma se scrivo l' oggetto close
    mi si chiude il file ed io lo voglio aperto

  4. #4
    Posta il codice, altrimenti è un po' difficile aiutarti...
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    Set FileExcel = excel.Workbooks.Open("D:\aventidiritto.xls", , 0)
    Set FoglioExcel = FileExcel.Sheets.Item("aventidiritto")
    registro.Visible = True
    Rows("1:1").RowHeight = 60
    Columns("A:A").ColumnWidth = 10#
    Columns("B:B").ColumnWidth = 10#

    FoglioExcel.Cells(1, 1).Select
    ActiveCell.FormulaR1C1 = "Cognome"

    FoglioExcel.Cells(1, 2).Select
    ActiveCell.FormulaR1C1 = "Nome"

    FileExcel.SaveAs FileName:="D:\aventidiritto.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

    FileExcel.Close


    Se gli scrivo FileExcel.Close
    mi si chiude il file in excell
    se non lo scrivo dopo non lo apre

  6. #6
    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,
    Chi non cerca trova.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    ciò pensato già
    ma volevo trovare una soluzione diversa

    controllare la x o la chiusura del file in excell
    ed in automatico far eseguire wb.close sarebbe l' ideale

    come faccio a controllare se un file è aperto o chiuso

  8. #8
    Se ho ben capito puoi fare così: una volta che hai salvato il file xls chiudilo pure con FileExcel.Close e riaprilo con la Shell. In questo modo il file xls non ha + vincoli con VB e può essere chiuso senza problemi.

  9. #9
    Scusa per la faccina... volevo dire

  10. #10
    Oppure attivi una trappola di errore sul metodo Close:
    codice:
    On Error Resume Next
    
    wb.Close
    
    If Err.Number <> 0 Then MsgBox "Il file è già stato chiuso!"
    
    On Error Goto 0
    Chi non cerca trova.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.