如何从excel复制导入规范以进行访问?

时间:2012-07-05 17:53:29

标签: excel ms-access

我已经在MS Excel中映射了导入规范。

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

根据Microsoft的说法,您无法将规范从一个数据库复制到另一个数据库。如果禁止访问 - 访问规范的Access-Access传输,则Excel-Access传输也不可用。

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

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

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

下面是我今天发现的导入/导出规范的Access-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

答案 1 :(得分:1)

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

在经过多年的思考后,我已经发现了这一点,访问规范方面的访问是荒谬的。