下一系列的技巧将涉及Microsoft脚本运行时库(Scrrun.dll)。 在我看来,这个图书馆是有史以来最有用,最实用的图书馆之一。 使用脚本运行时库,您可以检索与驱动器,文件夹,文件和文本文件有关的信息,并设置/检索驱动器,文件夹,文件和文本文件的某些属性。 通过此库公开的方法,您还可以操作这些对象。 由于该库提供了广泛的功能,因此我将其分解为几个组件,这些组件将成为下一系列技巧的主题。 我们的第一个相关技巧将向您展示如何检索PC上所有驱动器或所选单个驱动器的重要信息。 该代码非常直观,并且在我认为合适的地方插入了注释。 该代码在带有CD ROM驱动器,DVD驱动器,软盘驱动器,单个未分区固定磁盘和USB端口中小型闪存驱动器的Pentium 4 PC上使用。 如果您对本技巧有任何疑问,请随时提出。 脚本运行时库提示#1:
On Error GoTo ErrorHandler
On Error Resume Next 'Critical Line of code
'Must set a Reference to the Microsoft Scripting Runtime Library (Scrrun.dll)
'declare appropriate Object Variables
Dim fso As FileSystemObject, drv As Drive, drvSingle As Drive
'Create an Instance of the FileSystemObject using 1 of 2 Methods
Set fso = New Scripting.FileSystemObject
'OR
'Set fso = CreateObject("Scripting.FileSystemObject")
Debug.Print "--------------------------------------------"
'Loop through all Drives on the PC
For Each drv In fso.Drives
Debug.Print "Drive Letter: " & drv.DriveLetter
Debug.Print " Available Space: " & Format$(drv.AvailableSpace, "#,#,#,#") & " bytes"
Debug.Print " Drive Type: " & fDetermineDriveType(drv.DriveType)
Debug.Print " File System: " & drv.FileSystem
Debug.Print " Free Space: " & Format$(drv.FreeSpace, "#,#,#,#") & " bytes"
Debug.Print " Is Drive Ready?: " & IIf(drv.IsReady, "Yes", "No")
Debug.Print " Drive Path: " & drv.Path
Debug.Print " Root Folder: " & drv.RootFolder
Debug.Print " Drive Serial Number: " & drv.SerialNumber
Debug.Print " Drive Share Name: " & drv.ShareName & IIf(Nz(drv.ShareName) = "", _
"Unavailable", drv.ShareName)
Debug.Print " Total Size of Drive: " & Format(drv.TotalSize, "#,#,#,#") & " bytes"
Debug.Print " Volume Name of Drive: " & IIf(Nz(drv.VolumeName) = "", "Unavailable", _
drv.VolumeName)
Debug.Print "--------------------------------------------"
Next
'For a Single Drive, from this point on
Set drvSingle = fso.Drives("C:")
Debug.Print "--------------------------------------------"
Debug.Print "Drive Letter: " & drvSingle.DriveLetter & " (Single Drive)"
Debug.Print " Available Space: " & Format$(drvSingle.AvailableSpace, "#,#,#,#") & _
" bytes"
Debug.Print " Drive Type: " & fDetermineDriveType(drvSingle.DriveType)
Debug.Print " File System: " & drvSingle.FileSystem
Debug.Print " Free Space: " & Format$(drvSingle.FreeSpace, "#,#,#,#") & " bytes"
Debug.Print " Is Drive Ready?: " & IIf(drvSingle.IsReady, "Yes", "No")
Debug.Print " Drive Path: " & drvSingle.Path
Debug.Print " Root Folder: " & drvSingle.RootFolder
Debug.Print " Drive Serial Number: " & drvSingle.SerialNumber
Debug.Print " Drive Share Name: " & drvSingle.ShareName & _
IIf(Nz(drvSingle.ShareName) = "", "Unavailable", drvSingle.ShareName)
Debug.Print " Total Size of Drive: " & Format(drvSingle.TotalSize, "#,#,#,#") & _
" bytes"
Debug.Print " Volume Name of Drive: " & IIf(Nz(drvSingle.VolumeName) = "", "Unavailable", _
drvSingle.VolumeName)
Debug.Print "--------------------------------------------"
Private Function fDetermineDriveType(intDriveType As Integer) As String
'Interprets the Numeric Value returned by the Type Property and
'returns a String representing the Drive Type
Select Case intDriveType
Case 0
fDetermineDriveType = "Unknown"
Case 1
fDetermineDriveType = "Removable"
Case 2
fDetermineDriveType = "Fixed"
Case 3
fDetermineDriveType = "Remote"
Case 4
fDetermineDriveType = "CD ROM"
Case 5
fDetermineDriveType = "RAM Disk"
Case Else
fDetermineDriveType = "Unknown"
End Select
输出:
--------------------------------------------
Drive Letter: A
Available Space: 833,536 bytes
Drive Type: Removable
File System: FAT
Free Space: 833,536 bytes
Is Drive Ready?: Yes
Drive Path: A:
Root Folder: A:\
Drive Serial Number: 1284401684
Drive Share Name: Unavailable
Total Size of Drive: 1,457,664 bytes
Volume Name of Drive: Unavailable
--------------------------------------------
Drive Letter: C
Available Space: 49,298,620,416 bytes
Drive Type: Fixed
File System: NTFS
Free Space: 49,298,620,416 bytes
Is Drive Ready?: Yes
Drive Path: C:
Root Folder: C:\
Drive Serial Number: 350880761
Drive Share Name: Unavailable
Total Size of Drive: 61,483,933,696 bytes
Volume Name of Drive: Dezii
--------------------------------------------
Drive Letter: D
Drive Type: CD ROM
Is Drive Ready?: No
Drive Path: D:
Drive Share Name: Unavailable
--------------------------------------------
Drive Letter: E
Drive Type: CD ROM
Is Drive Ready?: No
Drive Path: E:
Drive Share Name: Unavailable
--------------------------------------------
Drive Letter: F
Available Space: 10,195,968 bytes
Drive Type: Fixed
File System: FAT
Free Space: 10,195,968 bytes
Is Drive Ready?: Yes
Drive Path: F:
Root Folder: F:\
Drive Serial Number: -2137813243
Drive Share Name: Unavailable
Total Size of Drive: 32,472,576 bytes
Volume Name of Drive: FlashDisk
--------------------------------------------
--------------------------------------------
Drive Letter: C (Single Drive)
Available Space: 49,298,620,416 bytes
Drive Type: Fixed
File System: NTFS
Free Space: 49,298,620,416 bytes
Is Drive Ready?: Yes
Drive Path: C:
Root Folder: C:\
Drive Serial Number: 350880761
Drive Share Name: Unavailable
Total Size of Drive: 61,483,933,696 bytes
Volume Name of Drive: Dezii
--------------------------------------------
From: https://bytes.com/topic/access/insights/765400-microsoft-scripting-runtime-1-a