• ベストアンサー

エクセルテーブルをアクセステーブル取込む

エクセルで作成したテーブルデータを取り込むときに余分に空白のレコードが取り込まれてしまうんですが原因が分かりません。 下記コードで処理してます。 Dim strac As String Dim strxls As String Dim strrange As String Dim strMsg As String strac = "T_障害票マスタ" 'Accessテーブルを指定します。 strxls = テキスト0 'エクセルファイルを指定します。 strrange = "T_障害票!" 'データ入力のシート名とセル範囲を指定します。 strMsg = "エクセルファイル" & strxls & " を、Accessファイル " & strac & _ "として、データ入力を行います。" & _ "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージ If strxls = "" Then MsgBox "ファイルを選択して下さい。" 'テキストボックスの確認 Exit Sub End If 'DoCmd.DeleteObject acTable, strac 'テーブルを削除します。 If MsgBox(strMsg, vbOKCancel, "import") = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True, strrange MsgBox "インポートは、正常に完了しました。" End If Exit Sub なお取り込むテーブルデータはフィールド行を抜かして常に1レコードだけです。 アクセスでは既存のテーブルに保存してます。 詳しい方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

私の場合 Sub test18() DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "社員1", "C:\Documents and Settings\XXX\My Documents\YYYY.xls", True, "A1:C7" End Sub で実行すると見出し除きで(上記エクセルシートの)6行がACCESSにインポートされた。 質問での、ここの定義=strrange = "T_障害票!" 'データ入力のシート名とセル範囲を指定します。 の範囲がデータのない空白行まで含めているのだろう。 チェックしたかどうかも質問に書いてない。まずやるべきこと。 ACCESS側で自動でエクセルの最終行を捉え、上記例でA1:C7の7の文字列を作るのは不可能で、エクセルの世界にACCESSから入り、エクセを開くコードを書いて、エクセルの世界でのEnd(xlUp).Rowのようなことをして割り出さないとならないでしょう。CurrentRegionなどは使えないでしょうから。

anman0201
質問者

お礼

解決しました。 ありがとうございました。

anman0201
質問者

補足

ご回答ありがとうございます。 取り込みたいテーブルデータがあるのは二枚目のシートなんです。 説明不足ですみません。 セル範囲を指定して実行するとたぶん自動的にシート1を読んできてるのかと思います。 シートの指定はヘルプでもシート全体かセルRangeのことしか書いてなくて対処法が見つかりません。 なにか方法はないでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

EXCELデータの最終行がどこなのか?が怪しい。 (実は任意だが)セルA1を選んだ状態でCtrl+Endキーを押してみてください。 EXCELがどの行・列を最終と判断するか、がわかります。 質問者さまが、「最終データがある行」と認識している行と一致しますか?

anman0201
質問者

お礼

解決しました。 ありがとうございます。

anman0201
質問者

補足

ご回答ありがとうございます。 実はノートタイプのパソコンを使ってるのですが、ENDキーがありません。 Ctrl+↓は違いますよね?

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう