【发布时间】:2017-12-02 08:54:23
【问题描述】:
我被难住了!我正在尝试从文件夹中的多个工作簿复制数据并将它们粘贴到一个主工作簿中。我有一个循环,它将遍历文件夹中的每个工作簿,复制数据,然后将其粘贴到主工作簿中。问题是,我每次都需要将数据粘贴到一个新列上。例如,workbook1 中的数据应粘贴到 A 列,workbook2 应粘贴到 B 列,依此类推。
我可以获取代码以粘贴每个工作簿中的数据,但它一直将其复制到一行中。如何让它移动到下一列而不是移动到下一行?
'Description: Combines all files in a folder to a master file.
Sub MergeFiles()
Dim path As String, ThisWB As String, lngFilecounter As Long
Dim wbDest As Workbook, shtDest As Worksheet, ws As Worksheet
Dim Filename As String, Wkb As Workbook
Dim CopyRng As Range, Dest As Range
Dim RowofCopySheet As Integer
RowofCopySheet = 2 ' Row to start on in the sheets you are copying from
ThisWB = ActiveWorkbook.Name
path = "C:\testing"
Application.EnableEvents = False
Application.ScreenUpdating = False
Set shtDest = ActiveWorkbook.Sheets(1)
Filename = Dir(path & "\*.xl*", vbNormal)
If Len(Filename) = 0 Then Exit Sub
Do Until Filename = vbNullString
If Not Filename = ThisWB Then
Set Wkb = Workbooks.Open(Filename:=path & "\" & Filename)
Set CopyRng = Wkb.Sheets(1).Range(Cells(RowofCopySheet, 1), Cells(ActiveSheet.UsedRange.Rows.Count, ActiveSheet.UsedRange.Columns.Count))
Set Dest = shtDest.Range("A" & shtDest.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
CopyRng.Copy Dest
Wkb.Close False
End If
Filename = Dir()
Loop
Range("A1").Select
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub
【问题讨论】:
-
Protip:Rubberduck 的下一个版本(计划在 7 月的某个时间),您可以将
'Description: {foo bar}替换为'@Description("foo bar"),然后您将在呼叫站点看到该描述在对象浏览器中! =)