【问题标题】:How to update an existing access table如何更新现有的访问表
【发布时间】:2020-07-13 18:17:33
【问题描述】:

我创建了一个 Excel 宏,员工每周都会在其中更新它。 从中,我创建了一个 Access 表单,员工可以在其中浏览文件并在 Access 表中更新它,以创建一个数据库。

但是我遇到了一个问题,当通过 Access 表单更新文件时,正在创建一个新表而不是更新。

因此,我最终得到了 4 个不同的表,而不是一个数据库

我的模块如下:

Public Sub ImportexcelSpreadsheet(filename As String, tablename As String)
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, tablename, filename, True, "Database!"
    MsgBox " Importation Database done", vbInformation

End Sub

我的浏览btn如下:

Private Sub btnBrowse_Click()

    Dim diag As Office.FileDialog
    Dim item As Variant

    Set diag = Application.FileDialog(msoFileDialogFilePicker)
    diag.AllowMultiSelect = False
    diag.Title = "please select an excel spreadhseet"
    diag.Filters.Clear
    diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx, *.xlsm"

    If diag.Show Then
        Me.txtFileName = diag.SelectedItems(1)
    Else
    MsgBox "This is not a excel spreasheet"
    End If
End Sub

我的导入文件如下:

Private Sub Import_Click()

    Dim FSO As New FileSystemObject

    If FSO.FileExists(Me.txtFileName) Then

        Module1.ImportexcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
    Else
        MsgBox "the file you tried to import was not found"
    End If

End Sub

代码运行正常。 但我想要一个通用数据库,而不是每周一个表。

【问题讨论】:

    标签: excel vba ms-access


    【解决方案1】:

    解决此问题的最简单方法是将其导入临时表并从那里开始工作。像这样的东西(未经测试,但我希望这个想法很清楚):

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "temptable", filename, True, "Database!"
    CurrentDb.Execute "INSERT INTO " & tablename & " SELECT * FROM temptable"
    CurrentDb.TableDefs.Delete "temptable"
    

    【讨论】:

    • 谢谢 Sam 这很有用,我是 VBA 的初学者,没那么容易。但是我有一个问题: Insert Into 语句中有语法错误,我不确定它是什么 CurrentDb.Execute "INSERT INTO & temptable" & "Select * FROM temptable" Thnks
    • @Sophie,.Execute 之后的部分应该是一个 SQL 字符串,它将临时表中的行附加到您预先存在的表中。您将双引号放在错误的位置,使其成为无效字符串。仔细检查所有"& 的位置。 & 将字符串粘合在一起 - 连接。
    【解决方案2】:

    表名由你设置为短文件名

    ImportexcelSpreadsheet Me.txtFileName, FSO.GetFileName(Me.txtFileName)
    

    您应该将其中一个表重命名为重要名称“MyBigTable”

    然后

    ImportexcelSpreadsheet Me.txtFileName, MyBigTable
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      • 1970-01-01
      相关资源
      最近更新 更多