在VBA编程中,我们常常需要手动打开文件选择框、取得文件全路径与文件名,下面这个例子可以实现这些功能,VBA代码如下:
'VBA打开文件选择框、取得文件全路径与文件名 Sub selectExcelfile() Dim fileNameObj As Variant Dim aFile As Variant '数组,提取文件名fileName时使用 '打开文件对话框返回的文件名,是一个全路径文件名,其值也可能是False,因此类型为Variant Dim fullName As String Dim fileName As String '从FileName中提取的路径名 Dim i As Integer fileNameObj = Application.GetOpenFilename("Excel 文件 (*.xls),*.xls") '调用Windows打开文件对话框 If fileNameObj <> False Then '如果未按“取消”键 aFile = Split(fileNameObj, "") fileName = aFile(UBound(aFile)) '数组的最后一个元素为文件名 fullName = aFile(0) For i = 1 To UBound(aFile) '循环合成全路径 fullName = fullName & "" & aFile(i) Next Else MsgBox "请选择文件" End End If '得到Excel全路径 allExcelFullPath = fullName '得到Excel文件名 workbookName = fileName End Sub
上面的过程使用方法如下:
1、定义全局字符串变量。a:allExcelFullPath,保存得到的Excel全路径;b:workbookName,保存得到的Excel文件名。
2、把上述selectExcelfile过程添加到相应模块中,调用selectExcelfile即可。
无意间发现的网站 很不错 挺喜欢的
不知道为什么非要开挂才能打开这个网站。正在找这行代码,谢谢楼主分享。
———————————————————————–
fileName = aFile(UBound(aFile)) ‘数组的最后一个元素为文件名
fullName = aFile(0)
For i = 1 To UBound(aFile) ‘循环合成全路径
fullName = fullName & “” & aFile(i)
Next
Else
MsgBox “请选择文件”
End
————————————————-
这段代码好像没有任何效果。filename 和Fullname 都是一样的。
不一样的,filename存的是文件名,而Fullname存的文件全路径。例如:c:test.xls,filename=”test.xls”,Fullname=”c:test.xls”
Application.GetOpenFilename不能多文件选择,出来的结果不可能是数组