ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhoujibin1

[原创]Excel VBA 快速上手之宝典

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-20 19:16 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
好,精简实用

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 20:38 | 显示全部楼层

1.4 文件的其它操作

1.4.1 判断文件存在与否

使用 Dir 函数判断, 格式: Dir [(pathname  [, attributes] ) ]

Dir 会返回匹配 pathname 的第一个文件名。示例如下.  

strfile = Dir(ThisWorkbook.Path & "\filename.xls")   '检查文件是否存在

If strfile <> "" Then  存在就打开

   Workbooks.Open ThisWorkbook.Path & "\filename.xls"

Else ‘文件不存在就警告             

   MsgBox "文件不存在", vbOKOnly, "警告"

End If

1.4.2 文件查找

使用Application.FileSearch方法

示例如下:

pp = "D:\Temp": ff = 0

With Application.FileSearch

  .NewSearch

  .LookIn = pp

  .Filename = "prn*.tmp"  查找文件
   prn*.tmp  *
为指代符

  If .Execute() > 0 Then ff = .FoundFiles.Count

End With

MsgBox pp & " 找到 " & ff & " 个档案!"

 

1.4.3 文件删除

使用 kill 方法
示例如下: kill(“c:\mytest.txt”)

1.4.4 文件日期

使用 FileSystem object对象实现, 示例函数如下

 

Function FileDate(filespec, datetype)

  Dim fs, f, s

  Set fs = CreateObject("Scripting.FileSystemObject")

  Set f = fs.GetFile(filespec)

  Select Case datetype

    Case 1: FileDate = f.DateCreated            '档案建立日期

    Case 2: FileDate = f.DateLastAccessed    '存取日期

    Case 3: FileDate = f.DateLastModified     '修改日期

  End Select

End Function

[此贴子已经被作者于2006-7-20 22:06:53编辑过]

TA的精华主题

TA的得分主题

发表于 2006-7-20 21:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 21:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

文本文件操作

2.1 打开与新建

Open 语句 能够对文件输入/输出 (I/O)

语法

Open   pathname   For    mode [Access access] [lock] As [#]filenumber [Len=reclength]

部分                        描述

pathname              必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。

mode                    必要。关键字,指定文件方式,有   AppendBinaryInputOutput、或  Random 方式。如果未指定方式,则以  Random 访问方式打开文件。

access                  可选。关键字,说明打开的文件可以进行的操作,有 ReadWrite、或  Read Write 操作。

lock                    可选。关键字,说明限定于其它进程打开的文件的操作,有SharedLock ReadLock Write、和 Lock Read Write  操作。

filenumber          必要。一个有效的文件号,范围在 1 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。如: FileNumber = FreeFile

reclength           可选。小于或等于 32767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。

[此贴子已经被作者于2006-7-20 22:02:00编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 22:00 | 显示全部楼层

说明

对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。

[新建] 如果 pathname 指定的文件不存在,那么,在用 AppendBinaryOutput、或 Random 方式打开文件时,可以建立这一文件。

如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。

如果 mode Binary 方式,则 Len 子句会被忽略掉。

重要

BinaryInput Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。

TA的精华主题

TA的得分主题

发表于 2006-7-20 22:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主继续

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 22:03 | 显示全部楼层

2.2 读入与写出
2.2.1读入
Input #filenumber, varlist
从已打开的顺序文件中读出数据并将数据指定给变量

Get [#]filenumber, [recnumber], varname
将一个已打开的磁盘文件读入一个变量之中

2.2.2写入
Write #filenumber, [outputlist]
将数据写入顺序文件,以双引号"数据"逗号,分隔数据

Print #filenumber, [outputlist]
将格式化显示的数据写入顺序文件中

Put [#]filenumber, [recnumber], varname
将一个变量的数据写入磁盘文件中。

2.3关闭
Close [filenumberlist] 关闭 Open 语句所打开的输入/输出 (I/O) 文件

注意:
如果今后想用 Input # 语句读出文件的数据,就要用 Write # 语句而不用 Print # 语句将数据写入文件。因为在使用 Write # 时,将数据域分界就可确保每个数据域的完整性,因此可用 Input # 再将数据读出来。使用 Write # 还能确保任何地区的数据都被正确读出。Write 与 Print # 语句不同,当要将数据写入文件时,Write # 语句会在项目和用来标记字符串的引号之间插入逗号。Write # 语句在将 outputlist 中的最后一个字符写入文件后会插入一个新行字符,即回车换行符,(Chr(13) + Chr(10))

2.4其他文件函数
LOF(filenumber)   返回一个 Long,表示用 Open 语句打开的文件的大小,该大小以字节为单位。
EOF(filenumber)   返回一个 Integer,它包含 Boolean 值True,表明已经到达为 Random 或顺序 Input 打开的文件的结尾。
Loc(filenumber)   返回一个 Long,在已打开的文件中指定当前读/写位置
Seek(filenumber)  返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位置

[此贴子已经被作者于2006-7-20 22:09:14编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 22:04 | 显示全部楼层

2.5 示例

要求: 打开一文本文件test1.txt, 已知其内容为空格分隔, 要求把其中每行首个数据写入Excel 宏程序文件的表1中, 再把数据写入新建文件test2.ini中

Sub test()
 Dim Fm, i As Long, j As Long, k As Long
 Dim TT, T1
 On Error Resume Next
 Fm = Application.GetOpenFilename("Text Files (*.txt), *.txt")
 If Fm = False Then Exit Sub              ' 取消选择文件则退出
 k = FreeFile
 Open Fm For Input As #k                  ' 以随机只读的方式打开文件
 f2 = FreeFile
 Open "c:\test2.ini" For Output As #f2    ' 以随机方式新建一个不存在的文件
 j = 1
 With Worksheets("sheet1")
 Do While Not EOF(k)                      ' 循环读至文件最后一行
     Line Input #k, TT                    ' 读入一行数据并将其赋予某变量
     T1 = Split(TT)                       ' 以文本中空格来分开这个字符串并赋值给变量,请参考split函数帮助
     .Cells(j, 1) = T1(0)
     Print #f2, T1(0)
     j = j + 1
 Loop
 End With
 Close #k                                 ' 关闭文件
 Close #f2                                ' 关闭文件
End Sub

[此贴子已经被作者于2006-7-20 22:05:32编辑过]

TA的精华主题

TA的得分主题

发表于 2006-7-20 22:21 | 显示全部楼层

强顶!很好的工具书-------宝典.

如果示例再多些就更好了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-20 22:28 | 显示全部楼层

累呀,自己总结,自己设计示例.自己还要测试.

今天就到这,明天争取能把Access文件操作搞定.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-12 03:10 , Processed in 0.048597 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表