Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 从Access中保存excel工作簿的简单代码可以在一台计算机上工作,但不能在另一台计算机上工作?_Ms Access_Vba_Export To Excel - Fatal编程技术网

Ms access 从Access中保存excel工作簿的简单代码可以在一台计算机上工作,但不能在另一台计算机上工作?

Ms access 从Access中保存excel工作簿的简单代码可以在一台计算机上工作,但不能在另一台计算机上工作?,ms-access,vba,export-to-excel,Ms Access,Vba,Export To Excel,好的,我搜索了又搜索,没有找到答案。我有一个非常简单的代码,可以将某些表的内容导出到excel工作簿中,然后将工作簿保存在与数据库相同的目录中。我的代码在我的计算机上运行正常,但当我尝试在同事的计算机上加载数据库时,表导出正常,但excel工作簿不会保存为给定名称。它只是给出提示并询问是否要保存Book1.xlsx。如果我禁用消息,它根本不会保存它。他的curDir不同于我的curDir,但我检查了一下,工作簿不在其中,或者数据库是在Access 2013中创建的,两台计算机都安装了Access

好的,我搜索了又搜索,没有找到答案。我有一个非常简单的代码,可以将某些表的内容导出到excel工作簿中,然后将工作簿保存在与数据库相同的目录中。我的代码在我的计算机上运行正常,但当我尝试在同事的计算机上加载数据库时,表导出正常,但excel工作簿不会保存为给定名称。它只是给出提示并询问是否要保存Book1.xlsx。如果我禁用消息,它根本不会保存它。他的curDir不同于我的curDir,但我检查了一下,工作簿不在其中,或者数据库是在Access 2013中创建的,两台计算机都安装了Access 2013,尽管第二台不工作的计算机也安装了Access和Excel 2010。但工作簿将在Excel 2013中打开。我尝试将其更改为.xls文件,并在saveas命令中指定文件格式编号,但没有成功。我包括在我的计算机上工作的代码。我相信这很简单,请帮忙。哦,我应该说,它第一次工作很好,但现在它不工作了,我删除了第一份,所以我知道它不是不想覆盖,我只是在拔头发

    Public Function DeleteExcessPendragonRecords()
    On Error GoTo DeleteExcessPendragonRecords_err

    Dim strSQL1 As String
    Dim strSQL2 As String
    Dim db As DAO.Database
    Dim rs1 As DAO.Recordset
    Dim rs2 As DAO.Recordset
    Dim oXL As Excel.Application
    Dim oWB As Excel.Workbook
    Dim osheet As Excel.Worksheet
    Dim strSQLlinkedtables As String
    Dim rs3 As DAO.Recordset
    Dim currdirpath As String

    currdirpath = CurDir()
    'Exporting all tables into Excel Spreadsheet

    Set db = CurrentDb

    DoCmd.Hourglass True
    Call RefreshSharePointLinks
    strSQLlinkedtables = "SELECT tbl_PendragonTableNames.LocalLink FROM tbl_PendragonTableNames WHERE tbl_PendragonTableNames.ID < 15"

    Set rs1 = db.OpenRecordset(strSQLlinkedtables)
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True
    Set oWB = oXL.Workbooks.Add

   On Error Resume Next

   Do Until rs1.EOF
        oWB.Sheets.Add
        Set osheet = oWB.ActiveSheet
        osheet.Name = rs1.Fields(0)
        On Error Resume Next
        Dim Linkedtable As String
        Linkedtable = rs1.Fields(0)
        Set rs2 = db.OpenRecordset(Linkedtable)
        For i = 0 To rs2.Fields.Count - 1

            osheet.Cells(1, i + 1).value = rs2.Fields(i).Name

        Next i

            osheet.Range("A2").CopyFromRecordset rs2

        rs1.MoveNext
    Loop
    oWB.SaveAs currdirpath & "\PendragonBackup_" & Format(Date, "yyyymmdd") & ".xlsx"
    rs2.Close
    rs1.Close
    oWB.Close
    oXL.Close
    oXL.Quit
    db.Close


    Set oWB = Nothing
    Set oXL = Nothing
    Set rs2 = Nothing
    Set rs1 = Nothing
    Set db = Nothing
    'Code continues after this, but this is the relevant part
而不是

currdirpath=CurDir

尝试:


currdirpath=CurrentProject.Path

是否抛出任何错误?我看到您正在使用On Error Resume Next,我倾向于回避它,因为它隐藏了问题。我建议将调试设置更改为在所有错误上中断并手动测试。如果抛出错误,请提供错误和生成错误的语句。Hi。是的,下一个错误恢复主要针对最终用户。我通常在测试时对它进行注释。我通过添加Dim WBActive作为对象,设置WBActive=Active工作簿,然后设置WBActive.SaveAs——上面给出的名称,使它能够正常工作。但是,如果代码连续快速运行,我会收到一个错误。谢谢,我最终更改了代码的这一部分,以指定一个特定的路径,但它仍然没有按照编写的那样工作。我在上面的注释中指定了一些更改,但正如我在上面所说的,如果代码连续快速运行,我会得到错误91