[英]Issue with VBA - Copying from one workbook to another?
我先说我是 VBA 的完全新手,但不会编码。 我正在尝试编写 VBA 脚本的一部分,该脚本可以将数据从另一个工作簿中的一个工作表复制到另一个工作簿中的预先存在的工作表中。
我正在尝试利用动态范围,因为我每次都知道数据的起点,但是在复制时出现了我的问题。 代码一直运行到副本的点,在那里它停滞不前,没有错误代码。 有效地陷入需要用户操作的停滞状态。
Set sht = ThisWorkbook.Worksheets("Requisitions Raised")
Set StartCell = ThisWorkbook.Worksheets("Requisitions Raised").Range("A8")
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
Set startingRange = sht.Range(StartCell, sht.Cells(LastRow, LastColumn))
Set sht = Workbooks(FileName).Worksheets("1-Data")
Set StartCell = Workbooks(FileName).Worksheets("1-Data").Range("A8")
LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
Set copyRange = sht.Range(StartCell, sht.Cells(LastRow, LastColumn))
ThisWorkbook.Worksheets("Requisitions Raised").startingRange.Value = Workbooks(FileName).Worksheets("1-Data").copyRange.Value
我也试过以下无济于事
Workbooks(FileName).Worksheets("1-Data").copyRange.Copy Destination:=ThisWorkbook.Worksheets("Requisitions Raised").startingRange
导致错误的原因是什么? 有没有更好的复制解决方案?
干杯!
根据我的评论,您当前Set
了Range
对象,但随后尝试将它们用作Worksheet
成员,这会(至少对我而言)导致编译错误。
我建议进行动态Value
转移,而不是复制/粘贴。 根据@FoxfireAndBurnsAndBurns 还说; 您需要大小相等的Range
对象(或数组)。 因此,我包含了一个Resize
of Range("A8")
。 请尝试以下操作:
Dim sht1 As Worksheet, sht2 As Worksheet
Dim lr As Long, lc As Long
Set sht1 = ThisWorkbook.Worksheets("Requisitions Raised")
Set sht2 = Workbooks(FileName).Worksheets("1-Data")
lr = sht2.Cells(sht2.Rows.Count, 1).End(xlUp).Row
lc = sht2.Cells(8, sht2.Columns.Count).End(xlToLeft).Column
sht1.Cells(8, 1).Resize(lr - 7, lc).Value = sht2.Range(sht2.Cells(8, 1), sht2.Cells(lr, lc)).Value
如您所见,我还为Worksheet
使用了两个不同的变量。 本身并不是真正有意义的名称,但它有助于区分。 我想这是个人喜好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.