Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Alessandro,
Apri il file che contiene i codici campioni e prova qualcosa del genere:
- Alt-F11 per aprire entrare l'ambiente VBA
- Alt-IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Sub Tester()
Dim srcWB As Workbook, destWB As Workbook
Dim srcSH As Worksheet, destSH As Worksheet
Dim srcRng As Range, destRng As Range, rCell As Range
Dim sPath As String
Dim sStr As String, aStr As String
Const sCellaDaCompilare As String = "M9"
Const sFogliodaDaCompilare As String = "Foglio1" '<<===== Modifica
Const sFoglioNomi As String = "ElencoCodici" '<<===== Modifica
Const sIntervalloCodici As String = "C2:C146"
Const sFileDaCompilare As String = "Questionario.xlsx" '<<===== Modifica
Const sPercorso As String = "**C:\Users\Alessandro\Documenti**" '<<===== Modifica
On Error GoTo XIT
Set destWB = Workbooks.Open(sPath & sFileDaCompilare)
Set destSH = destWB.Sheets(sFogliodaDaCompilare)
Set destRng = destSH.Range(sCellaDaCompilare)
With Application
sStr = .PathSeparator
.ScreenUpdating = False
End With
If Right(sPercorso, 1) >= sStr Then
sPath = sPercorso
Else
sPath = sPercorso & sStr
End If
Set srcWB = ThisWorkbook
Set srcSH = srcWB.Sheets(sFoglioNomi)
Set srcRng = srcSH.Range(sIntervalloCodici)
For Each rCell In srcRng.Cells
aStr = rCell.Value
If Not aStr = vbNullString Then
destRng.Value = aStr
destWB.SaveCopyAs aStr & ".xlsx"
End If
Next rCell
destWB.Close SaveChanges:=False
XIT:
Application.ScreenUpdating = True
End Sub
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If
On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
'<<=========
- Alt-Q per chiudere l'editor di VBA e tornare a Excel.
- Salva il file con l'estensione xlsm
- Alt-F8 per aprire la finestra di gestione delle macro
- Seleziona Tester | Esegui
Non ho capito la necessità di salvare il nuovi file sequenzialmente in quanto possono essere visualizzati o aperti in sequenza alfabetica indipendentemente dalla sequenza di creazione. Se, tuttavia. ci fosse qualche importante motivo, sarebbe molto facile da modificare il codice di conseguenza.
===
Regards,
Norman