2014-06-06 77 views
-1

我有这段代码,但它似乎不起作用。我要的是运行在活动工作簿中的宏(数据):从工作簿复制,粘贴在最后一行+ 1行

enter image description here

打开一个数据库(工作簿):

从范围A2到最后一行的值复制数据库:

enter image description here

将其粘贴在活动工作簿中的最后一行,下面是最后一行:

enter image description here

Set targetWorkbook = Application.ActiveWorkbook 

filter = "All Excel Files (*.csv),*.csv" 
caption = "database" 
customerFilename = Application.GetOpenFilename(filter, , caption) 
Set customerWorkbook = Application.Workbooks.Open(customerFilename) 
Set targetSheet = targetWorkbook.Worksheets(1) 
Set sourceSheet = customerWorkbook.ActiveSheet 

LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 
targetSheet.Range(LastRow + 1, "A").Activate = sourceSheet.Range("A1:T" & LastRow).Value 

customerWorkbook.Close 

回答

0

两件事:
1)你应该有源LASTROW和目标LASTROW
2)你的第二去年说法是错误的。

' -- target is activeworksheet 
    Set targetworkbook = Application.ActiveWorkbook 
    Set targetsheet = targetworkbook.ActiveSheet 
    tgtLastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 
' -- source is csv file 
    Filter = "All Excel Files (*.csv),*.csv" 
    Caption = "database" 
    customerFilename = Application.GetOpenFilename(Filter, , Caption) 
    Set customerworkbook = Application.Workbooks.Open(customerFilename) 
    Set sourcesheet = customerworkbook.ActiveSheet 
    srcLastRow = sourcesheet.Cells(Rows.Count, 1).End(xlUp).Row 
'-- now copy 
    sourcesheet.Range("A1:T" & srcLastRow).Copy targetsheet.Rows(tgtLastRow + 1) 
    customerworkbook.Close 
+0

嗨德克姆利, 我没有机会在周末看这个。我今天会检查一下,并会让你知道。 – Modudes

+0

我检查了你和丹的代码。两者都是正确的,复制源数据。我更喜欢你的答案,因为它复制了一个特定的范围(尽管我仍然需要将A1更改为A2),与Dan从源表单中复制所有UsedRange不同。这次真是万分感谢! – Modudes

0
'Comment out - 

'LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row  
'targetSheet.Range(LastRow + 1, "A").Activate = sourceSheet.Range("A1:T" & LastRow).Value 

Dim tr As Range  
Dim sr As Range 

Set sr = sourceSheet.UsedRange  
Set tr = targetWorkbook.Worksheets("Sheet1").UsedRange 

sr.Copy Destination:=tr.End(xlDown).Offset(1, 0) 
+0

丹嗨, 我还没有机会看这个周末。我今天会检查一下,并会让你知道。 – Modudes

+0

我检查了你和dcromley的代码。两者都是正确的,复制源数据。我更喜欢dcromley的答案,因为它复制了特定的范围(尽管我仍然需要将A1更改为A2)。我仍然可以在我的代码开始时使用它。 我感谢您的帮助! – Modudes

相关问题