2010-12-31 6 views
5

私は関連するスレッドを少し読んだが、まだこの質問で私を残した。 Accessデータベースアプリケーションに関数を書き込んで、最初の2行の前に開始するExcelデータをプログラムでインポートする必要があります。これはヘッダーと単位区切り文字です。ExcelデータをプログラムでAccessテーブルにインポートするにはどうすればよいですか?

私は、次のことを達成するために探しています:

  • を動的に私はおそらくダイアログボックスと、おそらくファイルブラウザウィンドウを使用して、インポートするために探していますExcelファイルを選択することができます。
  • レコーダーのアセット番号やレコーダーの指定された場所など、インポート時に各行に「共通」データを挿入します。
  • 行番号#1ではなく行番号3でインポートを開始します。デバイスはレコードのヘッダと測定単位情報を自動的に入力します。
  • ワークシート内の他の列はすべて無視します。データは常に列AからGに存在し、データは常に行#3から開始されます。

これは、Excelのデータは、一般的にフォーマットされている方法です(ダッシュは、データを表す):私は、組み込みのアクセス「外部データの取り込み」機能を試してみたが、それは勝った

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

」 2行目を越えてスキップし、Excelファイル内の余分なデータが読み込み中にエラーをスローし、トラック内のプロセスを停止します。

私は外部ファイルを使用する前にAccessのインポート機能を書こうとしたことは一度もありませんでした。それで初心者です。人々が私に示すことができるどんな助けも常に高く評価され、必要に応じて試行されたコードでこれを更新することができます。皆さんのお手伝いをさせていただき、ありがとうございます!

- 編集2011年1月3日は10:41 @ -

Remouによって提案されたExcelデータスレッドへのADO接続を読んだ後は、ここで私はかもしれないが仕事をすると思いますが、いくつかのコードがあります私はわかりません。

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 

答えて

6

あなたは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" 

それともできconnect to Excel with an ADO connection

インポートまたはリンクしてからクエリを使用して、関連する表をスプレッドシートデータと共通データで更新するのが最も簡単な場合があります。

+0

上記の解決策の問題点は、データの範囲を事前に知る必要があり、データロギングの任務中にこのデバイスがどれくらい引き込むかによって大きく変わるということです。私は明日オフィスに戻ってきて、もっと情報を提供できるかどうかを見ていきます。 –

+0

オートメーションで接続して範囲を取得することは常に可能ですが、少し遅くなります。 – Fionnuala

+0

私は上記のテスト・ステートメントを投稿し、以前の投稿に修正しました。これはあなたが念頭に置いていたものでしたか? –

関連する問題