1. 判断文件是否存在,新建文件,另存为
Sub test3() '判断文件是否存在,新建文件 Dim wb As Workbook Dim cPath As String cPath = ActiveWorkbook.Path If Len(Dir(cPath + "1.xlsx")) = 0 Then Set wb = Workbooks.Add ActiveWorkbook.SaveAs (cPath + "1.xlsx") MsgBox ("1.xlsx" + "已创建") Else MsgBox ("1.xlsx" + "已存在") End If End Sub
2. 打开文件,修改内容,保存/关闭
Sub test4() '打开文件并修改 Dim wb As Workbook Set wb = Workbooks.Open(ActiveWorkbook.Path + "1.xlsx") wb.Sheets("sheet1").Range("a1") = "123" wb.Save wb.Close '直接关闭多省心 'Windows("1.xlsx").Visible = True'感觉没什么卵用 'Application.Visible = False’不能用这个,所有的工作簿都隐藏了,只剩VBA编辑器 End Sub
3. 判断文件是否已经打开
这里采用的是遍历所有打开的工作簿,另一种方法是直接把这个名字的工作簿赋值给对象,如果报错就说明没打开这个文件(还是有点麻烦)
Sub test5() Dim flag As Boolean For Each wb In Workbooks If wb.Name = "1.xlsx" Then flag = True Exit For End If Next If flag = True Then MsgBox ("1.xlsx" + "已经打开") Else MsgBox ("1.xlsx" + "没有打开") End If End Sub
4. 复制和删除文件
Sub test6() Dim path As String path = ThisWorkbook.path FileCopy path + "1.xlsx", path + "2.xlsx" MsgBox "已复制" Kill path + "/2.xlsx" MsgBox "已删除" End Sub
注意:
(1)ActiveWorkbook是正在操作的工作簿,ThisWorkbook是VBA所在的工作簿
(2)vbCrLf的意思:
回车 本义是光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage Return
换行 本义是光标往下一行(不一定到下一行行首),n的英文newline,控制字符可以写成LF,即Line Feed
(3)VBA中的方法,参数不用带括号,如果带括号,会报“需要=”的错误。除非是要把方法的返回值赋值给一个变量,才需要加括号。