No.1
获取磁盘盘符是编程过程中一个基本的操作,任何编程都必须要学会这个功能。
也就是说要明确电脑工作的基本环境,磁盘符号是最基本的一个项目。
就比如,一个人到了某地方工作或学习,至少要知道在什么地方吧!是中国还是美国,还是英国。
如何获取磁盘盘符其实也很容易,但是vba提供了一些相对复杂的工具。
需要我们仔细地学习并认识清楚。
![如何获取电脑盘符,VBA编程技术,深度讲解](http://www.diet106.com/uploadfile/202306/d86c0a421eb7474.jpg)
No.2
首先来认识一下CurDir(Driver)函数。
此函数返回Drive的工作地址。
Drive是磁盘盘符,如:C:
CurDir("C:")返回C盘的工作地址,这个地址根据不同电脑设置或Excel安装地址而不同。
似乎,这个函数并不是文档应该表达的内容。
恰恰相反,它是知道某个磁盘盘符后返回工作地址的一个函数。
那么,如何知道电脑包含了哪些磁盘呢?
继续....
下面了解一下CurDir函数的语法:
![如何获取电脑盘符,VBA编程技术,深度讲解](http://www.diet106.com/uploadfile/202306/b1160d9ed1809b3.jpg)
No.3
下图可以清楚地看到左侧是两个按钮,一个列表框。
第一个按钮可以刷新当前电脑中的盘符。
所以,这个按钮后台代码,就实现了找出磁盘盘符的功能。
![如何获取电脑盘符,VBA编程技术,深度讲解](http://www.diet106.com/uploadfile/202306/df309eeed943a18.jpg)
列出盘符出,任意单击磁盘列表项目,自动弹出当前磁盘的工作目录。
也就是CurDir函数给出的结果。没想到在这里用到了CurDir函数。
第二个按钮实现图中表格内容的刷新功能。
也就是把全部磁盘的工作目录添加到表中,这个很实用,一目了然。
下面看一下代码:
![如何获取电脑盘符,VBA编程技术,深度讲解](http://www.diet106.com/uploadfile/202306/e05ac4e176a53b1.jpg)
No.4
刷新工作表按钮代码
Private Sub AddSheetData()'刷新数据表Dim Rowi As LongRowi = Me.Cells(Me.Cells.Rows.Count, 3).End(xlUp).RowMe.Range(Me.Cells(3, 3), Me.Cells(Rowi, 5)).ClearContentsDim cell As RangeSet cell = Range("C3")Dim DsDs = Split(getDrivers, ",")Dim ir As Integer, irn As Integer, cellir As Integercellir = cell.Rowir = cell.Rowirn = ir + UBound(Ds)For ir = cellir To irn With cell.Offset(ir - cellir, 0) .Formula = "=row()-" & cellir - 1 With .Offset(0, 1) .Value = Ds(.Offset(0, -1).Value - 1) With .Offset(0, 1) .Value = VBA.CurDir(.Offset(0, -1).Value) End With End With End WithNext irEnd Sub
上面例子中用到一个自定义函数getDrivers()
Function getDrivers() Dim fso, Dv Set fso = CreateObject("Scripting.filesystemobject") Dim D, dx Set D = fso.drives For Each dx In D Dv = Dv & dx.driveletter & ": ," Next dx Dv = VBA.Mid(Dv, 1, VBA.Len(Dv) - 1) getDrivers = DvEnd Function
这个函数功能是返回一个字符串,字符串包含了所有磁盘的盘符。
经过对字符串转换为数组处理后,把数组赋值给数据表。
所以,本文重点也是这个函数,它实际上用到了几个重要的知识点:
- CreateObject函数,新建一个文件操作对象。
- Drives对象的Driveletter属性,返回物理本地驱动器或网络共享的驱动器盘符。
- Mid()函数,截取字符串函数。
CreaeObject函数上一节有过详细介绍,其余两个还没做完整介绍。
学习的路上还很漫长。
欢迎关注、收藏