当前位置: 首页 > 知识库问答 >
问题:

如何将Excel中的行从一个工作簿复制到另一个工作簿?

茅桐
2023-03-14

我有一本有工作表的工作簿。为了简单起见,假设我的工作簿有一个工作表。在我的工作表中,它被称为“SHEET1”,在单元格A1到A4中有数据

我希望我的VBA代码做的是:

  1. 将工作簿“A”的第1行(或特别是单元格A1至A4)复制到范围变量“我的范围”中
  2. 创建一个新的工作簿,我们将此工作簿称为'B'
  3. 为工作簿'B'的默认“sheet1”指定一个新名称为“测试名称”
  4. 打开工作簿'B'(尽管我意识到VBA代码“workbooks.add”打开一本新书,所以这一步可能是多余的,因为workbooks.add覆盖了第2和第3点的一半)
  5. 将“我的范围”粘贴到“工作簿B”的第一行
  6. 保存名为“test book”的“工作簿B”和方括号中的时间戳。文件的扩展名必须为“xls”
  7. 关闭“工作簿B”并返回到“工作簿A”
Sub OpenAndSaveNewBook()
    'Declarations
    Dim MyBook As String
    Dim MyRange As Range
    Dim newBook As Workbook

    'Get name of current wb
    MyBook = ThisWorkbook.Name
    Set MyRange = MyBook.Sheets("Sheet1").Range("A1,F1")

    'Create/Open new wb
    newBook = Workbooks.Add

    'Save new wb with XLS extension
    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & "TEST-BOOK", _
                            FileFormat:=xlNormal, CreateBackup:=False

    '===NOTE: BEFORE THE FOLLOWING RUNS I NEED TO PERFORM ACTIONS ON CELLS VIA VBA ON
    '===WORKBOOK 'A'. DOES THE NEWLY CREATE WORKBOOK BECOME THE PRIMARY/ACTIVE WORKBOOK
    '===? AND SO THEN DO I NEED TO ACTIVATE WORKBOOK 'A'? 
    ActiveWorkbook.Close savechanges:=True

    'Return focus to workbook 'a'
    MyBook.Activate
End Sub
    null

任何帮助都将不胜感激。

谢了,资历

共有1个答案

程禄
2023-03-14

不是你上面提到的复制粘贴的方式,你可以直接这样做。这也将否定变量的使用。

MyBook.Sheets("Sheet1").Rows("1:4").copy _
newBook.Sheets("Sheet1").Rows("1")

编辑

我刚注意到你的代码有个错误。

newBook = Workbooks.Add
Option Explicit

Sub OpenAndSaveNewBook()
    Dim MyBook As Workbook, newBook As Workbook
    Dim FileNm As String

    Set MyBook = ThisWorkbook

    FileNm = ThisWorkbook.Path & "\" & "TEST-BOOK.xls"
    Set newBook = Workbooks.Add

    With newBook
        MyBook.Sheets("Sheet1").Rows("1:4").Copy .Sheets("Sheet1").Rows("1")

        'Save new wb with XLS extension
        .SaveAs Filename:=FileNm, FileFormat:=xlNormal, CreateBackup:=False

        .Close Savechanges:=False
    End With
End Sub
 类似资料:
  • 我想将工作簿的一页(包括样式)复制到新的工作簿。 我尝试对所有单元格进行迭代 抛出java.lang.IllegalStateException:超出了单元格样式的最大数目。在.xls工作簿中最多可以定义4000个样式 抛出java.lang.IllegalArgumentException:此样式不属于提供的工作簿。是否尝试将样式从一个工作簿分配到另一个工作簿的单元格? 正确的样式复制方法是什么

  • 我需要一个宏,它可以根据我选择的单元格从我所在的工作簿中复制整行。我已经可以这样做了,使用以下方法: 但是,我需要它将其(格式化和全部)粘贴到关闭的工作簿的第一个空行(基于B列)。R: \dasboards\wo。xlsm公司

  • 所以在COL D中,我必须只粘贴COL A和COL C相等的值,如果这些值不相等,则跳过或粘贴COL D中的任何东西 我写过类似这样的代码,但不幸的是它粘贴了一切!!

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 问题内容: 我有一个带有源文件路径的字符串和另一个带有destfile路径的字符串,它们都指向Excel工作簿。 我想获取源文件的第一张纸并将其作为新选项卡复制到destfile(与destfile中的位置无关),然后保存它。 在or或or中找不到简单的方法。我想念什么吗? 问题答案: 解决方案1 使用该软件包的仅Python解决方案。仅数据值将被复制。 解决方案2 使用该程序包将复制操作委派给E

  • 我正试图将所有工作表(7张)从workbook1(wb1)复制到WB2。wb1包含命令按钮,但我不希望它们出现在我的新工作簿中。我正在使用循环将单个工作表从一个工作簿复制到另一个工作簿。但是复制到第二张时出错了。我使用的代码如下:- 循环第一次成功运行,但对于i=2,代码给出错误