在工作簿之间复制单元格

有人可以帮我一些VBA代码。

我试图在工作簿之间复制2个单元格范围(这两个工作簿应该事先创build,因为我不想让代码在运行中创build新的工作簿)。

首先,我需要复制这些范围 – 从booka.xls的“工作表3”,范围:单元格H5到列H中的最后一行,将数据复制到bookb.xls的“工作表1”,从单元格B2开始, B列的细胞

其次,我需要复制这些范围 – 从booka.xls的“工作表3”,范围:单元格K5到列K中的最后一行,将数据复制到bookb.xls的“工作表1”,从单元格D2开始,细胞向下在D列

这是我到目前为止:

Sub CopyDataBetweenBooks() Dim iRow As Long Dim wksFr As Worksheet Dim wksTo As Worksheet wksFr = "C:\booka.xls" wksTo = "C:\bookb.xls" Set wksFrom = Workbooks(wksFr).Worksheets("Sheet 3") Set wksTo = Workbooks(wksTo).Worksheets("Sheet 1") With wksFrom For iRow = 1 To 100 .Range(.Cells(iRow, 8), .Cells(iRow, 9)).Copy wksTo.Cells(iRow, 8) Next iRow End With End Sub 

假设你有对wksFromwksTo的引用,这里是代码应该是什么

 wksFrom.Range(wksFrom.Range("H5"), wksFrom.Range("H5").End(xlDown)).Copy wksTo.Range("B2") wksFrom.Range(wksFrom.Range("K5"), wksFrom.Range("K5").End(xlDown)).Copy wksTo.Range("D2") 

以下是如何执行其中一列的示例:

 Option Explicit Sub CopyCells() Dim wkbkorigin As Workbook Dim wkbkdestination As Workbook Dim originsheet As Worksheet Dim destsheet As Worksheet Dim lastrow As Integer Set wkbkorigin = Workbooks.Open("booka.xlsm") Set wkbkdestination = Workbooks.Open("bookb.xlsm") Set originsheet = wkbkorigin.Worksheets("Sheet3") Set destsheet = wkbkdestination.Worksheets("Sheet1") lastrow = originsheet.Range("H5").End(xlDown).Row originsheet.Range("H5:H" & lastrow).Copy 'I corrected the ranges, as I had the src destsheet.Range("B2:B" & (2 + lastrow)).PasteSpecial 'and destination ranges reversed End Sub 

正如你在评论中所说的那样,上面的代码对于带空格的范围不起作用,所以在下面的代码lastrowlastrow

 lastrow = originsheet.range("H65536").End(xlUp).Row 

现在,理想情况下,可以将其作为一个子程序,它包含原始工作簿名称,工作表名称/编号和范围,以及目标工作簿名称,工作表名称/编号和范围。 那么你不必重复一些代码。

你可以使用像Jonscabuild议的特殊单元格。 不过,我通常只是通过细胞循环。 我发现它让我更好地控制了我正在复制的内容。 对性能影响很小。 不过,我觉得在办公场所,要确保数据的准确和完整是重中之重。 我写了一个类似于这个可以在这里find的问题的回应:

  • StackOverflow – 在VBA中为初学者复制单元格

iDevelop也有一个关于如何使用特殊单元来达到同样目的的小型演示。 我认为这会帮助你。 祝你好运!

更新

为了回应…

良好的开端,但它不会复制第一个空白单元格后 – 11月6日在5:08

我只想补充一点,上面的链接中的教程将解决您在评论中提出的问题。 使用.End(xlDown)方法代替使用.End(xlDown)方法,直到到达最后一行,使用.UsedRange.Rows.Count检索。