Przeczytałam trochę powiązanych tematów, ale wciąż pozostawiam mi to pytanie. Chcę napisać funkcję w aplikacji bazy danych programu Access, aby programowo zaimportować dane programu Excel rozpoczynające się przed pierwszymi dwoma wierszami - które są nagłówkiem i ogranicznikami jednostek.Jak programowo importować dane programu Excel do tabeli programu Access?
szukam wykonać następujące rzeczy:
- Będąc w stanie dynamicznie wybrać plik Excel szukam importować, być może za pomocą okna dialogowego, a może okno przeglądarki plików.
- Wstaw "zwykłe" dane do każdego importowanego wiersza - tak jak numer zasobu rejestratora i wyznaczoną lokalizację rejestratora.
- Rozpocznij importowanie w wierszu nr 3, zamiast w wierszu nr 1 - ponieważ urządzenie automatycznie umieszcza tam informacje nagłówka i jednostki miary rekordu.
- Zignoruj wszystkie pozostałe kolumny w arkuszu roboczym - dane będą ZAWSZE obecne w kolumnach od A do G, a dane będą ZAWSZE zaczynać się od wiersza nr 3.
ten sposób dane Excel jest powszechnie sformatowane (kreski oznaczają dane):
Date Time Temp Dew Point Wet Bulb GPP RH Cº Cº Cº g/Kg % ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
Próbowałem wbudowany dostęp „Pobierz dane zewnętrzne” funkcji, ale wygrał” t przeskocz poza wiersz # 2, a dodatkowe dane w pliku Excel zgłaszają błąd podczas próby importowania, zatrzymując proces w jego śladzie.
Będę pierwszym, który przyznał, że nigdy nie próbowałem napisać funkcji importowania programu Access przed użyciem plików zewnętrznych, dlatego jestem trochę początkującym. Każda pomoc, którą ludzie mogą mi pokazać, będzie zawsze bardzo doceniana i mogę zaktualizować to za pomocą kodu, jeśli będzie to konieczne. Z góry dziękuję za wszelką pomoc, wszystkim!
- Edytowane 01/03/2011 @ 10:41 am -
Po przeczytaniu połączenia ADO do programu Excel wątku danych proponowanych przez Remou, tu jest jakiś kod myślę potęga wykonać zadanie, ale Nie jestem pewien.
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
Problem z powyższym rozwiązaniem polega na tym, że muszę znać z wyprzedzeniem zakres danych, i to naprawdę zależy od tego, jak bardzo urządzenie to wciąga podczas swoich obowiązków związanych z rejestrowaniem danych. Przyjrzę się temu, kiedy jutro wrócę do biura - i zobaczę, czy mógłbym podać więcej informacji. –
Zawsze można połączyć się za pomocą automatyki i uzyskać zasięg, choć spowolni to nieco. – Fionnuala
Opublikowałem powyższe oświadczenie testowe, zmienione na mój poprzedni wpis. Czy to było to, o czym myślałeś? –