《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第52节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
                                              进制访问  
    MsgBox 〃Total bytes: 〃 & LOF(1)            显示打开文件的字节数(该文件现在为空)  
    fname = 〃Julitta〃                         给变量fname赋值  
    ln = len(fname)                            将储存于变量fname的字符串长度赋予变量In  
    Put #1; ; ln                              将变量In的内容放置在二进制文件的下一个字 
                                              节  
    MsgBox 〃The last byte: 〃 & LOC(1)         显示最后一个字节的位置  
    Put #1; ; fname                           在下一个位置放置变量fname的内容  
    lname = 〃Korol〃                            给变量lname赋值  
    ln = len(lname)                            将储存于变量lname的字符串长度赋予变量In  
    Put #1 ; ;ln                              将变量In的数值输入到二进制文件的下一个字 
                                              节  
    Put #1;;lname                             在下一个位置放置变量lname的内容  
    MsgBox 〃The last byte: 〃 & LOC(1)         显示最后一个字节的位置  
    Get #1;1; entry1                          读取第一个字节位置的数值并将其赋予变量 
                                              entry1。  
    MsgBox entry1                             显示变量entry1的内容  
    Get #1; ; entry2                          读取下一个位置的数值并将其赋予变量 
                                              entry2。  
    MsgBox entry2                             显示变量entry2的内容  
    Get #1; ; entry3                          读取下一个位置的数值并将其赋予变量 
                                              entry3。  
    MsgBox entry3                             显示变量entry3的内容  
    Get #1; ; entry4                          读取下一个位置的数值并将其赋予变量 
                                              entry4。  
    MsgBox entry4                             显示变量entry4的内容  
    Debug。Print                               将所有数据打印在立即窗口  
    entry1;entry2;entry3;entry4  
    7 Julitta 5 Korol                         立即窗口里显示的上条指令的结果  
    Close #1                                  关闭文件  
                                          152 

… 页面 169…

  
注意,上面的质量可以在CD里的过程EnterAndDisplay里找到。  
当往二进制文件输入数据时,请遵循下述指导:  
* 在往二进制文件写入字符串之前,将该字符串的长度赋予一个整型变量,通常可以使用下述代 
    码块:  
字符串长度 = Len(变量名称)   
Put #1; ; 字符串长度  
Put #1; ; 变量名称  
* 当你从二进制文件读取数据时,先得读取该字符串长度,然后才是字符串内容。可以使用Get 
    语句和String函数来实现:  
Get #1; ; 字符串长度  
变量名称=String(字符串长度; 〃 〃)   
Get #1; ; 变量名称  
技巧8…11 二进制文件的优势与劣势  
与顺序文件和随机文件相比,二进制文件是最小的,因为它使用变化长度的记录,可以保存硬盘空 
间。和随机访问文件一样,你可以同时读写二进制文件。二进制文件的一个最大的不好之处就是你 
必须要准确地知道你要找回或者要操作的数据是如何储存在文件里的。  

23。操作文件和文件夹的时髦方法  

在你的电脑上有一个被隐藏的宝贝叫做Windows Scripting Host(WSH视窗脚本主机),它允许你创 
建一些程序,可以控制视窗操作系统和它的应用程序,以及从操作系统找回信息。WSH是一种ActiveX 
控件,可以在文件Wshom。ocx里找到。如果你正在使用Windows 95,98,NT5。0,2000,XP或者IE4, 
5或者6的话,该文件就会自动安装在Windows System32文件夹里面。  
WSH是一种脚本语言。脚本语言是指可以自动运行的一套命令。可以使用mand Scripting Host  
(Cscript。exe)从命令提示,或者使用Windows Scripting Host (Wscript。exe)从视窗直接创建或 
者运行脚本。在本章接下来的本分,你将学习WSH如何和VBA结合工作的。  
WSH有它自己的对象层次。使用CreatObject函数,你可以在VBA过程里引用WSH对象。在开始编写使 
用WSH的VBA过程之前,我们来看看你将能控制的一些对象。  

                                          153 

… 页面 170…

                                                       
图8…5 WSH是一个ActiveX控件,用来创建一些进行简单或复杂操作的脚本,而这种工作在早前的 
MS…DOS操作系统里是有Writing batch文件(。bat)来完成的  
1。 在VB编辑器窗口,选择“工具”…“引用”  
2。 在引用对话框,找到并选择Microsoft Scripting Runtime   

                                                                 
图8…6 对Microsoft Scripting Runtime创建引用  
3。 现在,按下F2打开对象浏览器  

                                         154 

