Copiare un foglio da ogni cartella di lavoro nella cartella di lavoro in una cartella utilizzando VBA in Microsoft Excel
-
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