设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2467|回复: 4
打印 上一主题 下一主题

[Access本身] 请教用VBA写文件保存路径代码问题

[复制链接]
跳转到指定楼层
1#
发表于 2006-2-19 02:27:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
昨日在论坛发现用vba写的文件保存路径代码,试了试没成功,请教


该函数调用为: 文本 = BrowseForFolder(Hwnd, "Select target folder...")


请教hwnd应为什么,调用时值输多少? 能举个例吗?





附代码:


名称:选择保存文件路径


建模块:


Option Compare Database


Option Explicit


' 调用方式:: string = BrowseForFolders(Hwnd,TitleOfDialog)


' 例如:String1 = BrowseForFolders(Hwnd, "请选择位置……")


Public Type BrowseInfo


     hwndOwner As Long


     pIDLRoot As Long


     pszDisplayName As Long


     lpszTitle As Long


     ulFlags As Long


     lpfnCallback As Long


     lParam As Long


     iImage As Long


End Type


Public Const BIF_RETURNONLYFSDIRS = 1


Public Const MAX_PATH = 260


Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)


Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long


Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long


Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long


Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String


     Dim iNull As Integer


     Dim lpIDList As Long


     Dim lResult As Long


     Dim sPath As String


     Dim udtBI As BrowseInfo


    '初始化变量


     With udtBI


        .hwndOwner = hwndOwner


        .lpszTitle = lstrcat(sPrompt, "")


        .ulFlags = BIF_RETURNONLYFSDIRS


     End With


    '调用 API


     lpIDList = SHBrowseForFolder(udtBI)


     If lpIDList Then


        sPath = String$(MAX_PATH, 0)


        lResult = SHGetPathFromIDList(lpIDList, sPath)


        Call CoTaskMemFree(lpIDList)


        iNull = InStr(sPath, vbNullChar)


        If iNull Then sPath = Left$(sPath, iNull - 1)


     End If


    '如果选择取消, sPath = ""


     BrowseForFolder = sPath


End Function











分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
5#
发表于 2006-2-21 03:52:00 | 只看该作者
Me.Text1 = BrowseForFolder(Hwnd, "Select target folder..."):可以完成通过打开文件目录对话框,然后返回路径并对Text1赋值。
4#
发表于 2006-2-21 00:23:00 | 只看该作者
将例子简化后传上来看一下
3#
 楼主| 发表于 2006-2-20 23:27:00 | 只看该作者
哦,我知道这样调用,但是调用过程中老提示我hwnd要赋值.

请问该怎样做?
2#
发表于 2006-2-19 03:33:00 | 只看该作者
Me.Text1 = BrowseForFolder(Hwnd, "Select target folder...")
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-5 00:19 , Processed in 0.095131 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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