按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
里讨论。
IsRootFolder 如果本文件夹为根文件夹则返回True
Name 文件夹名称
ParentFolder 该文件夹的父文件夹
Path 文件夹的完整路径
Size 文件夹大小,以字节表示
Function IsFolderEmpty(myFolder)
Dim fs; objFolder
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set objFolder = fs。GetFolder(myFolder)
IsFolderEmpty = (objFolder。Size = 0)
End Function
SubFolders 该文件夹中的子文件夹集合
Type 文件夹类型(例如文件夹或回收站)
28。驱动器对象属性
对象Drive提供了访问到电脑或服务器上某驱动的属性。下述代码创建了对Drive对象的引用:
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set objDrive = fs。GetDrive(“C:”)
在下面的表格里,你将看到好几个使用Drive对象的程序示例。
161
… 页面 178…
属性 描述
AvailableSpace 可用空间,字节表示
FreeSpace 同AvailableSpace
DriveLetter 驱动器字母(没有冒号)
DriveType 驱动器类型:
0 — 未知
1 — 可移动
2 — 固定
3 — 网络
4 — CD驱动
5 — RAM
Sub CDROM_DriveLetter()
Const CDROM = 4
Dim fs; colDrives
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set colDrives = fs。Drives
For Each Drive In colDrives
If Drive。DriveType = CDROM Then
MsgBox 〃The CD…ROM Drive: 〃 & _
Drive。DriveLetter
End If
Next
End Sub
FileSystem 文件系统,例如,FAT; NTFS或CDFS
IsReady 如果合适的媒体(例如CD)插入了并且可以访问则返回True
Function IsCDROMReady(strDriveLetter)
Dim fs; objDrive
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set objDrive = fs。GetDrive(strDriveLetter)
IsCDROMReady = (objDrive。DriveType = 4) And _
objDrive。IsReady = True
' run this function from the Immediate window
' by entering: ?IsCDROMReady(〃D:〃)
End Function
Path 根文件夹路径
SerialNumber 驱动器系列号
TotalSize 驱动器总容量,以字节表示
29。使用 WSH 创建文本文件
WSH提供了三种创建文本文件的方法:CreateTextFile,OpenTextFile和OpenAsTextStream。下面
的表格里列出了每种方法和示例。
方法/语法 示例
CreateTextFile object。CreateTextFile(filename'; overwrite'; unicode'')
Object是对象FileSystemObject或Folder的名称。
filename是明确要创建文件的字符串表达式。
Overwrite (可选的) 是个布尔值,表明你是否要覆盖已经存在
的文件,如果可以覆盖那么该值为True,如果不能覆盖则为
162
… 页面 179…
False,如果忽略,那么现存的文件将不会被覆盖。
Unicode (可选的) 是个布尔值,表明该文件创建为Unicode或者
ASCII类型的文件。如果文件创建为Unicode类型那么该值为真,
如果文件为ASCII的话那么该值为假。如果忽略掉,那么就会创
建ASCII类型的文件。
Sub CreateFile_Method1()
Dim fs; objFile
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set objFile = fs。CreateTextFile(〃C:Phones。txt〃; True)
objFile。WriteLine (〃Margaret Kubiak: 212…338…8778〃)
objFile。WriteBlankLines (2)
objFile。WriteLine (〃Robert Prochot: 202…988…2331〃)
objFile。Close
End Sub
上面的过程创建了一个文本文件来储存两个人的姓名和电话号
码。因为在覆盖参数处是一个True布尔值,所以,如果
C:Phones。txt已经存在的话就会被覆盖。
OpenTextFile object。OpenTextFile(filename'; iomode'; create';
format''')
Object是FileSystemObject对象的名称。
Filename是明确要打开的文件名称的字符串表达式。
Iomode (可选的) 是个布尔值,表示如果该文件不存在时是否创
建一个新文件,如果可以创建新文件则为真,否则为假。如果忽
略该参数,那么不会创建新文件。(译者,红色段落为原文翻译,
应该是错误的)
参数iomode 可以是下述常数之一:
ForReading (1)
ForWriting (2)
ForAppending (8)
Create (可选的) 是个布尔值,表示如果该文件不存在时是否创
建一个新文件,如果可以创建新文件则为真,否则为假。如果忽
略该参数,那么不会创建新文件。
Format (可选的) 是用来表明打开文件类型的三种类型之一。如
果忽略,文件就会打开为ASCII。
TristateTrue = 打开文件为ASCII。
TristateFalse =打开文件为Unicode。
TristateUseDefault = 使用系统默认方式打开文件
Sub CreateFile_Method2()
Dim fs; objFile
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
Set objFile = fs。OpenTextFile(〃C:Shopping。txt〃; _
ForWriting; True)
objFile。WriteLine (〃Bread〃)
objFile。WriteLine (〃Milk〃)
objFile。WriteLine (〃Strawberries〃)
objFile。Close
End Sub
OpenAsTextStream object。OpenAsTextStream('iomode; 'format'')
Object是File对象名称。
Iomode (可选的) 表明读写模式,它可以是下述三个常数之一:
163
… 页面 180…
ForReading (1)
ForWriting (2)
ForAppending (8)
Format (可选的) 是用来表明打开文件类型的三种类型之一。如
果忽略,文件就会打开为ASCII。
TristateTrue = 打开文件为ASCII。
TristateFalse =打开文件为Unicode。
TristateUseDefault = 使用系统默认方式打开文件
Sub CreateFile_Method3()
Dim fs; objFile; objText
Set fs = CreateObject(〃Scripting。FileSystemObject〃)
fs。CreateTextFile 〃New。txt〃
Set objFile = fs。GetFile(〃New。txt〃)
Set objText = objFile。OpenAsTextStream(ForWriting; _
TristateUseDefault)
objText。Write 〃Wedding Invitation〃
objText。Close
Set objText = objFile。OpenAsTextStream(ForReading; _
TristateUseDefault)
MsgBox objText。ReadLine
objText。Close
End Sub
30。使用 WSH 进行其它操作
WSH使任何安装在你计算机上的自动化对象的操作成为可能。
除通过FileSystemObject访问文件系统之外,WSH也允许你进行其它的一些操作,例如,处理WSH
和ActiveX对象,设定和去除打印机和远程驱动器,操纵注册表,创建视窗和互联网快捷方式以及
访问Windows NT 活动地址服务。WSH对象模型由下述三种主要对象组成:WScript,WshShell和
WshNetwork。本节示范如何利用WshShell对象来编写程序启动其它应用程序和创建快捷方式。
31。运行其它应用程序
在本书的下一章,你将学习多种从Excel里启动外部应用程序的方法。你可以加上即将在本节找到
的三种方法。
假设你想要从VBA过程里启动Windows记事本,接下来的过程,你将看到使用WSH的对象WshShell来
运行一个应用程序是多么容易。如果你要运行内置的计算器的话,只要将记事本应用程序名称改为
Calc就可以了。
Sub RunNotepad()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run 〃Notepad〃
Set WshShell = Nothing
End Sub
上面的过程以声明和创建一个Wshshell对象开始:
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
下一语句则使用Run方法来运行要求的应用程序:
WshShell。Run 〃Notepad〃
使用相同的概念,很容易运行视窗的公用应用程序,例如计算器或浏览器:
164
… 页面 181…
WshShell。Run “Calc”
WshShell。Run “Explorer”
过程的最后一行消灭了对象WshShell,因为,不再需要它了。
Set WshShell = Nothing
你可以启动你应用程序和某个特定的文件,而不是打开一个空的应用程序窗口,如下所示:
Sub OpenTxtFileInNotepad()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run 〃Notepad C:Phones。txt〃
Set WshShell = Nothing
End Sub
试验下面的过程来打开MS…DOS窗口,并且将当前目录下的文件清单打印出来:
Sub RunDOSmand()
Dim WshShell As Object
Set WshShell = CreateObject(〃WScript。Shell〃)
WshShell。Run (〃mand /c Dir 》lpt1:〃)
End Sub
32。创建快捷方式
当你开始传播你的VBA应用程序的时候,用户可能会要求你自动在他们的桌面上放置一个你的软件
的快捷方式。VBA自己没有提供创建快捷方式的方法。很幸运的是,你现在知道如何使用WSH了,你
可以使用它的对象Shell创建应用程序或者网页的快捷方式,不必要用户的干涉。对象WshShell使
用了方法CreateShortcut,你可以按照下述方法:
Set myShortcut = WshShell。CreateShortcut(Pathname)
Pathname是明确快捷文件完整路径的字符串。所有的快捷方式文件都有扩展名。lnk,并且该扩展名
必须包括在文件路径名里面。CreateShortcut方法返回快捷方式对象,下面的表格里列出了很多属
性和一个方法。
方法/语法 示例
TargetPath TargetPath属性是可执行文件的路径
WshShell。TargetPath = ActiveWorkbook。FullName
WindowStyle WindowStyle属性明确快捷方式使用的窗口类型
1 – 普通窗口
3 – 最大化窗口
7 – 最小化窗口
WshShell。WindowStyle = 1
HotKey HotKey 属 性 是 键 盘 快 捷 方 式 ( 例 如 , Alt+f; Shift+g;
Ctrl+Shift+z; 等等)
WshShell。Hotkey = 〃Ctrl+Alt+w〃
IconLocation IconLocation属性是快捷方式图标的位置。因为图标文件里通常
不止一个图标,所以你应该提供图标文件的路径,并且后面标明
图标在文件