- La macro copierà una parte del primo foglio di lavoro di ogni file che si trova nella cartella C:\Data nel primo foglio di lavoro della cartella di lavoro.
- La prima macro esegue una copia normale e la seconda macro copia i valori.
Copia il primo foglio di ogni cartella di lavoro nella cartella di lavoro in cui si trova il codice.
Il nome del foglio è il nome della cartella di lavoro.
Sub CopySheet() Dim basebook As Workbook Dim mybook As Workbook Dim i As Long Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = "C:\Data" .SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Quindi Imposta basebook = ThisWorkbook For i = 1 To .FoundFiles.Count Imposta mybook = Workbooks.Open(.FoundFiles(i)) mybook.Worksheets(1).Copy after:= _ basebook.Sheets(basebook.Sheets.Count) ActiveSheet.Name = mybook.Name mybook.Close Next i End If End With Application.ScreenUpdating = True End Sub
Per questo sub(TestFile4_values) è necessario disporre di fogli di lavoro non protetti o non proteggerli nel codice.
Sub CopySheetValues() Dim basebook As Workbook Dim mybook As Workbook Dim i As Long Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = "C:\Data" .SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute() 0 Quindi Imposta basebook = ThisWorkbook For i = 1 To .FoundFiles.Count Imposta mybook = Workbooks.Open(.FoundFiles(i)) mybook.Worksheets(1).Copy after:= _ basebook.Sheets(basebook.Sheets.Count) ActiveSheet.Name = mybook.Name With ActiveSheet.UsedRange .Value = .Value End With mybook.Close Next i End If End With Application.ScreenUpdating = True End Sub