我已经在MS Excel中映射了导入规范。
当我尝试将其复制并粘贴到MS Access中的“高级文本文件导入”向导中时,它将在没有错误的情况下验证输入,仅在我到达最后一步时提供输入。
有没有人遇到过这个问题,他们有没有解决这个问题?我可以手动输入规范,但由于有200多个字段,这将非常耗时。
感谢。
答案 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)
在经过多年的思考后,我已经发现了这一点,访问规范方面的访问是荒谬的。