尽管我看过的许多帖子都与我的问题有相同的线索,但没有一个答案满足我所寻找的。如果您能给我提供一个链接,我将很愿意阅读它。
我有一个带有工作表的工作簿。为简单起见,让我们假设我的工作簿只有一个名为“Sheet1”的工作表,并且在这个工作表中,单元格A1到A4中有数据。
我想要我的VBA代码:
1. 将工作簿'A'第一行(或具体地说是单元格A1到A4)复制到范围变量'myRange' 2. 创建一个新的工作簿,我们称之为工作簿'B' 3. 将工作簿'B'默认的“sheet1”更改为“Test Name” 4. 打开工作簿'B'(虽然我意识到VBA代码“Workbooks.Add”会打开一个新工作簿,因此这一步可能是多余的,因为Workbooks.Add包含了第2点和第3点的内容) 5. 将'myRange'粘贴到'Workbook B'的第一行 6. 使用以方括号括起来的时间戳将'test book'保存为文件名,文件扩展名必须为“xls” 7. 关闭'Workbook B'并返回到'Workbook A'
目前我所拥有的是:
如您所见,我缺少处理以下内容的代码:
任何帮助将不胜感激。
谢谢, QF
我有一个带有工作表的工作簿。为简单起见,让我们假设我的工作簿只有一个名为“Sheet1”的工作表,并且在这个工作表中,单元格A1到A4中有数据。
我想要我的VBA代码:
1. 将工作簿'A'第一行(或具体地说是单元格A1到A4)复制到范围变量'myRange' 2. 创建一个新的工作簿,我们称之为工作簿'B' 3. 将工作簿'B'默认的“sheet1”更改为“Test Name” 4. 打开工作簿'B'(虽然我意识到VBA代码“Workbooks.Add”会打开一个新工作簿,因此这一步可能是多余的,因为Workbooks.Add包含了第2点和第3点的内容) 5. 将'myRange'粘贴到'Workbook B'的第一行 6. 使用以方括号括起来的时间戳将'test book'保存为文件名,文件扩展名必须为“xls” 7. 关闭'Workbook B'并返回到'Workbook 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
如您所见,我缺少处理以下内容的代码:
- 将复制的数据粘贴到新工作簿中
- 将新工作簿的Sheet1名称更改为其他名称
- 在保存时向文件名字符串添加时间戳
任何帮助将不胜感激。
谢谢, QF
newBook.SaveAs
和newBook.Close
。正如你所发现的那样,了解 ActiveWorkbook 所指的内容可能会令人困惑,因此最好在可能的情况下使用明确的引用。 - e100