• 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 copia i valori.

Copierà 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 Then

Set basebook = ThisWorkbook

For i = 1 To .FoundFiles.Count

Set 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 sotto (TestFile4_values) è necessario disporre di fogli di lavoro non protetti o rimuovere la protezione 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 Then

Set basebook = ThisWorkbook

For i = 1 To .FoundFiles.Count

Set 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