VBA入门只需3天 VBA中的绝对路径与相对路径-excel文件打不开

VBA入门只需3天 VBA中的绝对路径与相对路径

这是VBA入门只需3天的第2篇,第1篇讲得是vba中Range的用法。点击阅读!

3天之后,我们将可以使用VBA进行多Sheet汇总。

今天我们需要了解的是VBA中的相对路径和绝对路径。

绝对路径,顾名思义,完整的磁盘路径就是绝对路径。

例如这样完整的磁盘路径就是绝对路径。

C:\Users\Administrator\Desktop\Merge_Sheet

而相对路径,表示的是一个文件相对另外一个文件的位置。

大家可以参考一下每个编程语言(但是VBA却没有)相对路径表示方式。

1) ./ 代表当前目录,html中可以省略

2) ../ 代表上级目录

3) ../../代表上上级目录

4) ../../../ 以此类推

5) / 代表根目录

因为VBA不支持这样的写法,所以我们必须用另外一种方式来表示相对路径。

这里用一个具体的例子再深入阐述一下绝对路径与相对路径。

现在有一个文件夹,层级目录如图所示:

VBA入门只需3天 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

我们可以试着运行一下:

VBA入门只需3天 VBA中的绝对路径与相对路径

这样不管发给谁,只要保证最大层级目录不变,

即同在test文件夹中,我们就可以轻松的与他人展开协作了。

VBA入门只需3天 VBA中的绝对路径与相对路径

具体要这样修改:

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的工作了。

推荐阅读