尽管我看过许多与我的问题相同的帖子,但没有一个答案能满足我的要求。如果您可以将我链接到我很乐意阅读它。
我有一个带有工作表的工作簿。为简单起见,假设我的工作簿有一个工作表。在我的名为“Sheet1”的工作表中,单元格 A1 到 A4 中有数据。
我想要我的 VBA 代码做的是:
- 将工作簿“A”的第 1 行(或特别是单元格 A1 到 A4)复制到范围变量“myRange”中
- 创建一个新的工作簿,我们称之为工作簿'B'
- 将工作簿“B”的默认“sheet1”命名为“测试名称”
- 打开工作簿“B”(尽管我意识到 VBA 代码“Workbooks.Add”会打开一本新书,因此此步骤可能是多余的,因为 Workbooks.Add 涵盖了第 2 点和第 3 点的一半)
- 将“myRange”粘贴到“工作簿 B”的第一行
- 保存名称为“Test Book”的“工作簿 B”,并用方括号括起来的时间戳。该文件还必须是文件扩展名“xls”
- 关闭“工作簿 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
如您所见,我缺少将处理的代码:
- 将我复制的数据粘贴到新工作簿
- 将新工作簿的 sheet1 名称更改为其他名称
- 在保存时向文件名字符串添加时间戳
最后,我在代码中包含了一个问题,因为我认为我可能对 ActiveWorkbook 方法有误解。当代码“Workbooks.Add”运行时,AFAIK 将成为活动工作簿,即具有焦点的工作簿。这是否会影响 VBA 代码在工作簿“A”上运行的方式?这是否意味着如果我想添加代码来操作工作簿“A”的单元格,那么我需要使用“MyBook.Activate”,其中“MyBook”包含工作簿“A”的实际标题字符串?
任何帮助将不胜感激。
谢谢,QF