1 scripting类库 (scrrun.dll)

Scripting类库中有三个可以直接使用NEW关键字实例化的类,第一个就是常用的字典,第三个是FSO。

这个介绍的挺好

https://www.cnblogs.com/zzstone/p/5530707.html

1.1scripting类库有多少东西?

  • scripting.dictionary
  • scripting.filesystemobject
  • scripting.encoder
  • scripting.Files
  • scripting.\

1.2 scripting.filesystemobject

  • 前期绑定:比较像oo语言。先要引用类库文件scrrun.dll,写代码的时候有智能提示。
  • dim fso as new scripting.filesystemobject
  • 后期绑定:不需要引用类库文件,但没有智能提示。 如果程序发给别人用,就要用后期绑定方式。
  • dim fso as object
  • set fso = createobject("scripting.filesystemobject")
'声明方式1
'后期绑定:不需要引用类库文件,但没有智能提示。
'         如果程序发给别人用,就要用后期绑定方式。Dim dic2 As Object
Dim fso2 As Object
Dim enc2 As ObjectSet dic2 = CreateObject("scripting.dictionary")
Set fso2 = CreateObject("scripting.filesystemobject")
Set enc2 = CreateObject("scripting.encoder")'声明方式2,比较像oo语言
'前期绑定:先要引用类库文件scrrun.dll,写代码的时候有智能提示。Dim dic1 As New scripting.dictionary
Dim fso1 As New scripting.filesystemobject
Dim enc1 As New scripting.encoder'scripting类库有多少东西?
'scripting.dictionary
'scripting.filesystemobject
'scripting.encoder
'scripting.files
'scripting.

2 textsteam对象实用属性和方法

textsteam对象(fso 经常用的也是 textsteam 对象)

  • createtextfile
  • opentextfile
  • 方法    
  • 读取:Read,ReadAll,ReadLine
  • 写入:Write,WriteLine,WriteBlankLines
  • 属性    
  • AtEndOfLine:        文件指针正好在行尾标记,则返回TRUE
  • AtEndOfStream:   文件指针在文件末尾,则返回TRUE
  • Line:                      返回一个 TextStream 文件中的当前行号。
  • Column:                   返回 TextStream 文件中当前字符位置的列号。

3 fso 文件系统对象object----filesystemobject

fso是微软新增的功能,就是现在VBA里生成一个 文件对象

  • fso=createobject("scripting.filesystemobject")
  • dict=createobject("scripting.dictionary")

3.1 fso的子对象

  • fso.drive
  • fso.folder
  • fso.file
  • fso
  • textsteam   主要是对文件进行读写io操作

3.2FSO的局限性

  • 局限性1:不能直接筛多个文件,只能先筛文件夹
  • 正确fso.getfile()
  • 错误fso.getfiles()
  • 间接实现  fso.getfolder() .files ,完美解决
  • 局限性2:很方便查所有文件数,但是不方便查某一类型的文件个数
  • fso.getfolder("").files.count

3.3 过程或函数末,记得释放对象变量,set fso=nothing

3.4 官方 msdn的doc能找到  很多 textsteam (如fso)的方法

https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/readline-method

3.5 fso.的很多方法测试   (部分不好用,部分未测试)

fso. 对象下有很多方法

Sub richardliu2()
Dim fso
Dim b1, b3, b4Set fso = CreateObject("scripting.filesystemobject")
a1 = fso.getdrive("C:\")
a2 = fso.getdrivename("C:\")
a3 = fso.getbasename("C:\Users\Administrator\Desktop\test102.TXT")
a4 = fso.getextensionname("C:\Users\Administrator\Desktop\test102.TXT")
a5 = fso.getabsolutepathname("C:\Users\Administrator\Desktop\test102.TXT")Set b1 = fso.getfile("C:\Users\Administrator\Desktop\test102.TXT")
b2 = fso.getfilename("C:\Users\Administrator\Desktop\test102.TXT")
Set b3 = fso.getfolder("C:\Users\Administrator\Desktop")
'Set b4 = fso.getspecialfolder("C:\Users\Administrator")
b5 = fso.getparentfoldername("C:\Users\Administrator\Desktop\test102.TXT")
'b6 = fso.getptempnameDebug.Print a1
Debug.Print a2
Debug.Print a3
Debug.Print a4
Debug.Print a5
Debug.PrintDebug.Print b1
Debug.Print b2
Debug.Print b3
'Debug.Print b4
Debug.Print b5
'Debug.Print b6End Sub

fso的对象

  • 文件夹
  • fso.bulidpath()
  • fso.createfolder()
  • fso.copyfolder()
  • fso.movefolder()
  • fso.deletefolder()
  • fso.folderexist()
  • fso.driveexist()
  • fso.fileexist()
  • 文件
  • fso.createtextfile
  • fso.opentextfile
  • fso.copyfile()
  • fso.movefile()
  • fso.deletefile()

fso.createtextfile

fso.opentextfile

folder对象

  • folder.copy()
  • folder.move()
  • folder.delete()
  • folder.createtextfile()

处理文件的方法

  • file.OpenAsTextStream()
  • object.OpenAsTextStream([iomode, [format]])
  • file.copy()
  • file.move()
  • file.delete()

TextStream 对象

处理文本文件的方法  object--file

  • object.read
  • object.readline
  • object.readall
  • object.skip
  • object.skipline
  • object.write
  • object.writeline
  • object.writeblankline
  • object.close

3.6 FSO很多方法和属性

fso.getfile

fso.getfilename

fso.getExtensionName

fso.getBasename

https://blog.csdn.net/hezudao25/article/details/40819669

https://blog.csdn.net/yuelenglingxi/article/details/6528108

https://baijiahao.baidu.com/s?id=1637364844505511630&wfr=spider&for=pc

变量调用
getfso=fso.DriveExists("g:\") '判断指定硬盘驱动器是否存在
getfso=fso.GetDrive("c:") '创建自定义的FSO驱动器对象
getfso=fso.GetDriveName("c:\网络程序员伴侣") '返回文件夹的所在盘符
Set getfso=fso.Drives '创建FSO驱动器集合对象,多配合for each i in 
getfso语句进行穷尽操作,支持所有[驱动器对象属性],并具有Count和Item属性
 
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
 
驱动器对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetDrive("c:").FileSystem '返回驱动器对象的文件系统类型
getfso=fso.GetDrive("c:").DriveType '返回驱动器对象的驱动器类型,返回值范围0-5
getfso=fso.GetDrive("c:").DriveLetter '返回驱动器对象的字母
getfso=fso.GetDrive("c:").IsReady '返回指定驱动器是否准备好或是否损坏
getfso=fso.GetDrive("c:").SerialNumber '返回驱动器对象的唯一十进制卷标序号
getfso=fso.GetDrive("c:").ShareName '返回驱动器对象的网络共享名
getfso=fso.GetDrive("c:").VolumeName '返回驱动器对象的卷标名,同时也可以设置其卷标名
getfso=fso.GetDrive("c:").Path '返回驱动器的实际路径,如c:\则返回c:
getfso=fso.GetDrive("c:").RootFolder '返回驱动器对象的跟文件夹
getfso=fso.GetDrive("c:").AvailableSpace'返回驱动器对象的可用容量大小
getfso=fso.GetDrive("c:").FreeSpace '返回驱动器对象的剩余空间大小
getfso=fso.GetDrive("c:").TotalSize '返回驱动器对象的总空间容量大小
 
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
 
系统文件夹操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFolder("c:\") '创建自定义的FSO文件夹对象
getfso=fso.FolderExists("e:\网络程序员伴侣") '判断指定文件夹是否存在
getfso=fso.GettempName '随机返回WINDOW产生在temp文件夹中的临时文件
getfso=fso.GetparentFolderName("e:\网络程序员伴侣") '返回指定文件夹的父文件夹
fso.CreateFolder "c:\windows\新创建的文件夹路径及名称"
fso.MoveFolder "c:\windows\许移动或改名的文件夹","c:\windows\移动路径和新的文件夹名"
fso.DeleteFolder "c:\windows\要删除的目录名",false/true
fso.CopyFolder "c:\windows\须复制的目录名","c:\windows\得到付值内容的目录名",false/true
Set getfso=fso.Folders '创建FSO文件夹集合对象,多配合for each i in getfso语句进行穷尽操作,支持所有[文件夹对象属性],并具有Count和Item属性,具有AddFolders方法
Set getfso=fso.Files '创建FSO文件夹内文件集合对象,多配合for each i in getfso语句进行穷尽操作,支持所有[文件对象属性],并具有Count和Item属性
Set fso=Nothing '释放fso变量与FSO组件的连接资源</script>
 
文件夹对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFolder("c:\windows").Name '返回文件夹的名字,这里返回WINDOW
getfso=fso.GetFolder("c:\windows").ShortName '返回文件夹[8.3]格式的名称
getfso=fso.GetFolder("c:\windows").Attributes '返回文件夹的属性,可返回0,1,2,4,8,16,32,64,128
getfso=fso.GetFolder("c:\windows").Size '返回文件夹(包括子文件夹)内文件占用空间大小
getfso=fso.GetFolder("c:\windows").Type '返回文件夹类型信息
getfso=fso.GetFolder("c:\windows").Path '返回文件夹的真实路径
getfso=fso.GetFolder("c:\windows").ShortPath '返回文件夹[8.3]格式的路径
getfso=fso.GetFolder("c:\windows").Drive '返回文件夹所在驱动器
getfso=fso.GetFolder("c:\windows").Files.count '返回文件夹包含的所有文件对象集合
getfso=fso.GetFolder("c:\windows").SubFolders.count '返回文件夹包含的所有子文件夹的对象集合
getfso=fso.GetFolder("c:\windows").ParentFolder '返回文件夹的父文件夹对象
getfso=fso.GetFolder("c:\windows").IsRootFolder '返回文件夹是否为跟文件夹,是返回true否返回false
getfso=fso.GetFolder("c:\windows").DateCreated '返回文件夹的最初创建时间
getfso=fso.GetFolder("c:\windows").DateLastAccessed '返回文件夹最后一次访问时间
getfso=fso.GetFolder("c:\windows").DateLastModified '返回文件夹最近修改的时间
fso.GetFolder("c:\windows").CreateTextFile "新建的文件名及后缀",true/false,true/false
fso.GetFolder("c:\windows\要删除的目录名").Delete true
fso.GetFolder("c:\windows\要移动改名的目录名").Move "文件夹将要移动到的路径及自定义文件夹名称"
fso.GetFolder("c:\windows\旧目录").Copy "复制到路径",true/false '在指定路径付值此文件夹,true=覆盖,false相反
Set fso=Nothing '释放fso变量与FSO组件的连接资源</script>
 
系统文件操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFile("c:\windows\help.html") '得到文件完整路径
getfso=fso.GetFileName("c:\windows\help.html") '得到文件名称和后缀
getfso=fso.GetExtensionName("c:\windows\help.html") '得到文件的文件类型(后缀),不含小数点
getfso=fso.FileExists("c:\windows\文件名.html") '判断文件是否存在
fso.MoveFile "要移动及改名的原文件路径","移动到某路径及自定义新文件名"
fso.DeleteFile "c:\windows\要删除的文件所在路径",false/true
fso.CopyFile "c:\windows\须复制的旧文件.txt","c:\windows\复制后的文件名.jpg",false/true
fso.OpenTextFile "c:\windows\desktop\要打开操作的文件名称.txt",1/2/8,true/false,0/-1/-2 'ForReading=1=只读方式,ForWriting=2=可写方式,ForAppending=8=追加方式.true=如果打开的文件不存在则创建该文件.TristateFalse=0=以系统默认方式打开,TristateTrue=-1=以Unicode格式打开文件,TristateUseDefaule=-2=以ASCLL格式打开文件(缺剩值)
fso.CreateTextFile "c:\windows\desktop\新建的文件名称.txt",false/true,false/true '前者true覆盖以存在同名文件,后者为true新文件将以Unicode方式创建,反之=结果相反
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
 
文件对象操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
getfso=fso.GetFile("c:\windows\笔记本.txt").Name '返回文件对象的名称包含后缀
getfso=fso.GetFile("c:\windows\笔记本.txt").ShortName '返回文件对象的[8.3]名称包含后缀
getfso=fso.GetFile("c:\windows\笔记本.txt").Attributes '返回文件对象的属性,可返回0,1,2,4,8,16,32,64,128
getfso=fso.GetFile("c:\windows\笔记本.txt").Size '返回文件对象的大小
getfso=fso.GetFile("c:\windows\笔记本.txt").Type '返回文件对象的类型
getfso=fso.GetFile("c:\windows\笔记本.txt").Path '返回文件对象的完整路径
getfso=fso.GetFile("c:\windows\笔记本.txt").ShortPath '返回文件对象的[8.3]的完整路径
getfso=fso.GetFile("c:\windows\笔记本.txt").Drive '返回此文件对象所在的驱动器
getfso=fso.GetFile("c:\windows\笔记本.txt").ParentFolder '返回文件对象所在的文件夹
getfso=fso.GetFile("c:\windows\笔记本.txt").DateCreated '返回文件对象的创建日期
getfso=fso.GetFile("c:\windows\笔记本.txt").DateLastAccessed '返回文件对象的最后访问日期
getfso=fso.GetFile("c:\windows\笔记本.txt").DateLastModified '返回文件对象的最后修改时间
fso.GetFile("c:\windows\笔记本.txt").Copy "复制到的路径和文件名",true/false
fso.GetFile("c:\windows\笔记本.txt").Delete true
fso.GetFile("c:\windows\笔记本.txt").Move "移动到的路径及自定义文件名
Set fso=Nothing '释放fso变量与FSO组件的连接资源
</script>
 
文件对象读写操作
<script language=vbs>
on error resume next
Set fso=CreateObject("Scripting.FileSystemObject") '使FSO组件可以被fso变量调用
set link1=fso.GetFile("c:\windows\笔记本.txt").OpenAsTextStream(1/2/8,0/-1/-2)
open1=link1.AtendOfline '判断文件指针是否以在行的末尾
open2=link1.AtendOfstream '判断文件指针是否一再文件的末尾
open3=link1.Column '返回当前字符所在文件的列号
open4=link1.Line '返回当前字符所在文件的行号
open5=link1.Read(10) '读取文件中指定数量的字符
open6=link1.ReadAll '读取文件中所有的字符
open7=link1.ReadLine '读取文件中一行中含有的字符
open8=link1.Write "字符串" '将自定字符串或字符串变量写入文件
open9=link1.WriteLine "字符" '将自定字符+一个换行符写入文件
open10=link1.WriteBlankLines 10 '将指定数量的换行符写入文件
open11=link1.Skip 10 '使文件指针跳过指定数量的字符
open12=link1.SkipLine '使文件指针跳到下一行
link1.Close '文件操作完毕,销毁文件对象指针

VBA每日一练(22),VBA 的 scripting 类库 (scrrun.dll) 和 fso 详细学习相关推荐

  1. VBA每日一练(24)在VBA里,3种方法,使用fso 如何统计 某种后缀名类型的文件数量

    fso统计文件数量 fso统计文件数量,如果不区分文件类型,可以非常方便  fso.getfolder().files.count 但是fso统计某种类型的文件数量,需要遍历才行 可以用 for ea ...

  2. VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础

    一 编程的基础知识 1.1 编程基础知识 程序的构成 程序的构成(表面):很多语句 程序的构成(本质):数据,代码 程序的构成(过程构成)---I/O:输入 input,数据处理,输出  output ...

  3. VBA每日一练(18),数组array的用法 redim preserve等

    定义方式 dim  arr11 (5) dim  arr12 (0 to 5 ) dim  arr13 (1 to 5) dim arr21(1,5) dim arr22(0 to 1 ,0 to 5 ...

  4. python根目录_每日一练(22)-自己写一个python模块并发布到本机环境

    1.新建目录saycolor-demo mkdir saycolor-demo 2.新建setup.py,内容如下 from packages指定需要导入的python包 3.新建saycolor包, ...

  5. WindowsAPI每日一练(2) 使用应用程序句柄

    WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.htmlWindowsAPI每日一练(1) WinMain Win ...

  6. python 编程一日一练-python每日一练

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...

  7. python列表框_「每日一练」Python列表框部件的运用

    原标题:「每日一练」Python列表框部件的运用 用Python就一定要用到界面操作,有一个好的用户界面,才会有好的用户体验,下边就开始创建我们的主窗口,并设置相应的列表框部件吧! 案例 创建主窗口, ...

  8. vba 自动排序_给VBA字典键值排序,并提取需要的数据

    未知的领域很广.风景很美,不要蜷缩在一小块自认为天堂的世界里.待到暮年时安于自欺欺人,要努力提高自己,学习是一件很辛苦的事.要有一颗充满生机的心,把握现在,这才是进取.机会总在等待中出现,越是有意义的 ...

  9. 财务管理标准离差率在计算机中输入,2017年中级会计师《财务管理》每日一练:标准离差率...

    2017年中级会计师<财务管理>每日一练:标准离差率 1.单选题 某企业拟进行一项存在一定风险的项目投资,有甲.乙两个方案可供选择.已知甲方案净现值的期望值为1000万元,标准离差为300 ...

最新文章

  1. php判断ip跳转城市,PHP判断IP并转跳到相应城市分站的方法
  2. jQuery学习笔记1--表格展开关系
  3. Android之自定义带圆角的水纹波效果
  4. P3441-[POI2006]MET-Subway【图论,贪心】
  5. (14)H5新增表单属性
  6. 有奖投票丨HC2019开发者关注的TOP10问题你最想听哪个?
  7. 通用mapper_通用Mapper快速开发,搭建项目
  8. java 反射抽象_Java实现抽象工厂模式+java的反射的机制
  9. [HTML5和Flash视频播放器]Video.js 学习笔记(一 ) HLS库:videojs-contrib-hls
  10. java io 读取配置文件_(转)Java 读写Properties配置文件
  11. 简单的Swagger生产环境中屏蔽
  12. STLINK 烧写器引脚定义
  13. Css3:选择器、字体和颜色样式
  14. vc调用浏览器打开指定网址页面
  15. 写一个函数,输入n,求斐波那契数列的第n项。
  16. 安装mysql没有设置密码,设置密码
  17. fatal: No url found for submodule path ‘xxx‘ in .gitmodule
  18. am命令发送广播以及查看已发送广播信息
  19. Android默认短信应用常识
  20. 吕鑫MFC学习系列六

热门文章

  1. 发动机外特性曲线(工况图)疑惑
  2. 集软件授权、课件保护和身份认证于一身的加密狗
  3. 鸿蒙os免费熄屏,华为鸿蒙OS终于发布!四大黑科技+免费开源 将首发荣耀智慧屏...
  4. [创业-20]:财务报表 - 所有者权益之资本公积
  5. 数据系统架构-7.数据智能
  6. 如何分享让人眼前一亮的代码
  7. **MySQL例题一(根据不同问题,多条件查询)**
  8. 学习笔记-linker框架层的Hook和利用
  9. 纯天然的野菜居然会致癌?
  10. java小练习:金字塔112112321