簡體   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