Я прочитал немного связанных тем, но все же оставил меня с этим вопросом. Я хочу написать функцию в приложении базы данных Access, чтобы программно импортировать данные Excel, начиная с первых двух строк, которые являются заголовком и разделителями единиц.Как я могу программно импортировать данные Excel в таблицу Access?
Я ищу, чтобы выполнить следующие действия:
- Будучи в состоянии динамически выбрать файл Excel Я ищу для импорта, возможно, с помощью диалогового окна и, возможно, окно браузера файлов.
- Вставьте «общие» данные в каждую строку по мере их импорта - например, номер ресурса рекордера и назначенное место записи рекордера.
- Запустите импорт в строке # 3 вместо строки # 1, поскольку устройство автоматически помещает заголовок и единицу измеряемой информации для записи там.
- Игнорировать все остальные столбцы на листе - данные ВСЕГДА будут присутствовать в столбцах от A до G, и данные будут ВСЕГДА начинаться в строке №3.
Это как данные Excel обычно отформатированы (черточки представляют данные):
Date Time Temp Dew Point Wet Bulb GPP RH Cº Cº Cº g/Kg % ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Я пробовал встроенный в Access «Внешние данные» функцию, но выиграл» t пропустить за строку №2, а дополнительные данные в файле Excel вызывают ошибку при попытке импорта, останавливая процесс на своих дорожках.
Я буду первым, кто признает, что я никогда не пытался написать функцию импорта для доступа перед использованием внешних файлов, поэтому я немного новичок. Любая помощь, которую люди могут показать мне, всегда будет оценена по достоинству, и я могу обновить ее с помощью предпринятого кода по мере необходимости. Заранее благодарю вас за вашу помощь!
- ред 01/03/2011 @ 10:41 -
После прочтения подключения ADO к нити данных Excel, предложенной Remou, вот некоторый код, я думаю, что мощь сделать работу, но Я не уверен.
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
Проблема, о которой говорилось выше, заключается в том, что мне нужно будет заранее знать диапазон данных, и это действительно зависит от того, сколько это устройство тянет во время своих обязанностей по регистрации данных. Я посмотрю на это, когда вернусь в офис завтра, и посмотрю, смогу ли я предоставить дополнительную информацию. –
Всегда можно подключиться через автоматизацию и получить диапазон, хотя это немного замедлит работу. – Fionnuala
Я опубликовал тестовое заявление выше, с поправками к моему предыдущему сообщению. Это вы имели в виду? –