1

我已经在 MS Excel 中绘制了一个导入规范。

但是,当我尝试将其复制并粘贴到 MS Access 中的“高级文本文件导入”向导中时,它将验证输入且没有错误,仅在我到达最后一步时提供一个。

有没有人遇到过这个问题,他们有解决办法吗?我可以手动输入规范,但这将非常耗时,因为有 200 多个字段。

谢谢。

4

2 回答 2

1

根据 Microsoft 的说法,您无法将规范从一个数据库复制到另一个数据库。如果禁止导入/导出规范的 Access-Access 传输,那么 Excel-Access 传输也不可用是有道理的。

但是,规范存储在 MS Access 中的表中,特别是 MSysImexSpecs 和 MSysImexColumns 表。根据您用于 MS Access 的版本,查看这些隐藏表的方式会有所不同。Google 可以快速引导您找到它们。

一些VBA编码可以通过读取源数据库中MSysImexSpecs的内容,将数据插入到目标表中的MSysImexSpecs中来实现规范的Access-Access传递。

因为 Excel 不使用表格,所以老实说,我不相信有比在 MS Access 中重建规范更快的解决方案。

下面是我今天找到的导入/导出规范的访问访问迁移的代码示例。如果您知道 ImEx 规范如何存储在 Excel 中(可能在集合中?),那么可以更改以下代码以从 Excel 集合迁移到 Access 表。

Sub GetSpecs()
Dim accApp As Object
Dim SourceDBName As String
Dim DbPath As String
Dim CurrDB As String

SourceDBName = "C:\SourceDB.mdb"
DbPath = "C:\TargetDBPath\"  'Make sure about last slash

Set accApp = CreateObject("Access.Application")
CurrDB = Dir(DbPath & "*.mdb", vbNormal)
Do Until Len(CurrDB) = 0
    If Not DbPath & CurrDB = SourceDBName Then
        accApp.OpenCurrentDatabase DbPath & CurrDB
        On Error GoTo errhandler
        accApp.CurrentDb.TableDefs.Delete "MSysIMEXSpecs"
        accApp.DoCmd.TransferDatabase acImport, "Microsoft Access", SourceDBName, acTable, "MSysIMEXSpecs", "MSysIMEXSpecs"
        accApp.CloseCurrentDatabase
        CurrDB = Dir()
    End If
Loop
accApp.Quit
MsgBox "Done", vbOKOnly + vbInformation, "Error"
Exit Sub

errhandler:
If Err = 3265 Then
    Resume Next
Else
    MsgBox Err & " - " & Err.Description, vbOKOnly + vbExclamation, "Error"
    If Not accApp Is Nothing Then accApp.Quit
End If
End Sub

来源: http ://www.mrexcel.com/forum/showthread.php?58094-Import-Specifications

于 2012-07-05T18:54:42.397 回答
1

突出显示导入例程表的上角并粘贴(续 V)该表必须采用相同的格式,因此最好的方法是通过突出显示导入规范(规范表的左上角)来复制现有的导入规范和 cntl C 并粘贴到 excel 中,调整到您的新规范并重新粘贴,突出显示导入例程表的上角并粘贴(续 V)

经过多年认为访问的导入规范方面是荒谬的,我今天发现了这一点。

于 2013-11-12T15:34:31.350 回答