Mi permetto di suggerire questa variante alla macro proposta da patel (vedi sopra):
- Codice: Seleziona tutto
Sub FilConv()
Dim myPath As String, oldX As String, myF As String, mySplit
Dim newF As Integer, newX As String, newFN As String, newPath As String
'
myPath = "C:\PercorsoDiOrigine\" '<<< La directory coi file da convertire
newPath = "C:\PercorsoDiDestinazione\" '<<< La directory dei file convertiti
oldX = ".xls"
'
If Right(myPath, 1) <> "\" Then myPath = myPath & "\"
If Right(newPath, 1) <> "\" Then newPath = newPath & "\"
Application.EnableEvents = False
Application.ScreenUpdating = False
myF = Dir(myPath & "*" & oldX)
Do While myF <> ""
If UCase(Right(myF, Len(oldX))) = UCase(oldX) Then
Workbooks.Open myPath & myF, 0
If ActiveWorkbook.HasVBProject Then
newX = ".xlsm": newF = 52 'Con macro
Else
newX = ".xlsx": newF = 51 'Senza macro
End If
newFN = Left(myF, Len(myF) - Len(oldX)) & newX
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
newPath & newFN, FileFormat:=newF, CreateBackup:=False
ActiveWorkbook.Close False
Application.DisplayAlerts = True
ThisWorkbook.Sheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = myF
Else
ThisWorkbook.Sheets("Foglio2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = myF
End If
myF = Dir
Loop
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox ("Conversione completata...")
End Sub
Parti da un nuovo file contenenti almeno Foglio1 e Foglio2, e inserisci la macro in un Modulo Standard del vba.
Personalizza le istruzioni marcate <<< come da commenti.
Quando sei pronto esegui la Sub FilConv.
Essa aprira' uno dopo l'altro i file ".xls" presenti nella directory che hai dichiarato e li convertira' in formato .xlsm (se contengono macro) oppure .xlsx (senza macro), salvandoli nella directory che hai indicato in newPath.
Durante la conversione i file convertiti saranno elencati (col vecchio nome) in Foglio1; quelli non convertiti in Foglio2.
Ad esempio non saranno convertiti file gia' in formato xlsx oppure xlsm. NB: questi file rimarranno nella directory di origine, non saranno spostati in CONVERTITI.
File non in formato ".xls" non saranno presi in considerazione (es .xlt, o .csv)
Dopo la verifica i file originali potrebbero essere cancellati (se risultano "convertiti"); oppure (meglio...) te li archivi su un cd o su un altro archivio di salvataggio.
Rispetto alla macro di patel, la differenza principale e' che i file privi di macro saranno convertiti in .xlsx; solo quelli conteneti macro saranno convertiti in .xlsm. Inoltre viene creato il log dei file convertiti o non convertiti, come detto prima.
Ciao