说明(2018-9-1 11:20:46):
1. 上班三个月了,累的一逼,真的是钱少事多离家远,每天早上六点起,晚上八点回。哎,少壮不努力啊!
2. 三个月没写博客了,上一篇已经是5.29的了,真的是整整三个月了,这期间一点C#的东西都没看,代码也没敲,估计又得重新来一遍了。
3. 公司电脑不能自己装软件,所以只能用VBA编程了,昨天看到同事在写VBA的作业,就要了一份过来准备周末写完,周一去装个逼。回家下载下来之后,眉头一皱,发现事情并不简单!我现在连怎么打开文件都要查查资料!
4. 么得办法啊!重新打开了硬盘里尘封已久的教学视频,因为之前写过一次VBA学习笔记了,这次就叫做二次学习了,希望善始善终吧!
正文:
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中的方法,参数不用带括号,如果带括号,会报“需要=”的错误。除非是要把方法的返回值赋值给一个变量,才需要加括号。