VBA常用技巧
目录
VBA常用技巧    1
第3章    Wordbook(工作簿)对象    2
技巧1    工作簿的引用方法    2
1-1    使用工作簿的名称    2
1-2    使用工作簿的索引号    2
1-3    使用ThisWorkbook    3
1-4    使用ActiveWorkbook    4
技巧2    新建工作簿文件    4
技巧3    打开指定的工作簿    6
技巧4    判断指定工作簿是否打开    9
4-1    遍历Workbooks集合方法    9
4-2    错误处理方法    10
技巧5    禁用宏则关闭工作簿    10
技巧6    关闭工作簿不显示保存对话框    14
6-1    使用Close方法关闭工作簿    14
6-2    单击工作簿关闭按钮关闭工作簿    16
技巧7    禁用工作簿的关闭按钮    16
技巧8    保存工作簿的方法    18
8-1    使用Save方法    18
8-2    直接保存为另一文件名    18
8-3    保存工作簿副本    18
技巧9    保存指定工作表为工作簿文件    19
技巧10    打印预览时不触发事件    21
技巧11    设置工作簿文档属性信息    23
技巧12    不打开工作簿取得其他工作簿数据    24
12-1    使用公式    24
12-2    使用GetObject函数    25
12-3    隐藏Application对象    26
12-4    使用ExecuteExcel4Macro方法    27
12-5    使用SQL连接    28
技巧13    返回窗口的可视区域地址    29
第3章  Wordbook(工作簿)对象
技巧1  工作簿的引用方法
VBA中,在不同的工作簿之间转换需要指定引用的工作簿,通常有下面几种方法。
1-1 使用工作簿的名称
工作簿名称是指Excel文件的文件名,可以使用Workbooks集合引用方式来引用工作簿,如下面的代码所示。
#001  Sub WbPath ()
#002      MsgBox "名称为:" & Workbooks("工作簿的引用方法.xls").Path
#003  End Sub
代码解析:
WbPath过程显示工作簿“工作簿的引用方法”的路径。应用于Workbook对象的Path属性将完整路径返回给应用程序,语法如下:
expression.Path
参数expression是必需的,一个有效的对象。
运行WbPath过程结果如图 401所示。
vba 字符串转数组
图 401    返回工作簿完整路径
1-2 使用工作簿的索引号
工作簿索引号是指工作簿打开的顺序,Excel根据工作簿打开的顺序以1开始进行编号。下面的代码显示应用程序打开的第一个工作簿的名称。
#001  Sub WbName()
#002      MsgBox "第一个打开的工作簿名字为:" & Workbooks(1).Name
#003  End Sub
代码解析:
WbName过程显示应用程序打开的第一个工作簿的名称。应用于Workbook对象的Name属性返回对象的名称,语法如下:
expression.Name
参数expression是必需的,一个有效的对象。
运行WbName过程结果如图 402所示。
图 402    返回工作簿名称
如果需要返回包含完整路径的工作簿名称则使用Workbook对象的FullName属性,如下面的代码所示。
#001  Sub WbFullName()
#002      MsgBox "包括完整路径的工作簿名称为:" & Workbooks(1).FullName
#003  End Sub
WbFullName过程显示应用程序打开的第一个工作簿的完整路径和名称。FullName属性返回对象的名称,包括其磁盘路径的字符串,此属性等价于在Path属性后加上当前文件系统的分隔符,然后加上Name属性。
运行WbFullName过程结果如图 403所示。
图 403    返回包含完整路径的工作簿名称
1-3 使用ThisWorkbook
使用ThisWorkbook代表当前宏代码运行的工作簿,如下面的代码所示。
#001  Sub WbClose()
#002      ThisWorkbook.Close SaveChanges:=False
#003  End Sub
代码解析:
WbThis过程使用Close方法关闭当前宏代码运行的工作簿,不保存对工作簿的任何更改。关于应用于Workbook对象的Close方法请参阅技巧45-1。
注意 本属性仅可在 Microsoft Excel内使用。不能使用此属性访问任何其他应用程序的工作簿。
1-4 使用ActiveWorkbook
使用ActiveWorkbook代表活动窗口(最上面的窗口)的工作簿,如下面的代码所示。
#001  Sub WbActive()
#002      MsgBox "当前活动工作簿名字为:" & ActiveWorkbook.Name
#003  End Sub
代码解析:
WbActive过程显示活动工作簿的名称,ActiveWorkbook属性返回一个Workbook对象,该对象代表活动窗口(最上面的窗口)的工作簿。如果没有打开任何窗口或者活动窗口为信息窗口或剪贴板窗口,则返回 Nothing。
运行WbActive过程结果如图 404所示。
图 404    返回活动工作簿名称
技巧2  新建工作簿文件
在VBA中使用Add方法新建工作簿,如下面的代码所示。
#001  Sub AddNowbook()
#002      Dim Nowbook As Workbook
#003      Dim ShName As Variant
#004      Dim Arr As Variant
#005      Dim i As Integer
#006      Dim myNewWorkbook As Integer
#007      myNewWorkbook = Application.SheetsInNewWorkbook
#008      ShName = Array("余额", "单价", "数量", "金额")
#009      Arr = Array("01月", "02月", "03月", "04月", "05月", "06月", "07月", "08月", "09月", "10月", "11月", "12月")
#010      Application.SheetsInNewWorkbook = 4
#011      Set Nowbook = Workbooks.Add
#012      With Nowbook
#013          For i = 1 To 4
#014              With .Sheets(i)
#015                  .Name = ShName(i - 1)
#016                  .Range("B1").Resize(1, UBound(Arr) + 1) = Arr
#017                  .Range("A2") = "品名"
#018              End With
#019          Next
#020          .SaveAs Filename:=ThisWorkbook.Path & "\" & "存货明细.xls"
#021          .Close Savechanges:=True
#022      End With
#023      Set Nowbook = Nothing
#024      Application.SheetsInNewWorkbook = myNewWorkbook
#025  End Sub
代码解析:
AddNowbook过程使用Add方法建立新的工作簿并对新建工作簿进行操作。
第2行到第6行代码声明变量类型。
第7行代码保存Excel自动插入到新工作簿中的工作表数目。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。