簡體   English   中英

將數據從一個工作簿復制到其他工作簿

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM