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-21T11:05:59+00:00

    ciao NebbiaDB,

    la richiesta di modifica del nome del file viene effettuata solamente nel momento il cui il file viene caricato nella maschera.

    Non abbiamo mai parlato di cmdButton di modifica ulteriore.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-01-21T11:00:14+00:00

    Ciao Sandro

    scusami tanto se mi sono persone

    questo il mio codice e succede questo:

    carico il file e se clicco si su modifica nome file (sandro.txt) il cursore si posiziona su txtNuovoNomeFile e scrivo (nebbia);

    su invio mi scrive nebbia.txt

    Clicco su cmdCopyFiles3 e mi esce msg file non esiste.

    in alto

    Option Compare Database

    Option Explicit

    Dim justExtention As String

    Dim bool          As Boolean

    Public Function justExtentionFileName(ByVal strFullPath As String) As String

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

    End Function

    Private Sub cmdFile_Click()

    'apre la finestra per scegliere il file

    Dim lngSlashPos As Long

    Dim fullPath    As String

    fullPath = cmdFileDialog

    lngSlashPos = InStrRev(fullPath, "")

    Me.txtPath = Mid$(fullPath, 1, lngSlashPos)

    Me.txtFile = justFileName(fullPath)

    Me.Recalc

    Dim iRisposta As Integer

    iRisposta = MsgBox("Vuoi modificare il nome del file ???", vbYesNoCancel)

    Select Case iRisposta  'impostiamo il Select Case con riferimento al messaggio restituito dalla variabile iRisposta

    Case vbYes                'se risponderemo "Si" :

         Me.txtNuovoNomeFile.SetFocus

         Me.txtNuovoNomeFile.BackColor = vbRed

    Case vbNo                  'se sceglieremo "No":

          Me.txtNuovoNomeFile = Me.txtFile

          Exit Sub

    Case Else

    End Select

    End Sub

    Private Sub txtNuovoNomeFile_BeforeUpdate(Cancel As Integer)

    'prima di aggiornare il controllo Nuovo Nome File

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

    If bool Then

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

             VBA.MsgBox Me.txtPath & Me.txtNuovoNomeFile & vbNewLine & _

                        " esiste già assegna un altro nome!", vbCritical, "Warning"

            Cancel = True

        Else

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

            Me.txtNuovoNomeFile.BackColor = vbWhite

            VBA.MsgBox "Ho rinominato :" & vbNewLine & _

                        Me.txtPath & Me.txtFile & vbNewLine & _

                        " così:" & vbNewLine & _

                        Me.txtPath & Me.txtNuovoNomeFile & justExtention, vbInformation

            bool = False

        End If

    End If

    End Sub

    Private Sub txtNuovoNomeFile_Change()

       'su modifica del controllo Nuovo Nome File

        Me.txtNuovoNomeFile.BackColor = vbWhite

    End Sub

    Private Sub txtNuovoNomeFile_AfterUpdate()

    'dopo aggiornamento del controllo Nuovo Nome File

    Me.txtNuovoNomeFile = Me.txtNuovoNomeFile & justExtention

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-01-21T08:52:18+00:00

    ciao NebbiaDB,

    la logica applica per rinominare file prevede di scrivere il nuovo nome senza l'estensione.

    se il file caricato si chiama pippo.txt e lo rinomini con pippo1, la rinomina viene effettuata da me correttamente, pippo1.txt come da modifica suggerita.

    Stai procedendo in questo senso?

    se si e hai ancora problemi pubblica le modifiche che hai effettuato....qualcosa non mi torna da ma tutto ok,

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-01-21T08:10:46+00:00

    buongiorno caro Sandro,

    ma purtoppo ancora non va, nel senso che anche in assenza del +1 il punto. non è presente ugualmente...

    Grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento