VBA每日一练(22),VBA 的 scripting 类库 (scrrun.dll) 和 fso 详细学习
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 详细学习相关推荐
- VBA每日一练(24)在VBA里,3种方法,使用fso 如何统计 某种后缀名类型的文件数量
fso统计文件数量 fso统计文件数量,如果不区分文件类型,可以非常方便 fso.getfolder().files.count 但是fso统计某种类型的文件数量,需要遍历才行 可以用 for ea ...
- VBA每日一练(4),补充VBA的基础语句知识,基本控制结构,I/O基础
一 编程的基础知识 1.1 编程基础知识 程序的构成 程序的构成(表面):很多语句 程序的构成(本质):数据,代码 程序的构成(过程构成)---I/O:输入 input,数据处理,输出 output ...
- 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 ...
- python根目录_每日一练(22)-自己写一个python模块并发布到本机环境
1.新建目录saycolor-demo mkdir saycolor-demo 2.新建setup.py,内容如下 from packages指定需要导入的python包 3.新建saycolor包, ...
- WindowsAPI每日一练(2) 使用应用程序句柄
WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.htmlWindowsAPI每日一练(1) WinMain Win ...
- python 编程一日一练-python每日一练
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 过滤掉列表中的负数 筛选出字典{lilei: 79,jim: 88,lu ...
- python列表框_「每日一练」Python列表框部件的运用
原标题:「每日一练」Python列表框部件的运用 用Python就一定要用到界面操作,有一个好的用户界面,才会有好的用户体验,下边就开始创建我们的主窗口,并设置相应的列表框部件吧! 案例 创建主窗口, ...
- vba 自动排序_给VBA字典键值排序,并提取需要的数据
未知的领域很广.风景很美,不要蜷缩在一小块自认为天堂的世界里.待到暮年时安于自欺欺人,要努力提高自己,学习是一件很辛苦的事.要有一颗充满生机的心,把握现在,这才是进取.机会总在等待中出现,越是有意义的 ...
- 财务管理标准离差率在计算机中输入,2017年中级会计师《财务管理》每日一练:标准离差率...
2017年中级会计师<财务管理>每日一练:标准离差率 1.单选题 某企业拟进行一项存在一定风险的项目投资,有甲.乙两个方案可供选择.已知甲方案净现值的期望值为1000万元,标准离差为300 ...
最新文章
- php判断ip跳转城市,PHP判断IP并转跳到相应城市分站的方法
- jQuery学习笔记1--表格展开关系
- Android之自定义带圆角的水纹波效果
- P3441-[POI2006]MET-Subway【图论,贪心】
- (14)H5新增表单属性
- 有奖投票丨HC2019开发者关注的TOP10问题你最想听哪个?
- 通用mapper_通用Mapper快速开发,搭建项目
- java 反射抽象_Java实现抽象工厂模式+java的反射的机制
- [HTML5和Flash视频播放器]Video.js 学习笔记(一 ) HLS库:videojs-contrib-hls
- java io 读取配置文件_(转)Java 读写Properties配置文件
- 简单的Swagger生产环境中屏蔽
- STLINK 烧写器引脚定义
- Css3:选择器、字体和颜色样式
- vc调用浏览器打开指定网址页面
- 写一个函数,输入n,求斐波那契数列的第n项。
- 安装mysql没有设置密码,设置密码
- fatal: No url found for submodule path ‘xxx‘ in .gitmodule
- am命令发送广播以及查看已发送广播信息
- Android默认短信应用常识
- 吕鑫MFC学习系列六