【问题标题】:Error when transferring table via VBA in Access在 Access 中通过 VBA 传输表时出错
【发布时间】:2021-12-13 15:23:35
【问题描述】:

当我运行它时,我得到运行时错误 3027:“无法更新。数据库或对象是只读的。”

Private Sub Export_Run()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
    If fd.Show = True Then
        If Format(fd.SelectedItems(1)) <> vbNullString Then
            DoCmd.TransferText acExportDelim, , "Export_tbl", fd.SelectedItems(1), False
        End If
    End If    
End Sub

我要导出的表 (Export_tbl) 存在并且是可编辑的(不是只读的),我可以手动导出它而不会出现问题。我猜这可能是我正在使用的机器的问题,有权限还是什么?还是我错误地使用了 filedialog 参考?感谢您的帮助。

【问题讨论】:

  • 目标文件可能已打开,例如在 Excel 中。如果是这种情况,请关闭 Excel,您将能够导出。
  • @OlivierJacot-Descombes 好电话,我没有检查,但在这种情况下,这似乎不是问题......
  • 在导出前尝试删除文件:If Dir(FileToDelete) &lt;&gt; "" Then Kill FileToDelete End If.

标签: ms-access


【解决方案1】:

问题是我未能为要导出的表正确分配完整的文件名——您需要包括文件路径、名称和扩展名(至少在这种情况下,因为我正在尝试导出作为文本/CSV)。以下工作:

Private Sub Export_Run()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)

    If fd.Show = True Then
        If Format(fd.SelectedItems(1)) <> vbNullString Then
            thename = fd.SelectedItems(1) & ".csv"
            DoCmd.TransferText acExportDelim, , "Export_tbl", thename, False
        End If
    End If

End Sub

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多