2008-09-27 41 views
34

¿Alguien sabe cómo modificar una especificación de importación existente en Microsoft Access 2007 o 2010? En versiones anteriores solía haber un botón Avanzado que se presentaba durante el asistente de importación que le permitía seleccionar y editar una especificación existente. Ya no veo esta función, pero espero que aún exista y que haya sido trasladada a otra parte.¿Cómo puedo modificar una especificación de importación de Microsoft Access 2007 o 2010 guardada?

+0

Otro elemento útil eliminado por la oficina 2007 – Brettski

Respuesta

33

Soy capaz de utilizar esta característica en mi máquina usando MS Access 2007.

  • En la cinta, seleccionar datos externos
  • Seleccione el "Archivo de texto" opción
  • Esto muestra el Obtener externa Asistente de datos
  • Especifique la ubicación del archivo que desea importar
  • Haga clic en Aceptar. Muestra el "Asistente de importación de texto"
  • En la parte inferior de esta pantalla de diálogo está el botón Avanzado al que hizo referencia
  • Al hacer clic en este botón, debe mostrar la pantalla Importar especificación y seleccionar y modificar una especificación de importación existente.

Por lo que su valor, estoy usando Access 2007 SP1

13

No creo que haya una manera de soporte directo. Sin embargo, si está desparato, en Opciones de navegación, seleccione para mostrar los objetos del sistema. Luego, en su lista de tablas, aparecerán las tablas del sistema. Dos tablas son de interés aquí: MSysIMEXspecs y MSysIMEXColumns. Podrás editar información de importación y exportación. ¡Buena suerte!

+0

Esas tablas no son editables por el usuario. Solo pueden ser editados a través de Jet. –

+2

David, puedo editar las tablas MSysIMEXColumns y MSysIMExSpecs para nombrar campos y cambiar tipos. No lo probé exhaustivamente, y obviamente no lo soporté, pero SON editables. – Knox

+0

Esto debe ser algo que ha cambiado en A2K7, ya que no tengo una versión de Access que me permita editarlos directamente (A97, A2K2, A2K3). –

6

Tim Lentine's answer parece ser cierto incluso en la versión completa. Solo hay otra cosa que me gustaría mencionar.

Si completa su importación sin entrar en "Avanzado ..." y guarda la especificación, pero guarda la importación para volver a utilizarla al final del asistente (nueva función AFAIK), no podrá ir volver y editar esa especificación Está integrado en la "Importación guardada". Esto puede ser a lo que Knox se refería.

Puede, sin embargo, hacer una obra parcial alrededor:

  1. Importar un nuevo archivo (o el mismo de nuevo) pero,
  2. Esta vez optan por añadir, en lugar de hacer una nueva
  3. Haga clic en Aceptar.
  4. Vaya a "avanzado" Todos los encabezados de columna y tipos de datos estarán allí.
  5. Ahora puede hacer los cambios que necesita y guardar las especificaciones dentro de ese cuadro de diálogo. A continuación, cancele la importación (eso no es lo que quería de todos modos, ¿no?)
  6. Puede usar esa especificación para cualquier importación posterior. No es una solución completa, pero ahorra parte del trabajo.
+0

También vea: http://luke.gedeon.name/blog/2009/05/edit-saved-import-steps-access-2007-partial-workaround.html – waanders

+1

en la cola de finales de 2012 esto aparentemente sigue siendo el único método, con Office 2010. Gracias por documentar la solución. –

5

A continuación se detallan las tres funciones que puede utilizar para modificar y utilizar la especificación de importación de MS Access 2010. El tercer submarino cambia el nombre de una especificación de importación existente. El segundo sub le permite cambiar cualquier texto xml en la especificación de importación. Esto es útil si necesita cambiar los nombres de las columnas, los tipos de datos, agregar columnas, cambiar la ubicación del archivo de importación, etc. En esencia, cualquier cosa que quiera modificar para una especificación existente.El primer Sub es una rutina que le permite llamar a una especificación de importación existente, modificarla para un archivo específico que está intentando importar, importar ese archivo y luego eliminar la especificación modificada, manteniendo la "plantilla" de importación de la especificación inalterada e intacta. Disfrutar.

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 
+0

Todo lo que quería hacer era hacer que la ruta fuera dinámica, pero puedo afirmar que el segundo sub funciona muy bien en Windows10, Office2016 (reemplazando 'strFind' con" c: \ dynamicname.txt ",' strRepl' con la ubicación real, y luego reemplazándolo antes de configurar 'mySpec' a nada). – CWilson

2

Cuando deseo examinar o cambiar una especificación de importación/exportación, consulto las tablas en MS Access donde está definida la especificación.

SELECT 
    MSysIMEXSpecs.SpecName, 
    MSysIMexColumns.* 
