Kopiera en eller flera kolumner från varje arbetsbok i en mapp med VBA i Microsoft Excel

Anonim
  • Makrot kommer att kopiera en del av det första kalkylbladet i varje fil som finns i mappen C: \ Data till det första kalkylbladet i din arbetsbok.
  • Det första makrot gör en normal kopia och det andra makroet kopierar värdena.

Kom ihåg att Excel bara har 256 kolumner

Sub CopyColumn () Dim basbok As Workbook Dim mybook As Workbook Dim sourceRange As Range Dim destrange As Range Dim cnum As Integer Dim i As Long Dim a As Integer Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = "C: \ Data ".SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute ()> 0 Ställ sedan in basebook = ThisWorkbook cnum = 1 För i = 1 Till .FoundFiles.Count Set mybook = Workbooks.Open (.FoundFiles (i)) Ange 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 Nästa i End If End with Application.ScreenUpdating = True End Sub Sub CopyColumnValues ​​() Dim basbok As Workbook Dim mybook As Workbook Dim sourceRange As Range Dim destrange As Range Dim cnum As Integer Dim i As Long Dim a As Integer Application.ScreenUpdating = Falskt med Application.FileSearch .NewSearch .LookIn = "C: \ Data" .SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute ()> 0 Ställ sedan in basebok = ThisWorkbook cnum = 1 För i = 1 Till .FoundFiles.Count Ställ in mybook = Workbooks.Open (.FoundFiles (i)) Ange sourceRange = mybook.Worksheets ( 1) .Columns ("A: B") a = sourceRange.Columns.Count With sourceRange Set destrange = basebook.Worksheets (1) .Columns (cnum). _ Ändra storlek (, .Columns.Count) Avsluta med destrange.Value = sourceRange.Value mybook.Close cnum = i * a + 1 Nästa i End If End with Application.ScreenUpdating = True End Sub