Copiați o coloană sau coloane din fiecare registru de lucru într-un folder folosind VBA în Microsoft Excel

Anonim
  • Macrocomanda va copia o parte din prima foaie de lucru a fiecărui fișier care se află în folderul C: \ Date în prima foaie de lucru a registrului de lucru.
  • Prima macro face o copie normală și a doua macro copiază valorile.

Amintiți-vă că Excel are doar 256 de coloane

Sub CopyColumn () Dim carte de bază Ca registru de lucru Dim Mybook ca registru de lucru Dim sursă Range As Range Dim distrange As Range Dim cnum As Integer Dim i As Long Dim a As Integer Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = "C: \ Date ".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 Următorul i Se încheie dacă se încheie cu Application.ScreenUpdating = True End Sub Sub CopyColumnValues ​​() Dim carte de bază Ca registru de lucru Dim carte ca carte de lucru Sursă de dimensiuni Distanță Ca interval Dim destrange Ca interval Dim cnum Ca număr întreg Dim i Ca lung Dim ca aplicație întregi. = Fals cu Application.FileSearch .NewSearch .LookIn = "C: \ Data" .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 With sourceRange Set destrange = basebook.Worksheets (1) .Columns (cnum). _ Redimensionare (, .Columns.Count) Termină cu destrange.Value = sourceRange.Value mybook.Close cnum = i * a + 1 Next i End If End With Application.ScreenUpdating = True End Sub