Chiudere fname



  • Chiudere fname
    di micmao data: 06/07/2015 09:50:09

    Ho aperto un file il cui nome cambia di volta in volta posizionando nella cella DX5 il suo nome e percorso e fino a qui tutto ok. Adesso non riesco a chiuderlo dopo aver effettuato le modifiche. Se metto il nome per esteso ok se metto fname si blocca.
    aiutooooooo

    Inoltre posso fare la modifica ad un file chiuso?
    Grazie mille
    Le ho provate tutte.




     
     
    fname = Foglio1.Range("Dx5")
        
    Workbooks.Open (fname)
    
    Application.Workbooks("xxxxxxxx.xlsm").Close True



  • di Luca73 data: 06/07/2015 10:51:00

    Ciao
    io di solito risolvo definendo una variabile e con il comando SET gli attribuisco la cartella in fase di apertura.

     
    Dim pippo As Workbook
    [...]
    fname = Foglio1.Range("Dx5")
    Set pippo = Workbooks.Open(Filename:=fname)
    [...]
    pippo.Close (False)
    Set pippo = Nothing
    [...]
    End Sub
    






  • di micmao data: 06/07/2015 11:40:25

    Che vuol dire dai una variabile. Mi fai capire non sono un professionista.

    Come me l'hai dato tu da sempre errore.
    Non capisco perchè lo apre e poi non lo chiude.



  • di Luca73 (utente non iscritto) data: 06/07/2015 13:23:03

    Ciao
    Innanzitutto scusami se ho dato per scontato le tue conoscenze, comunque neanche io sono un professionista.
    In VBA altre ad assegnare variabili ad entità quali numeri, stringhe, matrici, vettori, possono essere assegnate variabili alle entità di excel (quali fogli, intervalli, celle e workbook).
    In questo caso bisogna usare il comando SET
    ad esempio SET MiaVariabile = range ("A1:C5") genera una variabile (MiaVariabile) che contiene il range designato pertanto se cambio colore a MiaVariabile vedrai cambiare colore al range,.....

    Ora per comodità ti ho suggerito di assegnare la cartella che aprivi ad una variabile in modo che nel prosieguo del codice potessi riferiri alla cartella in esame chiamandola con la variabile e senza bisogno di chiamarla per nome.
    Questo lo ottieni con l'istruzione Set pippo = Workbooks.Open(Filename:=fname) che contemporaneamente ti aprire il file e lo assegna alla variabile pippo.

    Spero di essermi spiegato

    Sotto ho messo un programmiano che nient'altro fa che leggere in C5 il nome del file aprire il file corrispondente, lanciarti un messaggio e poi chiude il file aperto.

    Per favore provalo così com'è e dimmi se funziona. poi puoi applicare lo stesso al tuo programma.
    Io l'ho testato e mi sembra funzionare a dovere.

    Ciao
    Luca


     
    Dim pippo As Workbook
    Dim fname As String
    
    Sub ApriChiudi()
    fname = Foglio1.Range("C5")
    Set pippo = Workbooks.Open(Filename:=fname)
    MsgBox "Aperto"
    pippo.Close (False)
    Set pippo = Nothing
    End Sub