请教:filelen 和 lof的用法以及 filenumber
时间:2008-03-26
来源:互联网
请教:
Filelen 可以用来获得打开文件的长度吗?
Lof 函数怎么用?几个已经打开的文件如何获得filenumber?
谢谢
http://www10.zzu.edu.cn/ie_wangjunfeng/daquan/function/contents/LOF.htm#deffilenumber
作者: wdwc 发布时间: 2008-03-26
请你参见Word自带的帮助文档。
比如:
FileLen 函数
返回一个 Long,代表一个文件的长度,单位是字节。
语法
FileLen(pathname)
必要的 pathname参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。
说明
当调用 FileLen 函数时,如果所指定的文件已经打开,则返回的值是这个文件在打开前的大小。
注意 若要取得一个打开文件的长度大小,使用 LOF 函数。
FileLen 函数示例
本示例使用 FileLen 来返回文件的字节长度。示例中假设 TESTFILE 为含有数据的文件。
Dim MySizeMySize = FileLen("TESTFILE")Filelen("TESTFILE")' 返回文件的字节长度。
作者: Excel.Home 发布时间: 2008-03-26
谢谢关注
filelen好像是在文件关闭时有效
当已经打开的文档用filelen好像不行啊
而lof函数要获得打开时的文件号,可是对于不断写入内容的并且保持打开状态的文件该如何获得这个文件号呢?用什么属性一类的吗?
作者: wdwc 发布时间: 2008-03-26
请参考:
'* +++++++++++++++++++++++++++++
'* Created By SHOUROU@ExcelHome 2008-3-26 18:02:20
'仅测试于System: Windows NT Word: 11.0 Language: 2052
'№ 0374^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Option Explicit
Sub Example()
Dim strFileName As String, I As Byte
strFileName = "F:\Test"
For I = 1 To 3
Open strFileName & I For Output As #I ' 打开文件,如果没有,将创建此文件
Select Case I
Case 1
Print #I, "Microsoft Word" & Timer ' 将字符串写入文件
Case 2
Print #I, "ExcelHome" & Timer
Case 3
Print #I, "This is a test." & Timer
End Select
Debug.Print strFileName & "文件长度:" & LOF(I)
Next
Close #3
Close #2
Close #1
'Close '可使用Close语句全部关闭
'对于关闭文件,使用FileLen函数
For I = 1 To 3
Debug.Print strFileName & I & "文件长度:" & FileLen(strFileName & I)
Next
End Sub
'----------------------
作者: 守柔 发布时间: 2008-03-26
另外,我不知道楼主是指打开的其它文件吗?如果未保存(在内存中)恐怕比较难以做到。
我上述的代码是指二进制文件。
对于任意格式的文件,可以使用File对象的Size属性返回已知文件的大小。
作者: 守柔 发布时间: 2008-03-26
作者: wdwc 发布时间: 2008-03-26
我的目的是这样的:
我有一批文件,放在一个统一的文件夹内。通过filesearch打开文件,从其中复制出一部分,新建一个文件,保存为01.doc,粘贴,判断01.doc的长度,如果小于1M则继续,大于1M则关闭,新建文件存为02.doc再从待处理文件中继续粘贴,大于1M则新建03.doc。一直到所有文件处理完。
我原先用filelen,这样就得关闭01.doc,判断大小,然后打开,粘贴,关闭,再判断。这样比较慢。于是我想保持01.doc打开,用activate,可能快一点。
但是filelen只能获得打开前文件的大小,而lof用于用open语句打开的文件,需要filenumber,而我这个01.doc不是由open得来的,所以比较麻烦。
版主看有办法吗?实在不行新建——保存——关闭——打开——lof如何?变通一下?
作者: wdwc 发布时间: 2008-03-26
我的目的是这样的:
我有一批文件,放在一个统一的文件夹内。通过filesearch打开文件,从其中复制出一部分,新建一个文件,保存为01.doc,粘贴,判断01.doc的长度,如果小于1M则继续,大于1M则关闭,新建文件存为02.doc再从待处理文件中继续粘贴,大于1M则新建03.doc。一直到所有文件处理完。
我原先用filelen,这样就得关闭01.doc,判断大小,然后打开,粘贴,关闭,再判断。这样比较慢。于是我想保持01.doc打开,用activate,可能快一点。
但是filelen只能获得打开前文件的大小,而lof用于用open语句打开的文件,需要filenumber,而我这个01.doc不是由open得来的,所以比较麻烦。
版主看有办法吗?实在不行新建——保存——关闭——打开——lof如何?变通一下?
提供两种方法:
Sub Example()
Dim FSO As Object, myFile As Object, FileFullName As String
FileFullName = "F:\MyOffice\MyWord\Example.doc"
Set FSO = CreateObject("Scripting.FileSystemObject")
'无论文件是否打开
Set myFile = FSO.GetFile(FileFullName)
MsgBox myFile.Size 'byte
End Sub
Sub Example2()
Dim myDoc As Document, FileFullName As String
FileFullName = "F:\MyOffice\MyWord\Example.doc"
Set myDoc = Word.Documents.Open(FileName:=FileFullName, Visible:=False)
With myDoc
MsgBox .BuiltInDocumentProperties(wdPropertyBytes)
.Close False
End With
End Sub
根据你的情况,可以使用方法2(因你本身在打开文档),注意,每次粘贴后,保存文档,以取得更新后的磁盘文件大小.
作者: 守柔 发布时间: 2008-03-27
问题解决,又学一招,谢谢版主
第一个办法还得好好学习一下
作者: wdwc 发布时间: 2008-03-27
作者: maxlt 发布时间: 2010-12-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28