如何修改已保存的Microsoft Access 2007或2010导入规范?

40 ms-access

有谁知道如何修改Microsoft Access 2007或2010中的现有导入规范?在旧版本中,导入向导期间出现了一个高级按钮,允许您选择和编辑现有规范.我不再看到这个功能,但希望它仍然存在,并且刚刚移动到其他地方.

Tim*_*ine 40

我可以使用MS Access 2007在我的机器上使用此功能.

  • 在功能区上,选择"外部数据"
  • 选择"文本文件"选项
  • 这将显示"获取外部数据向导"
  • 指定要导入的文件的位置
  • 单击确定.这将显示"导入文本向导"
  • 在此对话框屏幕的底部是您引用的"高级"按钮
  • 单击此按钮应显示"导入规范"屏幕,并允许您选择和修改现有导入规范.

值得一提的是,我正在使用Access 2007 SP1


Kno*_*nox 15

我不相信有直接支持的方式.但是,如果您是绝望的,则在导航选项下,选择显示系统对象.然后在表格列表中,将出现系统表格.这里有两个表:MSysIMEXspecs和MSysIMEXColumns.您将能够编辑导入和导出信息.祝好运!

  • 您*可以使用Access 2007及更早版本中的查询编辑MSysIMEXColumns和MSysIMEXSpecs表.尝试这样的事情:UPDATE MSysIMEXColumns SET FieldName ="LastName"WHERE FieldName ="Field4"AND SpecID = 5 (4认同)
  • 大卫,我可以编辑MSysIMEXColumns和MSysIMExSpecs表来命名字段和更改类型.没有经过我的广泛测试,显然没有支持,但它们是可编辑的. (2认同)
  • 先生,您今天赢得了互联网.非常感谢你的提示!! 我正试图找到遗留访问数据库的方法,如果没有这个,那么进口数据需要更长的时间!再次感谢!! (2认同)

小智 7

即使在完整版本中,Tim Lentine的答案似乎也是如此.还有一件事我想提一下.

如果您完成导入而不进入"高级..."并保存规范,但您确实在导向结束时保存导入以供重复使用(新功能AFAIK),您将无法返回并编辑规范.它内置于"已保存的导入"中.这可能是诺克斯所指的.

但是,您可以进行部分解决:

  1. 导入一个新文件(或重新导入同一个文件),但是,
  2. 这次选择追加,而不是制作新的
  3. 单击确定.
  4. 进入"高级"所有列标题和数据类型都将存在.
  5. 现在,您可以进行所需的更改并将规范保存在该对话框中.然后取消导入(这不是你想要的,对吧?)
  6. 然后,您可以将该规范用于任何进一步的导入.它不是一个完整的解决方案,但可以节省一些工作.


小智 5

以下是可用于更改和使用MS Access 2010导入规范的三个函数.第三个子更改现有导入规范的名称.第二个子允许您更改导入规范中的任何xml文本.如果您需要更改列名,数据类型,添加列,更改导入文件位置等,这非常有用.实质上您想要修改现有规范.第一个Sub是一个例程,它允许您调用现有的导入规范,为您尝试导入的特定文件修改它,导入该文件,然后删除修改后的规范,保持导入规范"模板"不变且完好无损.请享用.

Public Sub MyExcelTransfer(myTempTable As String, myPath As String)
On Error GoTo ERR_Handler:
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Dim x As Integer

    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTempTable)
    CurrentProject.ImportExportSpecifications.Add "TemporaryImport", mySpec.XML
    Set myNewSpec = CurrentProject.ImportExportSpecifications.Item("TemporaryImport")

    myNewSpec.XML = Replace(myNewSpec.XML, "\\MyComputer\ChangeThis", myPath)
    myNewSpec.Execute
    myNewSpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
    exit_ErrHandler:
    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
Exit Sub    
ERR_Handler:
    MsgBox Err.Description
    Resume exit_ErrHandler
End Sub

Public Sub fixImportSpecs(myTable As String, strFind As String, strRepl As String)
    Dim mySpec As ImportExportSpecification    
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTable)    
    mySpec.XML = Replace(mySpec.XML, strFind, strRepl)
    Set mySpec = Nothing
End Sub


Public Sub MyExcelChangeName(OldName As String, NewName As String)
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(OldName)    
    CurrentProject.ImportExportSpecifications.Add NewName, mySpec.XML
    mySpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)