Vba 从MS excel向空白访问表输入数据

Vba 从MS excel向空白访问表输入数据,vba,ms-access,Vba,Ms Access,我有一些VBA代码,可以创建一个新的空白表,我要做的是导入一个excel表,将第一行作为字段名,然后将工作表的其余部分作为字段中的值导入 我需要预先定义字段名才能工作吗 Private Sub Command11_Click() Dim FilePath As String FilePath = OpenFile() 'Create Temp Table DoCmd.RunSQL ("CREATE TABLE Temp_Import_Table") Do

我有一些VBA代码,可以创建一个新的空白表,我要做的是导入一个excel表,将第一行作为字段名,然后将工作表的其余部分作为字段中的值导入

我需要预先定义字段名才能工作吗

Private Sub Command11_Click()
    Dim FilePath As String
    FilePath = OpenFile()

    'Create Temp Table
    DoCmd.RunSQL ("CREATE TABLE Temp_Import_Table")
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Temp_Import_Table", FilePath, False


    DoCmd.RunSQL ("DROP TABLE Temp_Import_table")

    MsgBox (FilePath)
End Sub

TransferSpreadSheet命令有一个参数HasFieldName。如果设置为true,则第一行将用作字段名


请参见此处,或单击google上的第一个主题,搜索transferspreadsheet,或在“transferSreadSheet”一词的VBAEditor中点击F1。您无需事先创建表架构,如果表不存在,transferspreadsheet将为您创建表。如果将HasFieldNames指定为True,则Excel中的字段名将作为字段标题导入。如果需要,您只需在运行TransferSpreadsheet之前检查表是否存在,并删除它(如果存在)


如果您确实希望该表在之前存在,则可以在不删除电子表格的情况下传输电子表格一次,并保留该表架构。如果您不在代码中删除它,它将是持久的,后续对TransferSpreadsheet的调用(假设数据适合该结构)应将数据附加到该表中。在这种情况下,您需要首先清除表中的数据。

我已经尝试过了,问题是我根本没有字段,所以我只得到错误“目标表中不存在FirstName”