繁体   English   中英

VBA 问题 - 从一个工作簿复制到另一个?

[英]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

导致错误的原因是什么? 有没有更好的复制解决方案?

干杯!

根据我的评论,您当前SetRange对象,但随后尝试将它们用作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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM