Sub Prova_macro()
Application.ScreenUpdating = False 'disattiva passaggio da finestra ad altra finestra
Windows(1).Activate
numfogli = Sheets.Count 'imposto il numero di fogli totali
'ciclo per copiare i nomi dei fogli nel nuovo file
Workbooks.Add
j = 1
k = 1
For i = 1 To numfogli - 1
Worksheets(k).Name = Workbooks("esempio.xlsm").Sheets(j).Name
j = j + 1
k = k + 1
Sheets.Add after:=ActiveSheet
Next
Application.DisplayAlerts = False
Worksheets(4).Delete
ActiveWorkbook.SaveAs "C:Macroalessandro.xlsx"
'ciclo che copia gli attributi del nome sul nuovo file per tutti i fogli
For indiceFoglio = 1 To numfogli - 1
Application.Goto Workbooks("esempio.xlsm").Sheets(indiceFoglio).Range("A1:AH1")
Selection.Copy
Application.Goto Workbooks("alessandro.xlsx").Sheets(indiceFoglio).Range("A1")
ActiveSheet.Paste
Columns("A").EntireColumn.AutoFit
Application.Goto Workbooks("esempio.xlsm").Sheets(indiceFoglio).Range("A2:AH4")
Selection.Copy
Application.Goto Workbooks("alessandro.xlsx").Sheets(indiceFoglio).Range("A2")
ActiveSheet.Paste
Columns("A").EntireColumn.AutoFit
Next
ActiveWindow.Close True
Windows(1).Activate
numfogli = Sheets.Count
Workbooks.Add
j = 1
k = 1
For i = 1 To numfogli - 1
Worksheets(k).Name = Workbooks("esempio.xlsm").Sheets(j).Name
j = j + 1
k = k + 1
Sheets.Add after:=ActiveSheet
Next
Application.DisplayAlerts = False
Worksheets(4).Delete
ActiveWorkbook.SaveAs "C:Macrofabrizio.xlsx"
For indiceFoglio = 1 To numfogli - 1
Application.Goto Workbooks("esempio.xlsm").Sheets(indiceFoglio).Range("A1:AH1")
Selection.Copy
Application.Goto Workbooks("fabrizio.xlsx").Sheets(indiceFoglio).Range("A1")
ActiveSheet.Paste
Columns("A").EntireColumn.AutoFit
Application.Goto Workbooks("esempio.xlsm").Sheets(indiceFoglio).Range("A2:AH4")
Selection.Copy
Application.Goto Workbooks("fabrizio.xlsx").Sheets(indiceFoglio).Range("A2")
ActiveSheet.Paste
Columns("A").EntireColumn.AutoFit
Next
ActiveWindow.Close True
'copia nomi in setting
Sheets(1).Activate
Set area = Worksheets(1).Range(Cells(2, 1), Cells(2, 1).End(xlDown))
n = area.Rows.Count
i = 2
For r = 2 To n Step 3
Sheets(4).Cells(i, 1) = Sheets(1).Cells(r, 1)
Columns("A:A").EntireColumn.AutoFit
Worksheets(1).Activate
i = i + 1
Next
Sheets(4).Activate
Range(Cells(2, 1), Cells(2, 1).End(xlDown)).Select
ActiveWorkbook.Worksheets(4).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(4).Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(4).Sort
.SetRange Range(Cells(2, 1), Cells(2, 1).End(xlDown))
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'copia nomi file in riepilogo e ordinamento alfabetico
Sheets(4).Activate
Dim fso As New FileSystemObject
Dim GF As Folder
Dim F1 As File
Dim percorso, ricerca
percorso = "C:Macro"
ricerca = "xlsx"
Range("b2") = ricerca
Set GF = fso.GetFolder(percorso)
r = 1
For Each F1 In GF.Files
If InStr(1, F1.Name, ricerca, vbTextCompare) Then
r = r + 1
Cells(r, 2) = F1.Name
Columns("B").EntireColumn.AutoFit
End If
Next
Sheets(4).Activate
Range(Cells(2, 2), Cells(2, 2).End(xlDown)).Select
ActiveWorkbook.Worksheets(4).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(4).Sort.SortFields.Add Key:=Range("B2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(4).Sort
.SetRange Range(Cells(2, 2), Cells(2, 2).End(xlDown))
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'copia nome mesi e fogli in riepilogo
Sheets(1).Activate
Set area = Worksheets(1).Range(Cells(2, 1), Cells(2, 1).End(xlDown))
n = area.Count / 3
r = 2
c = 5
For i = 1 To n
For j = 1 To 3
Sheets(4).Cells(r, c) = Sheets(j).Name
c = c + 1
Next
r = r + 1
c = 5
Next
'copia nomi fogli mesi in riepilogo
r = 2
For i = 1 To n
Sheets(4).Activate
ActiveSheet.Range(Cells(r, c), Cells(r, c).End(xlToRight)).Select
Selection.Copy
Sheets(4).Cells(r, c + (j - 1)).Activate
ActiveSheet.Paste
r = r + 1
Next
Sheets(4).Activate
End Sub
|