[英]Copy data from one workbook to other workbooks
謝謝您的幫助! 如何更改此代碼以將數據復制到現有工作簿(它們唯一的區別是.xlsm格式,文件名是1.xlsm,...,50.xlsm)而不是創建新文件(所有文件都位於同一文件夾)? 如果還有更多的單元格(每5個單元格,從B2開始lm = Range("B2,G2,L2")
那么如何指定范圍lm = Range("B2,G2,L2")
)?
我試圖使用Workbooks.Open ("1.xlsm")
Workbooks.Open ("2.xlsm")
等將數據復制到現有工作Workbooks.Open ("1.xlsm")
,並且必須將其保存時在名稱中添加& ".xlsm"
(如SaveAs
)。
Sub CopyM()
Dim lm As Range, r As Long, c As Long
Set lm = Range("B2,G2,L2"): Application.ScreenUpdating = False
For r = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Workbooks.Add
For c = 0 To 4
lm.Offset(r - 2, c).Copy Cells(r + c, 2)
Next
With Workbooks(Workbooks.Count)
.SaveAs lm.Offset(r - 2, -1).Value: .Close
End With
Next
Application.ScreenUpdating = True
End Sub
我懷疑您的問題是,一旦打開它,您需要一種方法來引用正確的工作簿。 這樣做的方法是將workbook
分配給一個對象變量,然后在每次需要引用該工作簿時都使用該變量:
Dim wb as Workbook
Set wb = Workbooks.Open("yourfilename.xlsx")
'...
lm.Offset(r - 2, c).Copy wb.Cells(r + c, 2)
'...
With wb
.SaveAs lm.Offset(r - 2, -1).Value: .Close
End With
要將其他單元格添加到range
,您可以鍵入其他單元格引用,並用逗號分隔(例如Range("B2,G2,L2,Q2,V2")
)。 如果這些單元格從未發生變化,則可以。 另外,為獲得更大的靈活性,您可以使用Union()
函數在循環中向lm
添加其他單元格,例如:
Dim col As Long
Dim lm As Range
Set lm = Range("B2")
For col = 7 To 256 Step 5
Set lm = Union(lm, Cells(2, col))
Next col
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.