Copie una columna o columnas de cada libro de trabajo en una carpeta usando VBA en Microsoft Excel

Anonim
  • La macro copiará una parte de la primera hoja de trabajo de cada archivo que esté en la carpeta C: \ Data a la primera hoja de trabajo de su libro.
  • La primera macro realiza una copia normal y la segunda macro copia los valores.

Recuerde que Excel tiene solo 256 columnas

Sub CopyColumn () Atenuar libro base como libro de trabajo Atenuar mybook Como libro de trabajo Atenuar fuente Rango como rango Atenuar destrange como rango Atenuar cnum As Integer Dim i Tan largo Atenuar como Integer Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = "C: \ Datos ".SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute ()> 0 Then Set basebook = ThisWorkbook cnum = 1 For i = 1 To .FoundFiles.Count Set mybook = Workbooks.Open (.FoundFiles (i)) Set sourceRange = mybook.Worksheets (1) .Columns ("A: B") a = sourceRange.Columns.Count Set destrange = basebook.Worksheets (1) .Cells (1, cnum) sourceRange.Copy destrange mybook.Close cnum = i * a + 1 Siguiente i End If End With Application.ScreenUpdating = True End Sub Sub CopyColumnValues ​​() Atenuar libro base como libro de trabajo Atenuar mybook como libro de trabajo Atenuar fuente Rango como rango Atenuar destrange As rango Atenuar cnum As Integer Atenuar i Tan largo Atenuar como Integer Aplicación. = Falso con Application.FileSearch .NewSearch .LookIn = "C: \ Data" .SearchSubFolders ( 1) .Columns ("A: B") a = sourceRange.Columns.Count Con sourceRange Establecer destrange = basebook.Worksheets (1) .Columns (cnum). _ Resize (, .Columns.Count) End With destrange.Value = sourceRange.Value mybook.Close cnum = i * a + 1 Next i End If End With Application.ScreenUpdating = True End Sub