一、新建工作簿
1、新建临时工作簿
Workbooks.Add
ActiveWorkbook.SaveAs "c:\123.xlsx"
2、使用变量新建工作簿
Dim Wb As Workbook
Set Wb = Workbooks.Add
Wb.SaveAs Filename:="c:\123.xlsx"
两个代码都可以新建一个名称为123.xlsx的工作簿,并保存在C盘。
代码2使用变量,将工作簿赋值给Wb变量,更加灵活。
新建工作簿后,该工作簿就成为了当前活动工作簿,然后保存工作簿的时候,
需要选择路径保存在那里,但工作簿并没有关闭,需要手工关闭。
Filename:="c:\123.xlsx" 中的Filename:=可以省略。

二、SaveAs方法
新建工作簿的时候,需要保存工作簿,一般使用SaveAs方法。
该方法的官方文档为下列链接:
https://msdn.microsoft.com/zh-cn/VBA/Excel-VBA/articles/workbook-saveas-method-excel
SaveAs方法相当于我们保存工作簿的操作,在官方说明中可以看到,其后面的参数都可以省略,省略参数的一些示例如下:(建议写全路径)
ActiveWorkbook.SaveAs ‘默认路径下保存工作簿,自动重命名
ActiveWorkbook.SaveAs "新建" ‘默认路径下保存工作簿,并命名为“新建”
ActiveWorkbook.SaveAs "D:\新建.xlsx" ‘在D盘下保存工作簿,并命名为“新建”
SaveAs保存对工作簿所做的更改。
所以在关闭工作簿的时候,并没有弹出提示常见的保存更改提示(类似下图)。

保存工作簿更改的另一个方法是:Workbook.Save,也就是常见的保存操作。
当然在新建工作簿的时候也可以使用,但不指定路径,需另外指定。
下面Gif:在C盘新建一个名称为“456.xlsx”工作簿,并在该工作簿的sheet1工作簿的单元格A1输入“套路Excel”。
注意,SaveAs方法保存了工作簿更改,但该程序并没有关闭工作簿。在最后手工关闭工作簿的时候,
并没有是否保存工作簿更改,可以看出SaveAs是保存了工作簿的更改的。

三、什么是路径?

如图:路径就是类似 C:\Users\Public的地址, 注意是 \ 不是 / 。
在新建工作簿的时候,指定路径保存工作簿,必须确保路径存在,否则出错。
如保存路径为: "c:\123\456.xlsx" ,C盘肯定是存在的,但名称为“123的文件名如果不存在,就会出错。

四、工作簿的复制和删除
复制工作簿:从一个路径复制到另外一个路径(路径必须存在)
’复制C盘456.xlsx文件到C盘789文件夹里面,并重命名为123.xlsx。
FileCopy "c:\456.xlsx", "c:\789\123.xlsx"
Kill "c:\123.xlsx" ’删除文件
五、练习:拆分表格为工作簿
在文章 :VBA简单入门20:删除工作表
我们练习过拆分表格为工作表的练习,现在改为按产品拆分表格为新的工作簿。

参考代码:(大部分代码相同,将保存为工作表的代码修改为保存为工作簿的代码即可)

涉及到工作簿的操作为:
新建工作簿--导入拆分的表格数据--保存工作簿到指定路径--关闭工作簿。
红色方框内的代码完成了上述的操作。
sname = .Range("g" & i) & ".xlsx" ’工作簿名称为产品名称
Set wb = Workbooks.Add ’新建工作簿
Rng1.Copy wb.Sheets("sheet1").[a1] ’导入拆分的数据
wb.SaveAs "c:\123\" & sname ’保存工作簿在C盘的123文件夹里
wb.Close ’关闭工作簿(SaveAs已保存工作簿更改)
Excel文件*载下**请移步到VBA简单入门20:删除工作表 *载下**。