FROM 
    MSysIMEXSpecs 
    LEFT JOIN MSysIMEXColumns 
    ON MSysIMEXSpecs.SpecID = MSysIMEXColumns.SpecID 
WHERE 
    SpecName = 'MySpecName' 
ORDER BY 
    MSysIMEXSpecs.SpecID, MSysIMEXColumns.Start; 

También puede utilizar una instrucción UPDATE o INSERT para alterar las columnas existentes o insertar y añadir nuevas columnas a una especificación existente. Puede crear especificaciones completamente nuevas usando esta metodología.

1

¿Por qué es tan complicado?

Sólo echa Objetos de sistema en Access-Opciones/Base de datos activa/Opciones de navegación/Mostrar objetos del sistema

abiertos "MSysIMEXSpecs" tabla y cambie de acuerdo a sus necesidades - es fácil de leer ...

+1

Esto es lo mismo que la respuesta de 2008 de Knox. – Smandoli

0

Tim La respuesta de Lentine funciona SI tienes guardadas tus especificaciones. Su pregunta no especificó eso, solo indicó que había importado los datos. Su método no salvaría sus especificaciones de esa manera.

La manera de guardar las especificaciones de esa importación actual es volver a abrir la importación, presionar "apend" y eso le permitirá usar su configuración de importación actual que MS Access recogió. (Esto es útil si su deseo de mantener las especificaciones de importación desde un formato Excel que trabajó antes de importar en MS ACCESS.)

vez que esté en la opción apend, utilice las instrucciones de Tim, que está utilizando el opción avanzada y "Guardar como". Desde allí, simplemente haga clic en cancelar, y ahora puede importar cualquier otro dato similar a varias tablas, etc.

+0

No se está refiriendo a Luke Gedeon, y esta respuesta está complementada con la respuesta de Tim Lentine y agrega información adicional que no se proporcionó anteriormente. Smandoli, parece que vas por ahí dejando caer puntos útiles sin ninguna razón. –

0

Acabo de descubrir un error evidente en toda la configuración de Importar/XML guardado en Access. También frustrado por la rigidez del sistema de Importación Guardada, creé formularios y escribí código para separar el XML en el que están almacenadas las especificaciones de Importación Guardada, hasta el punto que pude usar esta herramienta para crear una Importación Guardada desde cero a través de un código examen de un libro de Excel de origen.

Lo que descubrí es que, mientras Access importa correctamente una hoja de trabajo por modificaciones de configuraciones predeterminadas por el usuario (por ejemplo, le gusta tomar cualquier columna con un nombre de encabezado que termine con "ID" y convertirla en una campo indexado en la tabla resultante, pero puede cancelar esto durante el proceso de importación), y aunque también crea correctamente XML de acuerdo con los cambios del usuario, si deja caer la tabla y utiliza la importación guardada para volver a importar la hoja de trabajo, ignora la especificación de importación XML y vuelve a utilizar sus propios valores predeterminados inventados, al menos en el caso de las columnas "ID".

Puede probar esto por su cuenta: importe una hoja de cálculo Excel con al menos un nombre de encabezado de columna que termine con "ID" ("ID de pedido", "ID de usuario" o simplemente "ID"). Durante el proceso, asegúrese de establecer "Indexado" en No para esas columnas. Ejecute la importación y marque "Guardar pasos de importación" en la ventana de diálogo final. Si inspecciona el diseño de la tabla resultante, verá que no hay índice en los campos en cuestión. A continuación, elimine la tabla, encuentre la importación guardada y vuelva a ejecutarla. Esta vez, esos campos se establecerán como indexados en el diseño de la tabla, aunque el XML aún dice que no hay índice.

Estaba tirando de mi cabello hasta que descubrí lo que estaba pasando, comparando el XML que construí desde cero con ejemplos creados a través de la herramienta de acceso.

+0

PS el error parece ser solo con la opción de índice en columnas con el sufijo "ID". The Saved Import guardó un índice que coloqué en un campo de texto. Pero cuando hay un nombre de campo que termina con ID, parece ignorar la configuración del índice en la especificación XML. –

0

Otra gran opción es el complemento gratuito V-Tools para Microsoft Access. Entre otras herramientas útiles, tiene una forma de editar y guardar las especificaciones de Importar/Exportar.

enter image description here

enter image description here

Nota: Desde la versión 1.83, hay un error en la enumeración de las páginas de código en Windows 10. (Al parecer debido a una función API falta/cambiado en Windows 10) El las herramientas aún funcionan muy bien, solo necesita comentar algunas líneas de código o pasarlo en la ventana de depuración.

Esto ha sido un verdadero salvavidas para mí en la edición de una especificación de importación compleja para nuestros pedidos en línea.

Cuestiones relacionadas