2016-05-31 110 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

相關問題