简体   繁体   English

将数据从一个工作簿复制到其他工作簿

[英]Copy data from one workbook to other workbooks

Thank you for your help! 谢谢您的帮助! How to change this code to copy data to existing workbooks (the only difference they are in .xlsm format, the names of files are 1.xlsm,...,50.xlsm) not to create new ones (all files are in the same folder)? 如何更改此代码以将数据复制到现有工作簿(它们唯一的区别是.xlsm格式,文件名是1.xlsm,...,50.xlsm)而不是创建新文件(所有文件都位于同一文件夹)? And how to specify range lm = Range("B2,G2,L2") if there are more cells (every 5-th cell, starting from B2)? 如果还有更多的单元格(每5个单元格,从B2开始lm = Range("B2,G2,L2")那么如何指定范围lm = Range("B2,G2,L2") )?

I've tried to copy data to existing workbooks using Workbooks.Open ("1.xlsm") Workbooks.Open ("2.xlsm") etc. and when it must be saved adding & ".xlsm" to the name (as SaveAs ). 我试图使用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

I suspect your problem is that you need a way to refer to the correct workbook once you've opened it. 我怀疑您的问题是,一旦打开它,您需要一种方法来引用正确的工作簿。 The way to do this is by assigning the workbook to an object variable, then use that variable every time you need to refer to the workbook: 这样做的方法是将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

For adding extra cells to the range , you could just type additional cell references separated by commas (eg Range("B2,G2,L2,Q2,V2") ). 要将其他单元格添加到range ,您可以键入其他单元格引用,并用逗号分隔(例如Range("B2,G2,L2,Q2,V2") )。 This is ok if those cells don't ever change. 如果这些单元格从未发生变化,则可以。 Alternatively for more flexibility you can add additional cells to lm in a loop using the Union() function, eg: 另外,为获得更大的灵活性,您可以使用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.

相关问题 将其他工作簿中的数据合并到一个工作簿中 - Consolidating Data from Other Workbooks into One Workbook 宏将数据从一个工作簿复制到特定文件夹中的所有其他工作簿 - Macro to copy data from one workbook to all other workbooks in a specific folder 在一个工作簿中将具有希腊\\ unicode角色的多个工作簿中的数据复制 - Copy data from several workbooks with greek \ unicode caracters in one workbook 将数据从2个工作簿复制/合并到一个主工作簿 - Copy/merge data from 2 workbooks to one master workbook Excel 将不同工作簿中的数据复制到 1 个工作簿中 - Excel copy data from different workbooks into 1 workbook 从 2 个工作簿复制到 1 个工作簿 - Copy from 2 workbooks into 1 workbook 将数据从一个工作簿复制到另一个工作簿表 - Copy data from one workbook to the other workbook sheet VBA将数据从一个工作簿复制,粘贴和转置到另一工作簿 - VBA Copy, paste, and transpose data from one workbook to other workbook Excel VBA。 从多个工作簿复制数据并粘贴到一个工作簿的同一工作表中 - Excel VBA. Copy data from multiple workbooks and paste in one workbook same worksheet 将文件夹中多个工作簿中的数据复制到一个工作簿中,仅粘贴特殊值 - Copy data from multiple workbooks in a folder into one workbook paste special only value
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM