设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] CurrentProject.Path语句出错,请老师们帮帮忙

[复制链接]
跳转到指定楼层
1#
发表于 2014-7-30 10:17:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xiaowuo2 于 2014-7-30 10:18 编辑

Dim i As Long
    Dim Expath As String '设置路径变量
    Expath = CurrentProject.Path & "\导出的表\购进调入\" & Format(Date, "YYYYMM") '定义路径
    If Dir(Expath, vbDirectory) <> "" Then '如果未创建该目录,则
    Else
        MsgBox ("请注意,导出后的报表将保存在" & Expath & "目录下"), vbInformation, "提醒"
        MkDir Expath '创建目录
    End If
    For i = 1 To CurrentProject.AllReports.Count '统计数据库目录内有多少个报表,然后执行下面的导出所有报表到指定目录下,并生成指定目录名称与文件名称
        DoCmd.OutputTo acReport, CurrentProject.AllReports(i - 1).Name, "SnapshotFormat(*.snp)", Expath & "\" & [Combo88] & CurrentProject.AllReports(i - 1).Name & Format(Date, "YYYYMM") & ".snp", False, "", 0
    Next i
    If MsgBox("文件导出成功,保存在" & Expath & "目录下,按【是】打开该目录查看,按【否】取消查看", vbYesNo + 64, "提醒") = vbNo Then
       '按否无任何操作即可。
    Else
       Shell "explorer.exe """ & Expath & """", vbNormalFocus '打开导出的表目录,供操作员及时查看。
    End If


老师,这段代码,我想解决以下两个问题:

问题1:程序运行时,会提示这句代码MkDir Expath出错,调试后发现是上面蓝色代码处的二层目录"购进调入"无效,不知该如何修改?

问题2:将指定的6个报表(购进调入报纸报表、购进调入非出版物报表、购进调入教辅报表、购进调入期刊报表、购进调入文教报表、购进调入音像报表)导出,而不是将所有报表导出,因为我还有一些报表不需要导出,应该怎样改?

请老师们帮帮忙,谢谢啦


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

点击这里给我发消息

2#
发表于 2014-7-30 10:23:19 | 只看该作者
目录要一层一层建立的

点评

老师能帮忙解决一下吗,特别是问题2,谢谢啦  发表于 2014-7-30 10:26
3#
 楼主| 发表于 2014-7-30 10:46:29 | 只看该作者
按盗梦老师的提示,用下面的代码,解决第一个问题,第二个问题期待老师们再次帮忙:

    Dim i As Long
    Dim Expath As String '设置第一层路径变量
    Dim Expath2 As String '设置第二层路径变量
   
    Expath = CurrentProject.Path & "\导出的表\购进调入\" '定义第一层路径
    Expath2 = Expath & Format(Date, "YYYYMM") '定义第二层路径
   
    If Dir(Expath, vbDirectory) <> "" Then '如果未创建该目录,则
    Else
        MsgBox ("请注意,导出后的报表将保存在" & Expath & "目录下"), vbInformation, "提醒"
        MkDir Expath '创建第一层目录,因为MkDir无法同时创建两个目录,故要分开一个一个创建
        MkDir Expath2 '创建第二层目录,因为MkDir无法同时创建两个目录,故要分开一个一个创建
    End If
    For i = 1 To CurrentProject.AllReports.Count '统计数据库目录内有多少个报表,然后执行下面的导出所有报表到指定目录下,并生成指定目录名称与文件名称
        DoCmd.OutputTo acReport, CurrentProject.AllReports(i - 1).Name, "SnapshotFormat(*.snp)", Expath2 & "\" & [Combo88] & CurrentProject.AllReports(i - 1).Name & Format(Date, "YYYYMM") & ".snp", False, "", 0
    Next i
    If MsgBox("文件导出成功,保存在" & Expath2 & "目录下,按【是】打开该目录查看,按【否】取消查看", vbYesNo + 64, "提醒") = vbNo Then
       '按否无任何操作即可。
    Else
       Shell "explorer.exe """ & Expath2 & """", vbNormalFocus '打开导出的表目录,供操作员及时查看。
    End If

点击这里给我发消息

4#
发表于 2014-7-30 10:51:56 | 只看该作者
xiaowuo2 发表于 2014-7-30 10:46
按盗梦老师的提示,用下面的代码,解决第一个问题,第二个问题期待老师们再次帮忙:

    Dim i As Long
...

既然知道导出,你直接更改 CurrentProject.AllReports(i - 1).Name 为指定报表名即可。6个报表写6次,也可以把要导出的报表名记录在表中,直接读取表中记录的报表名字也行
5#
 楼主| 发表于 2014-7-30 10:54:28 | 只看该作者
盗梦 发表于 2014-7-30 10:51
既然知道导出,你直接更改 CurrentProject.AllReports(i - 1).Name 为指定报表名即可。6个报表写6次,也 ...

嗯,最早的方法就是写6行代码,分别导出他们,有没有简炼的代码,我原先用的是:、
    'DoCmd.OutputTo acReport, "文教报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\文教报表.snp", False, "", 0
    'DoCmd.OutputTo acReport, "教辅报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\教辅报表.snp", False, "", 0
    'DoCmd.OutputTo acReport, "期刊报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\期刊报表.snp", False, "", 0
    'DoCmd.OutputTo acReport, "报纸报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\报纸报表.snp", False, "", 0
    'DoCmd.OutputTo acReport, "音像报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\音像报表.snp", False, "", 0
    'DoCmd.OutputTo acReport, "非出版物报表", "SnapshotFormat(*.snp)", "F:\(20140708最新)按分类自动汇总结帐\导出的表\非出版物报表.snp", False, "", 0
6#
发表于 2014-7-30 11:53:13 | 只看该作者
xiaowuo2 发表于 2014-7-30 10:54
嗯,最早的方法就是写6行代码,分别导出他们,有没有简炼的代码,我原先用的是:、
    'DoCmd.OutputTo ...

把6个导出写成宏,然后加入:
docmd.RunMacro "导出报表"
7#
发表于 2014-7-30 12:39:46 | 只看该作者
xiaowuo2 发表于 2014-7-30 10:54
嗯,最早的方法就是写6行代码,分别导出他们,有没有简炼的代码,我原先用的是:、
    'DoCmd.OutputTo ...

多次一举,将数据放在一张表中,用一个分类字段区别不就完事了。
8#
 楼主| 发表于 2014-7-30 15:25:18 | 只看该作者
todaynew 发表于 2014-7-30 12:39
多次一举,将数据放在一张表中,用一个分类字段区别不就完事了。

老师所言极是,呵呵,当时制作时偷懒,现在麻烦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-21 00:35 , Processed in 0.087317 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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