Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从工作簿复制,粘贴到最后一行+;一排_Vba_Excel - Fatal编程技术网

Vba 从工作簿复制,粘贴到最后一行+;一排

Vba 从工作簿复制,粘贴到最后一行+;一排,vba,excel,Vba,Excel,我有这个代码,但它似乎不工作。我想要的是在活动工作簿(包含数据)上运行宏: 打开数据库(工作簿): 使用以下值将数据库从范围A2复制到最后一行: 将其粘贴到活动工作簿的最后一行,即最后一行下面: Set targetWorkbook = Application.ActiveWorkbook filter = "All Excel Files (*.csv),*.csv" caption = "database" customerFilename = Application.GetOpenF

我有这个代码,但它似乎不工作。我想要的是在活动工作簿(包含数据)上运行宏:

打开数据库(工作簿):

使用以下值将数据库从范围A2复制到最后一行:

将其粘贴到活动工作簿的最后一行,即最后一行下面:

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

两件事:
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

嗨,丹,我周末没机会看这个。我今天会检查这个,并让您知道。我已经检查了您和dcromley的代码。两者都是正确的,复制了源表数据。我更喜欢dcromley的答案,因为它复制了一个特定的范围(尽管我仍然需要将A1更改为A2)。我仍然可以在代码的开头使用它。我感谢你的帮助!嗨,克劳利,我周末没机会看这个。我今天会查出来,会让你知道的。我已经查过你和丹的密码了。两者都是正确的,复制了源表数据。我更喜欢你的答案,因为它复制了一个特定的范围(尽管我仍然需要将A1更改为A2),而不像Dan那样从源代码表复制所有UsedRange。谢谢你!
' -- 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