… 页面 171…

4。  在“所有库”的下拉列表里选择“Scripting”。你将看到WSH库里面的部分对象列表。WSH让你 
    轻易的获得一些问题的答案,例如“在哪个硬盘上我可以找到某个文件?”(GetDrive方法), 
     “某文件的扩展名是什么?”(GetExtensionName方法),“该文件最后一次修改在什么时候?” 
     (DateLastModified属性)以及“在给定的硬盘上存在某个文件夹或者文件吗?”(FolderExists 
    和FileExists方法)。  

                                                                  
图8…7 创建对Microsoft Scripting Runtime的引用之后(见图8…6),对象浏览器显示了很多对象, 
让你使用硬盘,文件夹,文件和其它内容。  

24。使用 WSH 获取文件信息  

WSH有个对象叫做FileSystemObject,该对象有好几种方法来操纵文件系统。我们来看看你如何获 
取某个特定文件的信息:  
1。 在当前工程里插入一新模块,并重命名为WSH  
2。 在模块WSH里,输入下述过程FileInfo:  
Sub FileInfo()   
      Dim fs As Object   
      Dim objFile As Object   
      Dim strMsg As String   
      Set fs = CreateObject(〃Scripting。FileSystemObject〃)   
      Set  objFile  =  fs。GetFile(〃C:WINNTSystem。ini〃)  ‘ 译 者 : 有 的 可 能 是 
      C:WindowsSystem。ini  
      strMsg = 〃File name: 〃 & _   
       objFile。Name & vbCrLf   
      strMsg = strMsg & 〃Disk: 〃 & _   
       objFile。Drive & vbCrLf   
      strMsg = strMsg & 〃Date Created:〃 & _   

                                           155 

… 页面 172…

       objFile。DateCreated & vbCrLf   
      strMsg = strMsg & 〃Date Modified:〃 & _   
       objFile。DateLastModified & vbCrLf   
      MsgBox strMsg; ; 〃File Information〃   
End Sub   
上面显示的过程FileInfo使用VBA函数CreateObject来创建一个ActiveX对象(FileSystemObject), 
该对象提供访问电脑文件系统的路径  
Dim fs As Object   
Set fs = CreateObject(〃Scripting。FileSystemObject〃)   
上面的代码声明了一个对象变量,名为fs。然后使用函数CreateObject创建一个ActiveX对象并且 
将该对象赋予对象变量。上面程序的第二行代码  
Set objFile = fs。GetFile(〃C:WINNTSystem。ini〃);   
创建和返回对C:、WINNT的System。ini文件对象的引用,并且将其赋值给对象变量objFile。你可以 
读取File对象的很多属性,例如,objFile。Name语句返回该文件的完整文件名,语句objFile。Drive 
返回该文件所处的硬盘名称,语句objFile。DateCreated和objFile。DateLastModified分别返回该 
文件的创建日期和最后一次修改日期。这个程序可以容易地修改成返回文件类型,属性和它的父文 
件夹的名称。请试图使用下述指令你自己修改该过程:objFile。Type; objFile。Attributes;  
objFile。ParentFolder以及 objFile。Size。在对象浏览器里面点击File对象,看看关于文件,你 
还可以学习到别的什么。  

25。FileSystemObjec 的方法和属性  

FileSystemObjedt是个ActiveX控件,提供了到计算机文件系统的访问。该对象提供了很多种方法, 
表8…3里面列出了其中的一些。  
  
    方法                                      描述  
    FileExists                                如果文件存在就返回True  
                                              Sub FileExists()   
                                              Dim fs As Object   
                                              Dim strFile As String   
                                              Set                    fs                    =  
                                               CreateObject(〃Scripting。FileSystemObject〃)  
                                              strFile = InputBox(〃Enter the full name of the  
                                               file:〃)   
                                              If fs。FileExists(strFile) Then   
                                              MsgBox strFile & 〃 was found。〃   
                                              Else   
                                              MsgBox 〃File does not exist。〃   
                                              End If   
                                              End Sub   
    GetFile                                   返回一对象File  
    GetFileName                               返回带路径文件名  
    GetFileVersion                            返回文件版本  
    CopyFile
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架