一、路径相关
在ThisWorkbook
中,.Path
属性是非常常用的一个属性,它可以用来获取工作簿或工作表的路径。下面给出一个常见的应用场景:
Dim wbPath As String
wbPath = ThisWorkbook.Path
MsgBox "当前工作簿的路径为:" & wbPath
以上代码将获取当前工作簿的路径,并在弹窗中显示。需要注意的是,如果当前工作簿尚未保存,那么.Path
属性将返回一个空字符串。
另外,如果你想要获取工作簿所在目录的父目录,可以使用FileSystemObject
来实现:
Dim fso As Object
Dim wbPath As String
Dim parentFolder As Object
Set fso = CreateObject("Scripting.FileSystemObject")
wbPath = ThisWorkbook.Path
Set parentFolder = fso.GetParentFolderName(wbPath)
MsgBox "当前工作簿的父目录为:" & parentFolder
二、操作工作表
ThisWorkbook
提供了多种操作工作表的方法,包括添加、删除、移动等。下面我们来逐一讲解。
1. 添加工作表
下面的代码将在当前工作簿中添加一个名为"NewSheet"的工作表:
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "NewSheet"
需要注意的是,此代码将在当前选中的工作表后添加一个工作表。如果你想要插入一个工作表到指定的位置,可以使用 Sheets.Insert
方法:
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(Before:=ThisWorkbook.Sheets(2))
ws.Name = "NewSheet"
2. 删除工作表
下面的代码将删除名为"NewSheet"的工作表:
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("NewSheet")
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
需要注意的是,删除工作表时需要设置Application.DisplayAlerts
属性为False
,否则将会弹出提示框询问是否确定删除。
3. 移动工作表
下面的代码将把名为"Sheet2"的工作表移动到第一个位置:
ThisWorkbook.Sheets("Sheet2").Move Before:=ThisWorkbook.Sheets(1)
需要注意的是,如果你想将工作表移动到最后一个位置,可以使用 After
参数。
三、读写数据
ThisWorkbook
提供了多种读写数据的方法,包括读取单元格、写入单元格、复制粘贴等。下面我们来逐一讲解。
1. 读取单元格
下面的代码将获取A1单元格的值:
Dim cellValue As Variant
cellValue = ThisWorkbook.Sheets(1).Range("A1").Value
MsgBox cellValue
如果要读取多个单元格的值,可以使用 Range
对象的 Value
属性:
Dim rangeValue As Variant
rangeValue = ThisWorkbook.Sheets(1).Range("A1:B2").Value
MsgBox rangeValue(1, 2) '读取B1单元格的值
2. 写入单元格
下面的代码将向A1单元格写入"Hello World":
ThisWorkbook.Sheets(1).Range("A1").Value = "Hello World"
3. 复制粘贴
下面的代码将复制A1单元格的值并粘贴到B1单元格:
ThisWorkbook.Sheets(1).Range("A1").Copy
ThisWorkbook.Sheets(1).Range("B1").PasteSpecial xlPasteValues
需要注意的是,这里的 xlPasteValues
可以根据实际情况进行修改,有多种粘贴方式可供选择。
四、总结
ThisWorkbook
是VBA中非常核心的一个对象,它提供了丰富的方法和属性,帮助我们完成对工作簿和工作表的操作。在实际应用中,本文提到的方法和属性都有着广泛的应用场景。通过对ThisWorkbook
做更深入的了解,我们可以更加高效地编写VBA程序。