2010-12-31 33 views
5

Tôi đã đọc qua một số chủ đề liên quan, nhưng vẫn để lại cho tôi câu hỏi này. Tôi muốn viết một hàm trong ứng dụng cơ sở dữ liệu Access để nhập dữ liệu Excel theo chương trình bắt đầu trước hai hàng đầu tiên — đó là tiêu đề và các dấu tách đơn vị.Làm cách nào để tôi có thể nhập dữ liệu Excel theo cách lập trình vào bảng Access?

Tôi đang tìm kiếm để thực hiện những điều sau đây:

  • Có khả năng tự động chọn file Excel Tôi đang tìm kiếm để nhập khẩu, có lẽ sử dụng một hộp thoại và có lẽ là một cửa sổ trình duyệt tập tin.
  • Chèn dữ liệu 'chung' vào mỗi hàng khi được nhập - như số nội dung của máy ghi và vị trí được chỉ định của người ghi.
  • Bắt đầu nhập tại hàng số 3, thay vì hàng # 1 - khi thiết bị tự động đặt tiêu đề và đơn vị thông tin đo lường cho bản ghi lên đó.
  • Bỏ qua tất cả các cột khác trong trang tính - dữ liệu sẽ luôn có mặt trong các cột từ A đến G và dữ liệu sẽ luôn bắt đầu trên hàng # 3.

Đây là cách dữ liệu Excel thường được định dạng (dấu gạch ngang đại diện cho dữ liệu):

 
    Date  Time  Temp  Dew Point  Wet Bulb  GPP  RH 
         Cº  Cº   Cº   g/Kg % 
    ----  ----  ----  ----   ----   ---- ---- 
    ----  ----  ----  ----   ----   ---- ---- 

tôi đã cố gắng tích hợp trong Access 'Get External Data' chức năng, nhưng nó đã giành' t bỏ qua hàng # 2 và dữ liệu phụ trong tệp Excel sẽ phát ra lỗi khi cố gắng nhập, dừng quá trình trong các bản nhạc của nó.

Tôi sẽ là người đầu tiên thừa nhận rằng tôi chưa bao giờ cố gắng viết chức năng nhập cho Access trước khi sử dụng tệp bên ngoài, do đó tôi là một chút của một newbie. Bất kỳ trợ giúp nào mọi người có thể chỉ cho tôi sẽ luôn được đánh giá cao và tôi có thể cập nhật điều này với mã đã cố gắng khi cần thiết. Cảm ơn bạn trước cho tất cả sự giúp đỡ của bạn, tất cả mọi người!

- Sửa 01/03/2011 @ 10:41 -

Sau khi đọc kết nối ADO sang Excel chủ đề dữ liệu bằng cách Remou đề xuất, đây là một số mã tôi nghĩ sức thực hiện công việc, nhưng Tôi không chắc.

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 

Trả lời

6

Bạn có thể sử dụng TransferSpreadsheet: http://msdn.microsoft.com/en-us/library/aa220766(v=office.11).aspx

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ 
    "Employees","C:\Data\Test.xls", True, "A3:G12" 

Hoặc bạn có thể connect to Excel with an ADO connection.

Có thể đơn giản nhất để nhập hoặc liên kết và sau đó sử dụng truy vấn để cập nhật bảng có liên quan với dữ liệu bảng tính và dữ liệu chung.

+0

Vấn đề giải pháp ở trên là tôi cần phải biết trước phạm vi dữ liệu, và nó thực sự phụ thuộc vào số lượng thiết bị này kéo vào trong khi nhiệm vụ ghi nhật ký dữ liệu của nó. Tôi sẽ xem xét điều này khi tôi trở lại văn phòng vào ngày mai - và xem tôi có thể cung cấp thêm thông tin hay không. –

+0

Nó luôn luôn có thể kết nối thông qua tự động hóa và nhận được phạm vi, mặc dù nó sẽ làm chậm mọi thứ lên một chút. – Fionnuala

+0

Tôi đã đăng một tuyên bố kiểm tra ở trên, được sửa đổi cho bài viết trước của tôi. Đây có phải là những gì bạn đã có trong tâm trí? –

Các vấn đề liên quan