尽管很多帖子我已经经历是沿着相同的路线,我的问题看,没有一个答案满足我所期待的。如果你能把我和我联系起来,我很乐意阅读它。VBA - 如何在Excel中从一个工作簿复制一行到另一个?
我有一个工作表的工作簿。为了简单起见,假设我的工作簿有一张工作表。在我的工作表中称为“Sheet1”,单元格A1到A4中有数据。
我想要什么我的VBA代码做的是:
- 复制第1行(或特别单元A1至A4)练习册 'A' 到范围变量 'myRange'
- 创建一个新的工作簿,让我们称之为工作簿'B'
- 为Workbook'B的默认“sheet1”重新命名为“Test Name”
- Open Workbook'B'(尽管我意识到VBA代码“Workbooks.Add”会打开一个新的书所以这一步可以是多余的,因为Workbooks.Add覆盖点2和3的一半)
- 粘贴“myRange”到“工作簿B”
- 保存“工作簿B”的第一行名称为“测试书”和方括号中的时间戳。该文件还必须是文件扩展名为“XLS”
- 关闭“工作簿B”并返回到“工作簿”
我到目前为止是这样的:
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
正如你可以看到,我缺乏的是将处理代码:
- 我复制的数据粘贴到新的工作簿
- 新的变化工作簿的工作表Sheet1名称到别的东西
- 上保存
最后添加时间戳的文件名字符串,我已经包含在我的代码一个问题,我想可能有ActiveWorkbook方法的误解。当代码“Workbooks.Add”运行时,AFAIK成为活动工作簿,即焦点。这是否影响在工作簿“A”上运行的VBA代码?这是否意味着,如果我想添加代码来处理工作簿“A”的细胞,然后我就需要使用“MyBook.Activate”,其中“MyBook”保存工作簿“A的实际标题的字符串?
任何帮助将不胜感激。
感谢, QF
做'newBook.SaveAs'和'newBook.Close'。正如你所发现的,知道ActiveWorkbook所指的是什么可能会令人困惑,因此最好在可能的情况下使用明确的引用。 – e100 2012-04-19 14:46:14
感谢您的回复。我是一名VBA新手,在您的建议之后,我收到了“无效限定符”错误消息。我想这是因为MyBook是错误的类型?另外,这对我来说没有任何意义,因为粘贴到newBook的命令在哪里?你能详细说明一下吗? – 2012-04-19 14:47:19
@ e100:当您发布此评论时,我正在编辑我的帖子:) – 2012-04-19 14:48:12