设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 12171|回复: 29
打印 上一主题 下一主题

竞赛[高8]最好和最简洁的文件打开对话框功能

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2008-3-4 14:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
80金钱
功能:使用代码调用文件打开对话框,只可使用Access或Office本身的功能,不可使用第三方Activex控件
要求:功能符合要求,代码最简洁,调用最方便
奖品:只取第一名 第一名增加金钱数80 增加经验值10 增加魅力10
期限:10天

最佳答案

查看完整内容

Function GetFileName(TitleText As String, Filter As String, FilterText As String, ByVal DialogType As Integer, Optional ByVal FilePath) As String '参数DialogType说明: '1.“打开”对话框 '2.“另存为”对话框(此项如执行类型筛选时会出错,所以加了出错处理为 Resume Next) '3.“文件选取器”对话框 '4.“文件夹选取器”对话框 '例:AA = GetFileName("打开", "*.ini;*.txt", "配置文件", 1, 3) On Error Resum ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2008-3-4 14:44:05 | 只看该作者
Function GetFileName(TitleText As String, Filter As String, FilterText As String, ByVal DialogType As Integer, Optional ByVal FilePath) As String
'参数DialogType说明:
'1.“打开”对话框
'2.“另存为”对话框(此项如执行类型筛选时会出错,所以加了出错处理为 Resume Next)
'3.“文件选取器”对话框
'4.“文件夹选取器”对话框
'例:AA = GetFileName("打开", "*.ini;*.txt", "配置文件", 1, 3)

On Error Resume Next

    Dim dlgOpen As FileDialog
    Set dlgOpen = Application.FileDialog(DialogType)
    With dlgOpen
        .Title = TitleText
        .Filters.Clear
        .Filters.Add FilterText, Filter
        .AllowMultiSelect = False
        If IsMissing(FilePath) Then
            .InitialFileName = CurrentProject.Path
        Else
            .InitialFileName = FilePath
        End If
        .Show
    End With
    If dlgOpen.SelectedItems.Count > 0 Then
        GetFileName = dlgOpen.SelectedItems(1)
    Else
        GetFileName = ""
    End If
    Set dlgOpen = Nothing

End Function
回复

使用道具 举报

3#
发表于 2008-3-4 15:08:11 | 只看该作者
能不能引用office 11 Library
回复

使用道具 举报

点击这里给我发消息

4#
 楼主| 发表于 2008-3-4 15:18:36 | 只看该作者
也可以 是OFFICE本身的, 我知道你想取巧了
回复

使用道具 举报

5#
发表于 2008-3-4 16:11:50 | 只看该作者
帮助里的东西总是最有效:

Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog( _
    DialogType:=msoFileDialogOpen)

With dlgOpen
    .AllowMultiSelect = True
    .Show
End With

For i = 1 To dlgOpen.SelectedItems.Count
sStr = sStr & dlgOpen.SelectedItems(i) & vbCrLf
Next
MsgBox sStr

[ 本帖最后由 liwen 于 2008-3-4 16:25 编辑 ]
回复

使用道具 举报

6#
发表于 2008-3-4 16:16:43 | 只看该作者
这个当然行,但不是最好的,应该要写成模块,最起码能自定义后缀筛选
回复

使用道具 举报

点击这里给我发消息

7#
 楼主| 发表于 2008-3-4 16:30:49 | 只看该作者
正是 至少可以指定扩展名
回复

使用道具 举报

8#
发表于 2008-3-4 16:33:53 | 只看该作者
Sub FilesSelect()
Dim dlgOpen As FileDialog

Set dlgOpen = Application.FileDialog( _
    DialogType:=msoFileDialogOpen)

With dlgOpen
    .AllowMultiSelect = True
    .Filters.Add "AIS文件", "*.ais", 1
    .Filters.Add "图象", "*.gif; *.jpg; *.jpeg; *.bmp", 1
    .Show
End With
For i = 1 To dlgOpen.SelectedItems.Count
sStr = sStr & dlgOpen.SelectedItems(i) & vbCrLf
Next
MsgBox sStr

Set dlgOpen = Nothing

End Sub

还是来源于帮助

[ 本帖最后由 liwen 于 2008-3-4 16:36 编辑 ]
回复

使用道具 举报

9#
发表于 2008-3-4 16:42:23 | 只看该作者
对话框也可支持多选的
回复

使用道具 举报

点击这里给我发消息

10#
 楼主| 发表于 2008-3-4 17:07:27 | 只看该作者
不错, 看来API 太长了,个个都不用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-6-10 11:21 , Processed in 0.106377 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表