Risolto macro che copia e rinomina file

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Buongiorno a tutti, avrei un rompicapo (almeno per me) da condividere con voi :
dentra una cartella del desktop ho un file (in allegato) che dovrei copiare e rinominare secondo i seguenti criteri:
. i 2 numeri (e solo loro)dopo il carattere "_" devono essere aumentati di 2 in 2 fino ad arrivare alla cifra 40
. il nome del file dopo le 2 cifre che seguono il carattere "_"potrebbe contenere altri caratteri
.se possibile la macro deve essere contenuta nel file "padre"(quello in allegato) comandata da un pulsante
E' possibile ?
 

Allegati

Marco Lauria

Utente assiduo
2 Gennaio 2017
1.281
95
Roma
www.artigianamaterassi.net
Excel 2016
137
Prova una cosa del genere:

Visual Basic:
Private Sub CommandButton1_Click()
    Dim Nome As String
    Dim Temp As String
    Dim sPath As String
    
    sPath = "QUI METTI IL PERCORSO DOVE VUOI SALVARE\"
    Nome = ThisWorkbook.Name
    Nome = Left(Nome, Len(Nome) - 5)
    Temp = Right(Nome, 2) + 2
    Nome = Left(Nome, Len(Nome) - 2)
    Nome = Nome & Temp
    ThisWorkbook.SaveAs sPath & Nome
End Sub
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Ho provato quanto mi hai proposto, ma non succede nulla
Visual Basic:
Private Sub CommandButton1_Click()
    Dim Nome As String
    Dim Temp As String
    Dim sPath As String
    
    sPath = "C:\Users\Pri14\Desktop\CO"
    Nome = ThisWorkbook.Name
    Nome = Left(Nome, Len(Nome) - 5)
    Temp = Right(Nome, 2) + 2
    Nome = Left(Nome, Len(Nome) - 2)
    Nome = Nome & Temp
    ThisWorkbook.SaveAs sPath & Nome
End Sub
 

Marco Lauria

Utente assiduo
2 Gennaio 2017
1.281
95
Roma
www.artigianamaterassi.net
Excel 2016
137
Ma cosa dici
funziona perfettamente
fa una copia del file col nuovo nome sul percorso determinato da sPath
Hai verificato cosa c'è nella cartella CO?????

Edit:
alla fine della stringa di sPath devi inserire "\"
Visual Basic:
sPath = "C:\Users\Pri14\Desktop\CO\"
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Non avrei motivo di scriverti una cosa per un'altra. Nella Cartella CO l'unico file presente è solo quello iniziale, "vite 8_10", degli altrio file ovvero "vite 8_12", "vite 8_14"....."vite 8_40" , purtroppo non c'e' traccia.
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Però mi crea un file solo , la mia necessità sarebbe quella di creare una serie di files passa 2 da 10 a 40.
Forse mi sono spiegato male inizialmente
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Ho fatto un ciclo for next, ma penso che ci voglia un doppio ciclo for in quanto non ottengo un nome file con finale 12,14,16,18 ma altri valori . suppongo che debba togliere al ciclo iniziale il valore che la variabile assume precedentemente. spro di essermi espresso correttamente .
Visual Basic:
Private Sub CommandButton1_Click()
    Dim Nome As String
    Dim Temp As String
    Dim sPath As String
    Dim i As Integer
   
    sPath = "C:\Users\Pri14\Desktop\CO\"
    Nome = ThisWorkbook.Name
    Nome = Left(Nome, Len(Nome) - 5)
   
    For i = 2 To 30 Step 2
        Temp = Right(Nome, 2) + i
        Nome = Left(Nome, Len(Nome) - 2)
        Nome = Nome & Temp
        ThisWorkbook.SaveAs sPath & Nome
    Next i
   
End Sub
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Ho provato a scrivere questo codice ma non è corretto. saperte dirmi dove sbaglio e perchè ?
Visual Basic:
Private Sub CommandButton1_Click()
    Dim Nome As String
    Dim Temp As String
    Dim sPath As String
    Dim i As Integer
    Dim ix As Integer
    
    sPath = "C:\Users\Pri14\Desktop\CO\"
    Nome = ThisWorkbook.Name
    Nome = Left(Nome, Len(Nome) - 5)
      
 
    For i = 2 To 30 Step 2
        For ix = 0 To 28 Step 2
            Temp = Right(Nome, 2) + (i - ix)
            Nome = Left(Nome, Len(Nome) - 2)
            Nome = Nome & Temp
            ThisWorkbook.SaveAs sPath & Nome
         Next ix
    Next i
End Sub
 

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
i dati verranno compilati in un secondo tempo perchè saranno collegati al nome del file, e più precisamente alle sue ultime 2 cifre.
 

Marco Lauria

Utente assiduo
2 Gennaio 2017
1.281
95
Roma
www.artigianamaterassi.net
Excel 2016
137
Siccome i file vanno da 12 a 40 con step 2,
vuol dire che dovrai creare 15 file, giusto?
quindi basta ciclare il processo per 15 volte:

Visual Basic:
Private Sub CommandButton1_Click()
    Dim Nome As String
    Dim Temp As String
    Dim sPath As String
    Dim i As Integer
    
    sPath = "C:\Users\Pri14\Desktop\CO\"
    Nome = ThisWorkbook.Name
    Nome = Left(Nome, Len(Nome) - 5)
    For i = 1 To 15
        Temp = Right(Nome, 2) + 2
        Nome = Left(Nome, Len(Nome) - 2)
        Nome = Nome & Temp
        ThisWorkbook.SaveAs sPath & Nome
    Next i
End Sub
Siccome sono un pazzo scatenato, posto il tuo file
anche con una ProgressBar.
Dimmi se ti piace
 

Allegati

Nife

Utente junior
27 Febbraio 2019
77
6
office 2018
1
Che dire : complimenti.

Secondo voi è possibile da ogni files generato (non da quello di partenza) eliminare il pulsante (potrebbe dare fastidio in fase di inserimento dati) ?
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!