2016-06-16 53 views
0

我試圖將特殊值和格式從多個工作簿複製粘貼到主電子表格中。源和目標中的列數相同,行數也不相同。複製粘貼特殊的VBA不起作用

我讀了其他線程,並嘗試了多種方法(包括在目標文件中定義一個範圍),但我仍然無法使粘貼特殊工作。以下是我的代碼:

Sub mergefiles() 

Dim folderpath As String 
Dim filepath As String 
Dim filename As String 
Dim erow As Long 


folderpath = "D:\Test\" 
filepath = folderpath & "*.xls*" 
filename = Dir(filepath) 

Dim lastrow As Long, lastcolumn As Long 

Do While filename <> "" 

    Workbooks.Open (folderpath & filename) 

    Worksheets("EmplOffers").ShowAllData 

    lastrow = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row 
    lastcolumn = ActiveSheet.Cells(6, Columns.Count).End(xlToLeft).Column 

    Range(Cells(6, 3), Cells(lastrow, lastcolumn)).Copy 

    Application.DisplayAlerts = False 

    ActiveWorkbook.Close 

    erow = Worksheets("EmplOffers").Cells(Rows.Count, 3).End(xlUp).Offset(1,  0).Row 

    Worksheets("EmplOffers").Range(Cells(erow, 3), Cells(erow, 20)).PasteSpecial=:xlPasteValuesAndNumberFormats 

    filename = Dir 

Loop 

Application.DisplayAlerts = True 

End Sub 

非常感謝!

+1

究竟我沒有工作?它給你一個錯誤還是意外行事? – RGA

+0

它只是不復制粘貼任何東西。只是看起來它選擇了範圍,但沒有做實際的複製粘貼。 – Ioana

回答

0

嘗試調整糊呼叫:

Worksheets("EmplOffers").Range(Cells(erow, 3).Address).PasteSpecial Operation:=xlPasteValuesAndNumberFormats 
+0

非常感謝!很棒! – Ioana

+0

@Ioana如果您不介意,請將我的答案標記爲正確,將其從未答覆的問題隊列中移除 – RGA

+0

完成!感謝您指出了這一點。 – Ioana

0

命名參數應先:=
變化

Worksheets("EmplOffers").Range(Cells(erow, 3), Cells(erow, 20)).PasteSpecial=:xlPasteValuesAndNumberFormats 

要:

Worksheets("EmplOffers").Range(Cells(erow, 3), Cells(erow, 20)).PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
+0

非常感謝。也適用! – Ioana