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

(0)

相关推荐