一、原因描述
因单位业务需要,需要将文本格式文件导入到Access表中。单独来说,该文本格式内容固定,在设置好导入规则后,即可通过DoCmd.TransferText实现。但实际上却有以下情况:
1、数据源文件后缀名并不是.txt,而TransferText语句要求导入文件的文件名后缀必须为txt,并且要有绝对的路径。
2、需要导入的文本文件可能为多个文件。
实际上以上两个情况对于自己来说不是问题,自己完全可以先用类似庖丁解牛的合并软件先将多文件进行合并,并更名为txt后缀的文件,然后导入即可。但此程序面向的是基层单位,使用人员计算机操作水平参差不齐,因此在数据导入之前,首先必须实现多文件选择,获得已选择多文件的路径之后,再进行处理,导入,有点像从Access中实现文件合并并导入的过程。
二、我目前的做法:
因为自己是初学+自学,没经验,没示例,一时只找到选择单个文件的代码,实现的过程是这样的。
1、建立一个文本框,名称为File1,作为显示文件路径及临时储存选择文件的路径
2、利用Me.File1 = dlgGetFile(, "*.*")获得要导入的一个文件路径
3、使用FileCopy Me.File1, "c:\92018.txt" `复制要导入的文件到指定位置,并更改为指定文件名92018.txt,目的是为了TransferText需要(导入的文件必须是txt后缀)
4、使用DoCmd.TransferText , "92018 导入规格", 92018, "c:\92018.txt" 导入数据
以上仅能实现单个文件导入,对于一次同时导入多文件却无能为力,所以我用了个笨办法,即同时建立5个文件对话框(当然建10个、100个也行,太麻烦,自己都觉得丢人)
还好FileCopy会自动覆盖已存在同名文件,TransferText导入时也可以实现累加导入,虽然此方法笨了点,却也实现了多文件的导入(高手别笑话我,我这可是无师自通,憋了很多天自己悟出来的)。
可是,这样做,太丢人了。首先一看就不是专业的,一个文件选一次,那要是有100个还不得累死。其次是FileCopy对本程序很好用,但好像却是office中沙盒模式中禁止使用的函数,我真怕哪天Microsoft把这个函数彻底取消了,那我就玩完了,如何向领导交代。
三、如今得到多文件选择代码了,不会操作
上了Access软件网,终于找到一直未找到的多文件选择代码示例,很高兴,然后很痛苦。多文件是选择上了,那下面我该如何使用TransferText进行导入?看来多文件就涉及到数组了,虽然本人对数组略知一二,但实际应用,一点不会。
希望高人给与指点!!!!十分感谢!!!