He leído un poco de los hilos relacionados, pero aún así me dejó esta pregunta. Quiero escribir una función en una aplicación de base de datos de Access para importar de manera programática los datos de Excel comenzando antes de las primeras dos filas, que son el encabezado y los delimitadores de la unidad.¿Cómo puedo importar datos de Excel mediante programación en una tabla de acceso?
Estoy buscando para llevar a cabo las siguientes cosas:
- Ser capaz de seleccionar dinámicamente el archivo de Excel Busco para importar, tal vez mediante un cuadro de diálogo y tal vez una ventana del explorador de archivos.
- Inserte datos 'comunes' en cada fila a medida que se importan, como el número de activo de la grabadora y la ubicación designada de la grabadora.
- Comience la importación en la fila n. ° 3, en lugar de la fila n. ° 1, ya que el dispositivo coloca automáticamente la información del encabezado y la unidad de medida para el registro allí arriba.
- Ignore todas las otras columnas de la hoja de trabajo: los datos SIEMPRE estarán presentes en las columnas A a G, y los datos SIEMPRE comenzarán en la fila 3.
Esta es la forma en que los datos de Excel es comúnmente formateado (los guiones representan los datos):
Date Time Temp Dew Point Wet Bulb GPP RH Cº Cº Cº g/Kg % ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
He probado la función 'Obtener datos externos' acceso incorporado, pero gané' t omite más allá de la fila # 2 y los datos adicionales en el archivo Excel arrojan un error al intentar importar, deteniendo el proceso en sus pistas.
Seré el primero en admitir que nunca he intentado escribir una función de importación para Access antes de usar archivos externos, por lo tanto, soy un poco novato. Cualquier ayuda que la gente pueda mostrarme siempre será muy apreciada, y puedo actualizarla con el código intentado según sea necesario. ¡Gracias de antemano por toda su ayuda, a todos!
- Editado 01/03/2011 @ 10:41 -
Después de leer el hilo de conexión ADO a datos de Excel propuesto por Remou, Aquí hay un código Creo fuerza hacer el trabajo, pero No estoy seguro.
Dim rs2 As New ADODB.Recordset
Dim cnn2 As New ADODB.Connection
Dim cmd2 As New ADODB.Command
Dim intField As Integer
Dim strFile As String
strFile = fncOpenFile
If strFile = "" Then Exit Sub
With cnn2
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source='" & strFile & "'; " & "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
.Open
End With
Set cmd2.ActiveConnection = cnn2
cmd2.CommandType = adCmdText
cmd2.CommandText = "SELECT * FROM [Data$] WHERE G1 IS NOT NULL"
rs2.CursorLocation = adUseClient
rs2.CursorType = adOpenDynamic
rs2.LockType = adLockOptimistic
rs2.Open cmd2
El problema que tiene la solución anterior es que tendré que saber de antemano el rango de los datos, y realmente depende de cuánto este dispositivo ingrese durante las tareas de registro de datos. Echaré un vistazo a esto cuando regrese a la oficina mañana, y veré si puedo proporcionar más información. –
Siempre es posible conectarse a través de la automatización y obtener el rango, aunque se ralentizará un poco. – Fionnuala
He publicado una declaración de prueba arriba, modificada a mi publicación anterior. ¿Era esto lo que tenías en mente? –