分享

Excel中VBA编程学习笔记(八)

 hdzgx 2019-11-24

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多