Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]遍历文件夹文件

chinasa  发表于:2015-03-11 13:40:43  
复制

附件是我从本论坛复制的一个例子,有如下几个问题需呀请教:

1.附件是把遍历结果写到EXCEL中的,我需要把这段代码写到ACCESS窗体中,并且遍历结果也是要写入到ACCESS表中。

2.每个文件我需要把第一行第三个到第6个字符写到表中。

3.我需要读入所有扩展名,并不限定XLS或TXT.

另外,如果能把每个文件属性的“大小”记录下来就更好了。

 

上述问题不一定帮我全部解决,能解决第一个或第二题即可,当然了,全部解决就更是感谢了。

 

比如:D盘有 a.txt(第一行内容AAAAAAAAAAA)   b.xx(第一行内容BBBBBBBBBBB)    c.yy(第一行内容CCCCCCCCCCCC)   d.zz(第一行内容DDDDDDDDDD)  四个文件,我需要在ACCESS窗体中执行代码,并写入到表中,表中的内容如下:

a.txt    AAAA  

b.xx    BBBB

c.yy    CCCC

d.zz     DDDD

 

 

�������ش˸���

 

 

Top
煮江品茶 发表于:2015-03-11 13:58:12
http://www.accessoft.com/blog/article.asp?UserID=10802&ClassID=728

茼蒿 发表于:2015-03-11 14:48:57

是要这效果吗?



chinasa 发表于:2015-03-12 11:21:19

 

我的目的是有一个文件夹,里面有N个文本文件(扩展名并不是TXT),每个文本文件的第一行都有一个文件类型标识,我现在需要把此文件夹下所有的文件的名称、内容中的标识取出来、文件的大小,把这三个内容写到一张表中。

 

目的是把图中文件夹的内容制作一份象EXCEL一样的文件,以便两者进行核对。



煮江品茶 发表于:2015-03-12 12:01:25
Sub InsertTB(folderpath As String)
    '引用:Microsoft Scripting Runtime
    '参数:folderpath -- 文件夹地址
    
    Dim fso As New FileSystemObject
    Dim fld As Folder, f As File
    Dim ssql As String
    
    If fso.FolderExists(folderpath) = True Then
        Set fld = fso.GetFolder(folderpath)
        For Each f In fld.Files
            '向表中新增记录
            ssql = "insert into 阁下的表名称 (文件名,报文类型,字节) values ('"
            ssql = ssql & f.Name & "','"
            ssql = ssql & Left(f.Name, InStr(f.Name, ".") - 1) & "',"
            ssql = ssql & Round(f.Size / 1024, 0) & ")"
            
            CurrentDb.Execute ssql
        Next
    End If
    
    Set f = Nothing
    Set fld = Nothing
    Set fso = Nothing
End Sub


chinasa 发表于:2015-03-12 13:02:51

万分感谢煮版的指点,问题基本得到解决。

我问题中的第2点,需要读取第一行第三个到第6个字符写到表中,这一点没有实现,我自己先琢磨一下,如果实在弄不出,再继续请教。



chinasa 发表于:2015-03-12 13:12:16

我把语句改成如下内容,测试通过,还没测试效率如何(因为我要处理的可能是上万个文件)   

 

Dim fso As New FileSystemObject
    Dim fld As Folder, f As File
    Dim ssql As String
    folderpath = "Z:\"

    If fso.FolderExists(folderpath) = True Then
        Set fld = fso.GetFolder(folderpath)
        For Each f In fld.Files
            '向表中新增记录
            If f.Name <> "pagefile.sys" Then
           
            Close #1
            Open folderpath & f.Name For Input As #1    ' 打开文件。
            Line Input #1, ediwj    ' 读入一行数据并将其赋予某变量。
            bwlx = Mid(ediwj, 3, 5)
           
            ssql = "insert into TB1 (文件名,报文类型,字节) values ('"
            ssql = ssql & f.Name & "','"
            ssql = ssql & bwlx & "',"
            'ssql = ssql & Left(f.Name, InStr(f.Name, ".") - 1) & "',"
            ssql = ssql & Round(f.Size / 1024, 0) & ")"
           
            CurrentDb.Execute ssql
           End If
        Next
    End If
   
    Set f = Nothing
    Set fld = Nothing
    Set fso = Nothing



总记录:6篇  页次:1/1 9 1 :