这是VBA入门只需3天的第2篇,第1篇讲得是vba中Range的用法。点击阅读!
3天之后,我们将可以使用VBA进行多Sheet汇总。
今天我们需要了解的是VBA中的相对路径和绝对路径。
绝对路径,顾名思义,完整的磁盘路径就是绝对路径。
例如这样完整的磁盘路径就是绝对路径。
C:\Users\Administrator\Desktop\Merge_Sheet
而相对路径,表示的是一个文件相对另外一个文件的位置。
大家可以参考一下每个编程语言(但是VBA却没有)相对路径表示方式。
1) ./ 代表当前目录,html中可以省略
2) ../ 代表上级目录
3) ../../代表上上级目录
4) ../../../ 以此类推
5) / 代表根目录
因为VBA不支持这样的写法,所以我们必须用另外一种方式来表示相对路径。
这里用一个具体的例子再深入阐述一下绝对路径与相对路径。
现在有一个文件夹,层级目录如图所示:
现在我们需要在【test.xlsm】中使用VBA打开【重要信息.xlsx】这个excel来进行一些数据清洗的工作。
我们可以将代码写成这样:
Sub test()
Dim path As String
path = "C:\Users\Administrator\Desktop\test\重要信息.xlsx"
Workbooks.Open (path)
Debug.Print "开始整理数据……"
End Sub
经过测试,我们可以顺利的打开【重要信息.xlsx】这个文件。
但是假设我们需要把我们的文件发送给我们的同事,帮助我们的同事也处理一下手头的数据。同事将文件存在了D盘,运行我们的代码时打不开需要的EXCEL,因为这边的路径出现了错误。正确的路径已经是:
D:\test\重要信息.xlsx
我们可以帮一个同事改一下代码,但我们无法帮整个部门30个同事都按着路径改成正确的代码。所以我们极度需要,不管发给谁,不管这位同学把文件存在哪里,我们都可以顺利的整理我们的数据。
这里我们就需要使用我们的相对路径。
我们需要知道【重要信息.xlsx】相对于【test.xlsm】这个文件位于哪个位置。
【test.xlsm】的所处路径为:
C:\Users\Administrator\Desktop\test
而【重要信息.xlsx】也是在test文件下的。
所以我们只需要知道【test.xlsm】的文件路径,就可以顺利的找到【重要信息.xlsx】。
这边我们便需要:
ThisWorkbook.path
我们可以试着运行一下:
这样不管发给谁,只要保证最大层级目录不变,
即同在test文件夹中,我们就可以轻松的与他人展开协作了。
具体要这样修改:
Sub test()
Dim path As String
path = ThisWorkbook.path & "\" & "重要信息.xlsx"
Workbooks.Open (path)
End Sub
这来再解释一下其他几句代码的意思:
Dim path As String
这个代表声明一个变量为字符串("XXX" → 只要是在引号里的,都可以理解成字符串),
声明变量需用使用Dim关键字。
假设如果我们想声明一个长整型变量,我们就应该这么写:
Dim num As Long
而 Workbooks.Open (path),这个就是打开文件的方法了。我们需要把文件所处的位置作为参数传递给方法,这样才可以顺利的打开文件。
本期内容到此结束,明天将探讨一下循环等知识点,然后我们就可以着手开始批量汇总sheet的工作了。