Excel中VBA编程学习笔记(八)--工作薄应用(WORKBOOK)
Excel中VBA编程学习笔记(八)--工作薄应用(WORKBOOK)
数据之道 2018-11-25 17:03:24 1805 收藏 6
分类专栏: Excel 程序人生 文章标签: Excel VBA 编程 WorkBook 工作簿
版权
1、获取工作薄数量
Private Sub test()
MsgBox ("工作薄数量为:" & Workbooks.Count)
Workbooks(1).Activate
Workbooks("第6次作业成绩.xls").Activate
MsgBox ("当前工作薄名:" + ThisWorkbook.name)
End Sub
注:Workbooks(1)表示第一个工作薄,访问某个工作薄可以通过下表索引也可以通过名称。ThisWorkbook表示当前工作薄,执行VBA代码所在的工作薄,ActivateWorkBook表示活动工作薄,它们可能相同也可能不同。
2、遍历所有工作薄
Sub test()
For Each wb In Workbooks
Debug.Print wb.Name
Next
For index = 1 To Windows.Count
Debug.Print Windows(index).Parent.Name
Next
End Sub
注意:上面两种方式输出的结果的顺序不同
3、删除工作薄中的所有图表
Private Sub test()
ThisWorkbook.Charts.Delete
End Sub
4、设置工作薄为自动更新
Private Sub test()
ThisWorkbook.AutoUpdateSaveChanges = True
ThisWorkbook.AutoUpdateFrequency = 5 '以分钟为单位
End Sub
注意:此时必须设置“共享工作薄”,并将工作薄保存成xlsm格式的共享工作薄。
5、获取工作薄名称及全路径
Private Sub test()
Dim name, fullname As String
name = ThisWorkbook.name '工作薄名
fullname = ThisWorkbook.fullname '工作薄全名,包括磁盘路劲
End Sub
注:在工作薄为保存之前,上面两个值相同。
6、检查工作薄是否存在宏项目
Private Sub test()
If ThisWorkbook.HasVBProject = True Then
MsgBox ("包含宏项目")
Else
MsgBox ("不包含宏项目")
End If
End Sub
7、检查工作薄是否以只读方式打开
Private Sub test()
If ThisWorkbook.ReadOnly = True Then
MsgBox ("只读方式打开")
Else
MsgBox ("非只读方式打开")
End If
End Sub
8、获取当前工作薄中所有工作表名称
Private Sub test()
Dim i As Integer
Dim str As String
str = ""
For i = 1 To ThisWorkbook.Sheets.Count '遍历每个工作表
str = str & ThisWorkbook.Sheets(i).name & ";"
Next
MsgBox (str)
End Sub
9、为工作薄设置密码
Private Sub test()
ThisWorkbook.Password = "123456" '设置打开密码
ThisWorkbook.WritePassword = "123" '设置写密码
End Sub
10、打印工作薄前3页
Private Sub test()
ThisWorkbook.PrintOut form:=1, to:=3
End Sub
11、工作薄的保护
Private Sub test()
ThisWorkbook.Protect Password = "123456", structure:=True, Windows:=True
ThisWorkbook.Unprotect '取消保护
End Sub
12、打开、新建及保存工作薄
Private Sub test()
ThisWorkbook.Save '保存更改
ThisWorkbook.SaveAs Filename:=Application.GetSaveAsFilename, Password:="123456" '另存为
End Sub
Sub test()
Application.DisplayAlerts = False '不出现提示框
Set wk = Workbooks.Add '新建工作薄
wk.Sheets(1).[a1].value = 122
Dim name$
name = ThisWorkbook.Path & "\新建工作薄.xls"
wk.SaveAs Filename:=name, FileFormat:=xlWorkbookNormal '另存为
wk.Close '关闭新建的工作薄
Application.DisplayAlerts = True
Workbooks.Open name
Debug.Print ActiveWorkbook.Sheets(1).Range("A1").value '新打开的工作薄为激活的工作薄
Debug.Print Workbooks(2).Sheets(1).Range("A1").value '因为已经存在一个工作薄,再打开工作薄时为工作薄2
Workbooks(2).Close
End Sub
在打开工作薄时候有时候会提示更新链接的消息框,如果不想显示这些提示信息,可以在打开设置参数UpdateLinks值为0,例如:
WorksBooks.Open Filname:=”test.xls”,UpdateLinks:=0
UpdateLinks参数取值及含义
取值 含义 取值 含义
0 不更新任何引用 1 更新外部引用,但不更新远程引用
2 更新远程引用,但不更新外部引用 3 同时更新外部引用及远程引用
13、遍历当前文件夹下的所有工作薄
下面程序获取当前文件夹下面所有的.xls文件,并将文件名保存到数组arrayFile
Dim arrayFile(1 To 100) As String
Count = 1
Path = ThisWorkbook.Path '获取当前路径
resultFile = ThisWorkbook.Name
myfile = Dir(Path & "\*.xls") '选中所有的.xls文件
Do
If myfile <> ThisWorkbook.Name Then
arrayFile(Count) = myfile
Count = Count + 1
End If
myfile = Dir '选中下一个文件
Loop While myfile <> ""
14、工作薄的各种事件
Private Sub Workbook_BeforeClose(Cancel As Boolean)
MsgBox ("即将关闭工作薄")
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox ("保存更改")
End Sub
Private Sub Workbook_Open()
MsgBox ("您打开了工作薄:" & ThisWorkbook.FullName)
End Sub
Private Sub Workbook_WindowResize(ByVal Wn As Window)
MsgBox ("改变工作薄大小")
End Sub
—
———————————————
版权声明:本文为CSDN博主「数据之道」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huzhizhewudi/article/details/84497787