2016-05-31 134 views
0

我想将多个excel文件合并成一个文件。我能够正确地做到这一点,但我想放置数据的位置正在遇到一个小问题。如何将excel数据导入新的工作簿?

我希望我的数据在单元格A2的标题行下开始(粘贴),但由于我的表格被格式化为具有命名范围的表格,我的数据被粘贴在该空白表格的最后一行的下方。这是我用来粘贴数据的代码。

Sub CombineFiles() 

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 

ThisWB = ActiveWorkbook.Name 

path = "C:\MyFolder" 

RowofCopySheet = 2 

Application.EnableEvents = False 
Application.ScreenUpdating = False 

Set shtDest = ActiveWorkbook.Sheets("Import") 
Range("A2").Select 
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(Cells(Rows.Count, 1).End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)) 
     Set Dest = shtDest.Range("A" & shtDest.Cells(Rows.Count, 1).End(xlUp).Row + 1) 
     CopyRng.Copy 
     Dest.PasteSpecial xlPasteFormats 
     Dest.PasteSpecial xlPasteValuesAndNumberFormats 
     Application.CutCopyMode = False 'Clear Clipboard 
     Wkb.Close False 
    End If 

    Filename = Dir() 
Loop 
Sheets("Import").Select 
Range("A1").Select 
End Sub 

是否有任何更改可以对代码或表格中的单元格内容进行设置以使其正常工作?谢谢您的帮助!

回答

0

请根据您的要求更改范围后再试。它将从A2粘贴。使用剪贴板需要时间和资源,因此最好的方法是避免复制和粘贴,并将值设置为与所需值相同。尽管您已经提到在单独的工作簿之间需要数据传输,但只提供了仅用于解决基本问题的代码,所以这段代码片段传达了在涉及命名表的情况下传输的基本概念。

Sub Normalize() 
    Dim CopyFrom As Range 

    Set CopyFrom = Sheets("Sheet2").Range("A2", [H30]) 
    Sheets("Sheet1").Range("A1").Resize(CopyFrom.Rows.Count).Value = CopyFrom.Value 

End Sub 
+0

你是正确的剪贴板占用时间和资源。这段代码实际上是想从工作簿中的其他工作表复制数据是否正确?我的代码是从多个文件中提取的。我将用完整的代码编辑我的帖子。 – Dennis

+0

在此期间,请看它在一本工作簿中正常工作。 Ii在这里很晚,明天我将能够看到它。 – skkakkar

相关问题