全民⼀起VBA实战篇专题4第⼀回 Get⽅法弹出⽂件框,可选
参数过滤⽬标名
相关知识点:
Application.GetOpenFilename⽅法:显⽰“⽂件打开”对话框,并将⽤户选中的⽂件名,作为⼀个字符串返回。如果⽤户点击“取消”按钮,则返回⼀个逻辑值False。
GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect) 打开对话框
FileFilter ⽂件过滤器,全部⽂件或某⼀类型⽂件;⼀个⽂件类型,(;)分号指定多个⽂件名格式
FilterIndex 默认⽂件类型选项
Title  弹出选择⽂件对话框的标题
ButtonText 特定版本应⽤
MultiSelect 可以选择多⽂件同时打开; 如果MultiSelect为True,那么在判断⽤户是否按下“取消”按钮时,不能使⽤If fName<>False Then这种⽅式,应使⽤If IsArray(fName)=True Then ,或者将其直接简写为If
IsArray(fName) Then
GetSaveFilename(InitialFilename,FileFilter,FilterIndex,Title,ButtonText) “另存为”对话框。
InitialFilename 默认另存为⽂件名
其他参数跟GetOpenFilename相似
GetOpenFilename和GetSaveFilename都只是返回字符串(或者数组),告知VBA⽤户选择了什么样的⽂件名。并不执⾏打开或保存⽂件等操作,需要⽤Workbook.open、Workbook.SaveAs、Open/Input、Line/Print等⽅法来实现⽂件操作功能。
例1 调⽤⽂件打开对话框
Sub demo()
Dim fName ‘变体类型,⽆论GetOpenFilename有可能是字符串也可能是逻辑值
fName=Application.GetOpenFilename()
MsgBox fName  ‘返回打开⽂件的完整路径名
Workbooks.Open fName
End Sub
例2 调⽤⽂件打开对话框,判断是否选择了⽂件,⽂件过滤器使⽤等参数
Sub demo1()
Dim fName
fName=Application.GetOpenFilename(_
FileFilter:=”⽂本,*.txt,⼯作簿,*.xlsx;*.xlsm,全部,*”,_
FilterIndex:=3,Title:=”请选择⼀个季度报表”) ‘⼀个⽂件类型,分号指定多个⽂件名格式。默认“全部”。指定对话框标题。      If fName<>False Then
MsgBox fName
End If
End Sub
例3 调⽤⽂件打开对话框,多⽂件选择
Sub demo3()
Dim fName, s  ‘s是数组
fName=Application.GetOpenFilename(_
FileFilter:=”⽂本,*.txt,⼯作簿,*.xlsx;*.xlsm,全部,*”,_
FilterIndex:=3,Title:=”请选择⼀个季度报表”,MultiSelect:=True) ‘多⽂件选择
If IsArray(fName) Then  ‘IsArray(x):如果变量x是个数组,返回True,否则False
For Each s In fName
MsgBox fName
Next s
End If
End Sub
例4 调⽤⽂件另存为对话框,将当前活动⼯作簿保存在硬盘上,⽤户指定默认⽂件名
getsavefilename
Sub demosaveas()
Dim fName,  w as workbook
Set w=ActiveWorkbook
fName=Application.GetSaveAsFilename(_
InitialFileName:=”报表1.xlsx”, _
FileFilter:=”⽂本,*.txt,⼯作簿,*.xlsx;*.xlsm,全部,*”, _
FilterIndex:=2,Title:=”请将季度报表保存到磁盘”)
‘如果⽤户按下的不是取消按钮,则保存
‘GetSaveAsFilename只返回字符串或False,所以不使⽤IsArray
If fName<>”” Then
w.SaveAs fName              End If
End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。