Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    100

    Vb - Rinominare un file con già presente

    Salve a tutti, premetto che non ho mai toccato Vb e le varie macro in via mia ma un mio amico mi ha chiesto di fargli delle macro per dei file excel per la sua officina meccanica e sto cercando di buttare giù qualcosa (mi sto salvando avendo un po' di conoscenza di programmazione base).

    Option Explicit

    Sub nomeFile()

    Dim FName As String
    Dim FPath As String

    FPath = "C:\Users\Davide\Documents"

    If Sheets("Foglio1").Range("E48") = "CHIUSO" Then
    FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text & "____°CHIUSO°____"
    ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    Else
    FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text
    ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    End If

    End Sub
    È un foglio excel di un preventivo e una volta compilato viene salvato prendendo dei dati da 2 celle. Se però viene scritto "CHIUSO" in una cella, il file viene salvato con un altro nome.....e fino a qua mi funziona!!

    Il problema è che....io posso lanciare la macro la prima volta e il file viene salvato.. però questa pratica non sarebbe chiusa. Quando decido di chiudere il file, lo riapro aggiornando la stato e vorrei che non se ne salvi un altro col nome modificato, ma vorrei che proprio sovrascrivesse il file stesso!!!!
    È possibile? Se si, mi date una mano per piacere? Grazie =)

  2. #2

    Re: Vb - Rinominare un file con già presente

    Originariamente inviato da Otaking
    Salve a tutti, premetto che non ho mai toccato Vb e le varie macro in via mia ma un mio amico mi ha chiesto di fargli delle macro per dei file excel per la sua officina meccanica e sto cercando di buttare giù qualcosa (mi sto salvando avendo un po' di conoscenza di programmazione base).


    È un foglio excel di un preventivo e una volta compilato viene salvato prendendo dei dati da 2 celle. Se però viene scritto "CHIUSO" in una cella, il file viene salvato con un altro nome.....e fino a qua mi funziona!!

    Il problema è che....io posso lanciare la macro la prima volta e il file viene salvato.. però questa pratica non sarebbe chiusa. Quando decido di chiudere il file, lo riapro aggiornando la stato e vorrei che non se ne salvi un altro col nome modificato, ma vorrei che proprio sovrascrivesse il file stesso!!!!
    È possibile? Se si, mi date una mano per piacere? Grazie =)
    Il codice che hai postato è corretto ma può e deve essere migliorato. Questa è la versione giusta:
    codice:
    Dim FName1 As String
    Dim FPath As String
    
    FPath = "C:\Users\Davide\Documents"
    FName1 = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text 
    
    If Sheets("Foglio1").Range("E48") = "CHIUSO" Then
               FName1 = FName1 & "____°CHIUSO°____"
    End If
    ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    Detto questo, non so se così risolvi perchè sinceramente non ho capito bene..


    Fammi sapere..


    Ciao

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non mi esprimo sulla scelta di gestire i file in questo modo...

    Mi pare ovvio che se vuoi salvare con lo stesso nome,
    devi eliminare CHIUSO dalla cella prima di salvare il file.
    Alla successiva apertura, non trovando più la stringa CHIUSO salverà usando il secondo caso.

    Quello che non capisco è: perchè usi il metodo SaveAs anche nel secondo caso?
    Dovresti usare semplicemente il metodo Save, il nome del file non serve.


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    100
    Grazie MdE2005 per aver risposto ^_^

    Con 1/2 piccole modifiche, il tuo codice fa esattamente quello che già faceva prima (ovviamente la tua versione direi che è ottimizzata)

    Quello che voglio io però è che.... la prima volta che aprono il file, lo compilano e salvano il file così:
    Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text

    ma successivamente, riaprono il file e modificando la cella dello stato (cioè mettendo chiuso), il file venga salvato così:
    Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text & "____°CHIUSO°____"
    (va beh...fa schifo lo so ma vogliono evidenziare nel nome del file il fatto che questo ordine sia appunto chiuso)

    Facendo così però ci saranno 2 file uguali nel contenuto nella cartella! Es:
    1234_PIPPO.xls e 1234_PIPPO____°CHIUSO°____.xls
    mentre io voglio che ci sia solo quello chiuso e non la prima versione del file!!! Non so...o fare in modo che 1234_PIPPO.xls sia rinominato oppure che salvandolo col nome 1234_PIPPO____°CHIUSO°____.xls venga cancellato quello che si chiama 1234_PIPPO.xls

    Spero sia più chiaro così....

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    100
    Originariamente inviato da gibra
    Non mi esprimo sulla scelta di gestire i file in questo modo...
    Se intendi in generale, boh così hanno chiesto...non sapendo di preciso come gestiscono questi documenti e l'iter che seguono, non saprei che altre eventuali soluzioni pensare (ed essendo una cosa fatta a tempo perso, non voglio starci su troppo) ....se intendi dal punto di vista del codice, chiedo umilmente perdono ma ste cose sono la prima volta che le vedo

  6. #6
    Originariamente inviato da Otaking
    o fare in modo che 1234_PIPPO.xls sia rinominato oppure che salvandolo col nome 1234_PIPPO____°CHIUSO°____.xls venga cancellato quello che si chiama 1234_PIPPO.xls
    Io opterei per la prima soluzione: a questo punto il codice sarà semplicemente questo

    codice:
      
    Dim FName1 As String
    Dim FPath As String
    
    FPath = "C:\Users\Davide\Documents"
    FName1 = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text 
    
    ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    Però a questo punto viene meno il discorso del "chiuso"..

    Non so, dimmi te..


    Ciao

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da Otaking
    Facendo così però ci saranno 2 file uguali nel contenuto nella cartella! Es:
    1234_PIPPO.xls e 1234_PIPPO____°CHIUSO°____.xls
    mentre io voglio che ci sia solo quello chiuso e non la prima versione del file!!! Non so...o fare in modo che 1234_PIPPO.xls sia rinominato oppure che salvandolo col nome 1234_PIPPO____°CHIUSO°____.xls venga cancellato quello che si chiama 1234_PIPPO.xls
    Ecco, adesso è più chiaro.
    Allora basta che cancelli quello vecchio, dopo averlo salvato.

    Non so se in VBA esiste il metodo Kill, penso di sì:

    codice:
    If Sheets("Foglio1").Range("E48") = "CHIUSO" Then
        FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text & "____°CHIUSO°____"
        ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    
        ' Elimino il file originale, che non serve più
        FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text
        Kill FPath & "\" & FName
    Else
        FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text
        ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
    End If



  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    100
    Originariamente inviato da gibra
    Allora basta che cancelli quello vecchio, dopo averlo salvato.

    Non so se in VBA esiste il metodo Kill, penso di sì:
    Ho provato ma.... la prima volta riesce a creare il file senza problemi. quando aggiungo CHIUSO alla relativa cella, mi appare questo errore quando lancio la macro:
    Errore di run-time '53':
    Impossibile trovare il file

    e se vado in debug, mi evidenzia questa riga:
    Kill FPath & "\" & FName
    c'è da dire però che il file con la dicitura chiuso viene creato correttamente.

    Evidentemente questo comando Kill ha dei problemi...per quello ci sono sempre entrambe le versioni del file salvate

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Controlla se il contenuto delle variabile corrisponde effettivamente a quello che ti aspetti.


  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    100
    Yeahhhh!!! Problema risolto =)
    Mi è bastato aggiungere l'estensione del file da eliminare (pensavo fosse sottointeso ma giustamente non è così )

    Per la cronaca:
    ' Elimino il file originale, che non serve più
    FName = Sheets("Foglio1").Range("C1").Text & "_" & Sheets("Foglio1").Range("H4").Text & ".xls"
    Kill FPath & "\" & FName

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.