Office中国论坛/Access中国论坛

标题: CurrentProject.Path语句出错,请老师们帮帮忙 [打印本页]

作者: xiaowuo2    时间: 2014-7-30 10:17
标题: CurrentProject.Path语句出错,请老师们帮帮忙
本帖最后由 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个报表(购进调入报纸报表、购进调入非出版物报表、购进调入教辅报表、购进调入期刊报表、购进调入文教报表、购进调入音像报表)导出,而不是将所有报表导出,因为我还有一些报表不需要导出,应该怎样改?

请老师们帮帮忙,谢谢啦



作者: 盗梦    时间: 2014-7-30 10:23
目录要一层一层建立的
作者: xiaowuo2    时间: 2014-7-30 10:46
按盗梦老师的提示,用下面的代码,解决第一个问题,第二个问题期待老师们再次帮忙:

    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

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

    Dim i As Long
...

既然知道导出,你直接更改 CurrentProject.AllReports(i - 1).Name 为指定报表名即可。6个报表写6次,也可以把要导出的报表名记录在表中,直接读取表中记录的报表名字也行
作者: xiaowuo2    时间: 2014-7-30 10:54
盗梦 发表于 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

作者: roych    时间: 2014-7-30 11:53
xiaowuo2 发表于 2014-7-30 10:54
嗯,最早的方法就是写6行代码,分别导出他们,有没有简炼的代码,我原先用的是:、
    'DoCmd.OutputTo ...

把6个导出写成宏,然后加入:
docmd.RunMacro "导出报表"

作者: todaynew    时间: 2014-7-30 12:39
xiaowuo2 发表于 2014-7-30 10:54
嗯,最早的方法就是写6行代码,分别导出他们,有没有简炼的代码,我原先用的是:、
    'DoCmd.OutputTo ...

多次一举,将数据放在一张表中,用一个分类字段区别不就完事了。
作者: xiaowuo2    时间: 2014-7-30 15:25
todaynew 发表于 2014-7-30 12:39
多次一举,将数据放在一张表中,用一个分类字段区别不就完事了。

老师所言极是,呵呵,当时制作时偷懒,现在麻烦了




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3