Office中国论坛/Access中国论坛
标题:
文件名判别
[打印本页]
作者:
ycxchen
时间:
2010-12-22 09:48
标题:
文件名判别
我想导入数据,导入前先判别文件名是否包括有日期格式的字符,例如类似“旅游统计2010-12-22.xcl”,请问,如何用代码判别?
作者:
hgxly
时间:
2010-12-22 10:39
导入数据必须有确定的导出对象文件指向,好像并不存在对文件名的判别问题。
作者:
ycxchen
时间:
2010-12-22 10:43
为便于数据管理,导出前我已对文件名自动加上日期,所以,导入时为尽可能减少错误,先判别文件名是否包括有日期格式的字符,如何办?
作者:
hgxly
时间:
2010-12-22 11:55
可在导入前先用对话框提示一下文件的名称,然后再确认是否导入。如何显示导入文件名称可参阅本地的地址:
http://www.office-cn.net/forum-v ... BC%FE%2B%C3%FB.html
作者:
ycxchen
时间:
2010-12-22 14:42
我想用数字函数、字符函数可解决问题。
作者:
hgxly
时间:
2010-12-22 15:32
本帖最后由 hgxly 于 2010-12-22 15:34 编辑
用left或right函数先提取文件名中日期部分的字符串,然后用isdate函数判别此字符串是否是日期,返回true为真。这应该可以的吧。
a= "2010-12-22"
?isdate(a)
True
作者:
todaynew
时间:
2010-12-22 15:49
ycxchen 发表于 2010-12-22 09:48
我想导入数据,导入前先判别文件名是否包括有日期格式的字符,例如类似“旅游统计2010-12-22.xcl”,请问, ...
思维的逻辑过程似乎有点问题。
判断的范围取是否含有日期没有什么意义,含有日期格式的文件多了去了,这个范围虽然比所有文件少,但仍然是一个很大很不确定的范围。
从你的问题看有意义的范围可以用两个常量标识,其一是“旅游统计”,其二是扩展名“xcl”。
你可能要说,我希望导入导出2010-10-1至2010-10-15的一组文件怎么办?解决这个问题有两个方法:如果文件名中代表文件生成日期的字符串格式和位置是固定的,那么可以用mid、left或right函数截取这个字符串,用Cdate转换为日期型后进行判断;还有一种方法直接读取文件的创建(或者修改日期)进行判断。
作者:
roych
时间:
2010-12-22 16:52
本帖最后由 roych 于 2010-12-22 17:53 编辑
用format来判断格式就好了~~先贴代码上来以便无法下载附件的网友看看:
Private Sub 导出数据_Click()
Dim fso As Object
'创建组件
Set fso = CreateObject("Scripting.FileSystemObject")
'判断相对路径下是否存在这个文件
If fso.FileExists(CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls") = False Then
MsgBox CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls"
MsgBox "在指定路径下:" & CurrentProject.Path & "" & Chr(13) & "找不到文件:" & Format(Date - 1, "MMDD") & ".xls"
Exit Sub
Else
'消除生成表的警告
DoCmd.SetWarnings False
MsgBox "Dyesect导出的Excl文件必须以日期来命名" & Chr(13) & Chr(13) & "例如,0805.xls,准备好了就按OK吧!", vbOKCancel, "导出数据注意事项"
'链接数据表,主要因为某些字段含有点号,直接导入会出错。
DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, "tem", CurrentProject.Path & "" & Format(Date - 1, "MMDD") & ".xls", True
'执行生成表查询
DoCmd.OpenQuery "Q_WFT"
'开始到处生成表
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "WFT", Me.导出路径.Value, True
'提示信息
MsgBox "已成功导出到" & Chr(13) & Chr(13) & Me.导出路径.Value
'删除临时表,以备下一次执行(如果不删除,下一次链接表就成了Tem1、Tem2……了)
DoCmd.RunSQL ("Drop table Tem")
End If
End Sub
复制代码
需要说明的是,下载后,两个文件必须保存在同一路径下,否则还是无法识别路径的。此外,这里不支持批量导入。不过您也可以根据这些代码写一下。
[attach]44458[/attach]
作者:
ycxchen
时间:
2010-12-23 14:43
十分多谢大家的指教特别是roych的热心解答!
作者:
t小宝
时间:
2010-12-24 09:40
“旅游统计2010-12-22.xcl”
如果2010-12-22.xcl前面的文字个数不固定,这样判断:
If 文件名 Like "*####-##-##.xcl" then
如果2010-12-22.xcl前面的文字个数固定4个,这样判断:
If 文件名 Like "????####-##-##.xcl" then
作者:
ycxchen
时间:
2010-12-24 11:39
小宝版主的不失是个好办法!
作者:
miracle-y
时间:
2011-1-18 16:18
学习了
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3