从Excel工作表中获取数据并将其复制到活动工作簿中

我是使用VBA的新手,已经find了下面的代码。 它工作正常,但我需要源文件中的所有行。 我怎样才能改变代码,所以我不仅限于使用行号,因为每次都会有所不同。

Private Sub Import1_Click() ' Get customer workbook... Dim customerBook As Workbook Dim filter As String Dim caption As String Dim customerFilename As String Dim customerWorkbook As Workbook Dim targetWorkbook As Workbook ' make weak assumption that active workbook is the target Set targetWorkbook = Application.ActiveWorkbook ' get the customer workbook filter = "Text files (*.xlsx),*.xlsx" caption = "Please Select an input file " customerFilename = Application.GetOpenFilename(filter, , caption) Set customerWorkbook = Application.Workbooks.Open(customerFilename) ' assume range is A1 - G10 in sheet1 ' copy data from customer to target workbook Dim targetSheet As Worksheet Set targetSheet = targetWorkbook.Worksheets(1) Dim sourceSheet As Worksheet Set sourceSheet = customerWorkbook.Worksheets(1) targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value ' Close customer workbook customerWorkbook.Close End Sub 

假设您想要将整个工作表复制到当前工作簿中的空白工作表中,并且只保留值(您的问题没有指定太好),则可以replace此行:

 targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value 

有了这个:

 sourceSheet.UsedRange.Copy targetSheet.Range("A1") sourceSheet.UsedRange.Value = sourceSheet.UsedRange.Value 

希望certificate能做到这一点!

UPDATE


根据你最后的评论,尝试更换这一行:

 sourceSheet.UsedRange.Copy targetSheet.Range("A1") 

用这一行:

 Intersect(sourceSheet.UsedRange, sourceSheet.UsedRange.Offset(1,0)).Copy targetSheet.Range("A1") 

最后的部分Range("A1")可以更新以将结果粘贴到任何你想要的地方。

希望这个伎俩!

只是下面的一行必须改变,如下所示:

 targetSheet.Range("A6", "G10").Value = sourceSheet.Range("A2", "G6").Value 
  1. 首先,使用名称范围(单元格名称出现的excel的左上angular),命名源表格的开始和结束单元格。 说,你称他们为“开始”和“结束”。

  2. 现在,您也可以在目标表中命名您的开始单元格。 结束单元格不是必需的,因为它将粘贴所有东西。 这是可选的,您可以保持不命名,如下所示。

  3. 代码将看起来像…

     targetSheet.Range("A6").Value = sourceSheet.Range("start", "end").Value 
  4. 如果你命名targetSheet的开始单元格(例如“start_target”),那么它将是这样的:

     targetSheet.Range("start_target").Value = sourceSheet.Range("start", "end").Value