【问题标题】:Import append vba MS-Access导入附加 vba MS-Access
【发布时间】:2016-05-17 13:05:33
【问题描述】:

需要有关 Access VBA 的帮助 我正在尝试将电子表格从 excel 导入访问。导入后,它将被附加到另一个表中,并且导入表将被删除,以便我可以导入新的电子表格。但是,我在追加时出现错误,我需要追加整个表格,因为我并不总是知道电子表格中的标题以及它们的数量。 请帮忙。下面是我一直在处理的代码。

模块-

Option Compare Database

Function selectFile()
Dim fd As FileDialog, fileName As String

On Error GoTo ErrorHandler

Set fd = Application.FileDialog(msoFileDialogFilePicker)

fd.AllowMultiSelect = False

If fd.Show = True Then
    If fd.SelectedItems(1) <> vbNullString Then
        fileName = fd.SelectedItems(1)
    End If
Else
    'Exit code if no file is selected
    End
End If

'Return Selected FileName
selectFile = fileName

Set fd = Nothing

Exit Function

ErrorHandler:
Set fd = Nothing
MsgBox "Error " & Err & ": " & Error(Err)

End Function

VBA -

Private Sub cmdImportNoDelete_Click()
'Unset warnings
DoCmd.SetWarnings False

'Import spreadsheet
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Import", selectFile, True

'SQL append statement, Needs to append entire table (must be able to append multiply table with different headers
DoCmd.RunSQL "INSERT INTO Tbl_ImportDump * FROM Import"

'SQL delete Table
DoCmd.DeleteObject acTable, "Import"


DoCmd.SetWarnings True
End Sub

【问题讨论】:

  • 您面临的基本问题是Tbl_ImportDump 和Import 具有不同的字段集(“标题”)...一个表包含另一个表中不存在的字段,或者两者都包含具有相同数据的字段,但字段名称和/或数据类型不完全匹配?如果这是问题所在,向我们展示您用于选择 Excel 文件的代码是没有帮助的。
  • HansUp 这些工作表大部分具有相似的字段名称,但也有一些具有新字段或不同名称的字段。我想将所有这些转储到一个表中,然后我可以编写一些 qry 来识别字段并创建标准命名约定。

标签: ms-access import vba append


【解决方案1】:

Tbl_ImportDump 必须存在。如果还没有,请创建它:

DoCmd.RunSQL _
    "CREATE TABLE Tbl_ImportDump (Col1 Col1DataType, Col2 Col2DataType, etc)"

然后在导入您的电子表格后(作为表 Import,正如您已经完成的那样),获取 Import 表中的列名,并将它们放入插入语句中:

dim ImportCols as String: ImportCols = ""
dim ii as long
dim rs as Recordset

rs.OpenRecordset "SELECT TOP 1 * FROM Import"
for ii = 0 to 2
    ImportCols = ImportCols & "," & rs.Fields(0).Name
next
importCols = mid(importCols, 2)

DoCmd.RunSQL _
    "INSERT INTO Tbl_ImportDump (Col1, Col2, Col3) " & _
    "SELECT " & importCols & " FROM Import"

【讨论】:

  • John 我试过了,但我遇到了同样的问题。 Tbl_ImportDump 当前没有字段,当我尝试“插入”时,它给了我一个错误 3127,语句包含以下未知字段。如果它们不是他们的,我希望“插入”会添加新字段。你知道怎么解决吗?
  • 简短的回答是你不能这样做 - 但是我现在不确定你正在尝试什么,因此我现在无法回答。请在您的帖子中添加 Tbl_ImportDump 的当前结构,以及它已经包含的示例数据行 - 假设它存在(如果它没有这样说);第二,提供关于 Import 表中存在哪些列/数据的想法 - 并在这里给我留言,我的回答是说你已经完成了,所以 Stack Overflow 会通知我。
  • John,我收到了来自不同用户的几十个电子表格,其中应该是相似的信息;我的意思是一个用户将有一个电子表格,其标题为 Date|Name|Loss,而另一个用户可以将标题标记为 Date|First_Name|Recovery。所以标题标题不同,但它们的含义相同。所以我制作了一个表格,其中我有所有可能与用户不同的命名约定以及它应该转换为什么。所以我想导入这些电子表格并将这些标题转换为标准名称约定。我希望我的解释有帮助
  • John 当我运行代码时出现错误 91“对象变量或未设置块变量”指向 rs.OpenRecordset“SELECT TOP 1 * FROM Import”
  • 所以我在想是否有更好的方法。因为我有 Tbl_Standization 列 UserHeader |标准页眉。我是否能够在导入期间查看与“Userheader”匹配的标头并将其转换为与 Standardheader 相关的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多