vincular varias tabla importar hojas desde datos conectar con automaticamente alimentar actualizar vba ms-access access-vba ms-access-2010

vba - tabla - importar varias hojas de excel a access



Importar diferentes archivos de Excel en tablas de MS Access 2010 automáticamente (3)

Me gustaría importar todos los archivos de Excel (con diferentes datos y columnas) de algún directorio a la base de datos MS Access 2010, creando una nueva tabla para cada archivo. Encontré el código para importar archivos en una sola tabla:

Option Compare Database Option Explicit Function DoImport() Dim strPathFile As String, strFile As String, strPath As String Dim strTable As String Dim blnHasFieldNames As Boolean '' Change this next line to True if the first row in EXCEL worksheet '' has field names blnHasFieldNames = True '' Replace C:/Documents/ with the real path to the folder that '' contains the EXCEL files strPath = "C:/Documents and Settings/myName/My Documents/Access Test/" '' Replace tablename with the real name of the table into which '' the data are to be imported strTable = "tablename" strFile = Dir(strPath & "*.xls") Do While Len(strFile) > 0 strPathFile = strPath & strFile DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames '' Uncomment out the next code step if you want to delete the '' EXCEL file after it''s been imported '' Kill strPathFile strFile = Dir() Loop End Function

Pero necesito crear una nueva tabla cada vez. ¿Es posible en VBA?


Creo que todo lo que necesita hacer es cambiar el nombre de la tabla de destino (el valor de strTable ) cada vez antes de hacer DoCmd.TransferSpreadsheet .

En un comentario, dijiste que quieres que el nombre de la tabla se derive del nombre del archivo del libro de trabajo. Y, cada vez que strFile su ciclo, otra variable ( strFile ) contiene el nombre del archivo. Así que creo que podría quitar la extensión del archivo de ese nombre de archivo y usarlo como el nombre de la tabla de acceso.

Aquí hay un ejemplo de ventana Inmediato que demuestra cómo se puede hacer eso ...

strFile = "foo.xls" strTable = Left(strFile, Len(strFile) - 4) ? strTable foo

Si ese enfoque es adecuado, revise el ciclo en su código VBA como este fragmento de código (no probado) ...

strFile = Dir(strPath & "*.xls") Do While Len(strFile) > 0 strPathFile = strPath & strFile strTable = Left(strFile, Len(strFile) - 4) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames strFile = Dir() Loop


Está bien, no sé si es un problema con mi computadora que no está en la CU de la oficina actual.

http://msdn.microsoft.com/en-us/library/office/ff192475(v=office.14).aspx

Aquí hay un enlace a cómo usar la macro ImportExport. Use para estar en la sección de macro.

Leí que tenías que confiar en la ubicación. Así que probé mi ubicación c: / msdn más la predeterminada para los asistentes.

Todavía no pudo tener la opción de subir.

Traté de crear una especificación para ver si se necesitaba una para la opción de mostrar, sin dados.

Sin embargo, hay un DoCmd.TransferText y DoCmd.TransferSpreadSheet.

Ambos te permitirán importar.

Crea una función Llame a la función desde una macro (RunCode). Otra forma es crear un formulario de menú principal. Tener un botón En el comando click, ejecuta el código.

Dígame si alguna vez obtiene la macro ImportExportData para mostrar. Creo que es un error. Tendré que bajar las últimas actualizaciones acumulativas y volver a intentarlo.


Solía ​​ser un MOS Access 2003. Ahora todos usan 2010 pero muchas cosas no han cambiado.

Cuando realiza una importación o exportación manual, puede guardar el diseño como una especificación.

Este proceso puede ser automatizado por una macro.

Consulte el enlace a continuación para obtener más detalles y pasos.

http://office.microsoft.com/en-us/access-help/run-a-saved-import-or-export-operation-HA001226020.aspx?CTT=5&origin=HA001226307

En cuanto a otras cosas, botones, módulos, etc., lea primero la ayuda / documentación en línea.

Estamos aquí para ayudar, pero no para hacer el trabajo por usted.

J