设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 求助:调用通用对话框出错

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2016-6-6 15:43:28 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Superleistung 于 2016-6-6 16:08 编辑
  1. Public Function gFuncInputFromExcelcomDlg(ByVal strTableName As String)
  2. On Error GoTo Err_Show
  3.     Dim strPath As String
  4.     Dim strSQL As String
  5.     Dim objDia As CommonDialog
  6.     Set objDia = comDialog.Object
  7.     objDia.DialogTitle = "打开"
  8.     objDia.Filter = "Excel文件(*.xlsx)|*.xls"   '指定文件格式
  9.     objDia.FilterIndex = 1  '指定默认过滤器
  10.     objDia.Flags = cdlOFNOverwritePrompt    '提醒重名
  11.     objDia.ShowOpen
  12.     strSQL = "Insert INTO [" & strTableName & "]" & _
  13.             "Select * FROM[Excel 12.0 XML:DATABASE=" & strPath & _
  14.             "].[" & strTableName & "$]"
  15.     strPath = objDia.FileName   '将用户指定的地址赋值给变量
  16.     If strPath = "" Then Exit Function
  17.     DoCmd.RunSQL strSQL
  18. Err_Show:
  19.     MsgBox Err.Description
  20.     Resume Exit_Function
  21. Exit_Function:
  22.     Exit Function
  23. End Function
复制代码

这里调用了Mircosoft Common Dialog
每次调试总是提示:
Set objDia = comDialog.Object 这句变量未定义

而同样的代码,不封装在函数里,直接放在Sub下就没问题。。。真心不懂

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
 楼主| 发表于 2016-6-6 15:46:40 | 显示全部楼层
本帖最后由 Superleistung 于 2016-6-6 16:16 编辑

虽然不是大问题,放Sub里也一样跑。但总觉得别扭,而且每段功能都这样用的话,代码太繁琐。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

3#
 楼主| 发表于 2016-6-7 10:13:04 | 显示全部楼层
本帖最后由 Superleistung 于 2016-6-7 10:23 编辑
roych 发表于 2016-6-7 09:46
印象中这个控件是没有单击事件,甚至没有标签什么的,很奇怪你是怎么使用的。enter事件?还是通过按钮来调 ...

我是在单击按钮中这样调用的,目的是获取导入文件路径,见下面代码
我先开始是一个个窗体敲,后来烦了就把清空表中数据的操作先封装了个函数gFuncDeleteRecordAll()
然后打算把后面的过程也封装起来,结果如主题所示——未能成功,于是还是需要我逐个在每个窗体中敲
为了不累死,我还是先尝试下Filedialog方法吧
  1. '由Excel导入
  2. Private Sub cmdNewMany_Click()
  3. On Error GoTo ERR_Show
  4.     gFuncDeleteRecordAll msSource
  5.     Me.Requery

  6. '过程:用Common Dialog 获取文件地址并导入
  7.     Dim objDia As CommonDialog
  8.     Dim strPath As String
  9.     Set objDia = comDialog.Object
  10.    
  11.     objDia.DialogTitle = "打开"
  12.     objDia.Filter = "Excel文件(*.xlsx)|*.xlsx" '多种格式用分号合并
  13.     objDia.FilterIndex = 1 '指定默认过滤器
  14.     objDia.Flags = cdlOFNOverwritePrompt '提醒重名
  15.     objDia.ShowOpen
  16.     strPath = objDia.FileName
  17.    
  18.     If strPath = "" Then Exit Sub
  19.     DoCmd.RunSQL "Insert INTO [" & msSource & "]" & " Select * FROM [Excel 12.0 XML;DATABASE=" & strPath & "].[tblBOM$]"
  20.    
  21.     Me.frmSub.Form.Requery
  22.    
  23. Exit_Sub:
  24.     Exit Sub

  25. ERR_Show:
  26.     MsgBox Err.Description
  27.     Resume Exit_Sub
  28.    
  29. End Sub
复制代码

点击这里给我发消息

4#
 楼主| 发表于 2016-6-7 10:22:07 | 显示全部楼层
todaynew 发表于 2016-6-6 17:16
用FileDialog对象试试

好的,我先试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 16:11 , Processed in 0.101765 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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