从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
-
首先,使用名称范围(单元格名称出现的excel的左上angular),命名源表格的开始和结束单元格。 说,你称他们为“开始”和“结束”。
-
现在,您也可以在目标表中命名您的开始单元格。 结束单元格不是必需的,因为它将粘贴所有东西。 这是可选的,您可以保持不命名,如下所示。
-
代码将看起来像…
targetSheet.Range("A6").Value = sourceSheet.Range("start", "end").Value
-
如果你命名targetSheet的开始单元格(例如“start_target”),那么它将是这样的:
targetSheet.Range("start_target").Value = sourceSheet.Range("start", "end").Value