codice vba per modificare il nome del file

Anonimo
2016-01-16T13:24:08+00:00

salve a tutti

in una maschera carico, attraverso un cmdFile, i file provenienti da qualsiasi directory e popolo due txtbox di nome txtFile e txtPath

Da un altro comando cmdcopyfile3 "riesco" a copiare il file in un percorso predefinito e creare contemporaneamente una cartella, in base al valore riportato nella txtCategoria e una sottocartella in base al valore txtSottocategoria.

Ho inserito una nuova cmdRinominaFIle, da dover utilizzare in caso di voler rinominare il file presente nel txtFile, e al click il setfocus va su txtFile da modificare e successivamente su pulsante cmdCopy inserisci il file rinominato

Per fare tuttociò occorre inserire una nuova txtNuovoNomeFile per gestire meglio?

In pratica vorrei far si che se il nome del file caricato è corretto di procedere o in alternativa modificarlo

Il codice attuale:

Private Sub cmdCopyFiles3_Click()

'Const myPath  As String = "B:\Documenti" ' <----- personalizza il path!!

If Not folderExists(myPath) Then MkDir myPath

If Not FileExists(Me.txtFile) Then VBA.MsgBox "il file non esiste", vbCritical, "warning": Exit Sub

Dim strFile     As String

Dim i           As Integer

Dim strFileName As String

strFile = justFileName(Me.txtFile)

If Not folderExists(myPath & Me.txtCategoria) Then

    MkDir myPath & Me.txtCategoria

End If

If Not folderExists(myPath & Me.txtCategoria & "" & Me.txtSottocategoria) Then

    MkDir myPath & Me.txtCategoria & "" & Me.txtSottocategoria

End If

strFileName = myPath & Me.txtCategoria & "" & Me.txtSottocategoria & "" & strFile

i = 1

Do While Len(Dir(strFileName)) > 0

    strFileName = "copia di (" & i & ") " & strFile

    i = i + 1

    strFileName = myPath & Me.txtCategoria & "" & Me.txtSottocategoria & "" & strFileName

Loop

strFile = strFileName

FileCopy Me.txtFile, strFile

If FileExists(strFile) Then VBA.MsgBox "file copiato con successo", vbInformation, "Info"

End Sub

Grazie a Voi tutti.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-02-03T06:53:51+00:00

ciao NebbiaDB,

per la formattazione della data prova a studiare la funzione nativa format$.

Ragiona su questo...

se vuoi anteporre ai files che carichi la data o qualsiasi altra cosa e fare in modo che il file acquisisca anche la data nel suo nome, il file deve essere comunque rinominato, e per comunque intendo dire SEMPRE.

quindi qui :

[....]

 Ad esempio dopo caricato il file e rinominato oppure no,

[...]

Grazie ancora infinite Sandro

Oppure no...mmm....ci sta poco...

Se si tratta, ma non credo, di inserire all'interno del nome anche la data SOLO nel tuo db con format$ risolvi.

Se invece come penso vuoi che anche il file fisico salvato su disco assuma questa modifica, devo procedere con la rinomina sistematica.

[...]

Grazie ancora infinite Sandro

[...]

ciao, Sandro

ps. apri un altro 3d qui sfioriamo il teraByte ormai ed è diventato un sguazzabuglio di issues....

La risposta è stata utile?

0 commenti Nessun commento

43 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-01-19T18:44:33+00:00

    ciao NebbiaDb,

    inserisci in un modulo standard, anche uno già esistente questa funzione :

    Public Function justExtentionFileName(ByVal strFullPath As String) As String

    justExtentionFileName = Mid$(strFullPath, InStrRev(strFullPath, ".") + 1, Len(strFullPath))

    End Function

    rilevi l'estensione di un file passato il fullPath dello stesso: in modo da potere inserire nella text box in cui scrivi il nuovo nome del file solo il nomeNuovo del file.

    si potrebbe modificare una delle funzioni che già abbiamo studiato nel tuo DB ma dovresti modificare il codice associato e adibito ad altro: quella a cui mi riferisco, è anche più elegante di quella che ti mostro qui sopra...ma temo di crearti confusione...quindi intanto procediamo come sopra poi...a regime i dettagli....inserisci la funzione di cui sopra e modifica così il codice che modifica il nome del file :

    Dim justExtention As String

    justExtention = justExtentionFileName(Me.txtPath & Me.txtFile)

    Name Me.txtPath & Me.txtFile As Me.txtPath & Me.txtNuovoNomeFile & "." & justExtention

    If FileExists(Me.txtPath & Me.txtNuovoNomeFile & "." & justExtention) Then

         VBA.MsgBox "file rinominato correttamente", vbInformation, "Info"

     Else

         VBA.MsgBox "file non rinominato correttamente", vbCritical, "Attenzione"

     End If

    End Sub

    ciao, Sandro.

    ps. domanda....

    carichi questo file :C:\Users\sandro\Desktop\mioFile.txt nella tua form.

    e lo rinomini pippo

    la routine lo rinomia pippo.txt

    che succede se nello stesso path hai già un file pippo.txt....?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-19T18:13:02+00:00

    Ciao caro Sandro,

    a piccoli passi... intanto... grazie a te stai facendo uscire un bel db.... ci siamo quasi :-)

    Spero che non mi uccidete a me, che sto sempre a "rompere", a chiedere....

    ho cercato di inserire il codice e va al 99% nel senso che non mi copia l'estensione del file rinominato

    Ad esempio se in txtNuvoNomeFIle scrivo GrazieSandro e nel txtFIle c'è scritto Nebbiacherompe**.docx** è possibile inserirlo?

    Grazie a Voi tutti

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-01-19T14:01:49+00:00

    Hai controllato, come ti ho suggerito, tramite MsgBox o nella finestra immediata cosa stai passando a objFSO.MoveFile ?

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-01-19T14:00:46+00:00

    non me ne vorrà il ns Mauro... :-))

    Ti ucciderò per questo.... ;-)))

    La risposta è stata utile?

    0 commenti Nessun commento