- ベストアンサー
AccessにExcelデータの自動取込時のエラー
いつもお世話になっております。 Access2000(OSはWindowsXP)上にボタンを作り、これをクリックするとExcelデータを自動的にインポートするプログラムを作って実行したら、次のようなエラーメッセージが出ます。 「予期せぬエラーが発生しました。エラー番号:3011 エラー内容:オブジェクト’RTEST’が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。」 プログラムはインターネットを調べて、下記のように書きました。 また、Excelデータはメールに添付されていたサンプルのデータ(項目は、行番号、伝票番号、所属、顧客名、金額、発行日で、データは22件入っています。ファイルの種類は「Microsoft Excel 97-2003 ワークシート」)をマイドキュメントにコピーしました(ファイル名は RTEST.xls )。 エラーが発生したので、C:\にコピーしてやってもみましたが、やはり同じエラーが起こります。 なお、このパソコンにはExcelはインストールされていません・・・これが問題とは思えないのですが。 原因の分かる方がおられましたら、是非対処の方法を教えて頂きたく思います。 あるいは、もっと良い記述の仕方をご教授頂くことでも構いません。 要は、他のパソコン(遠隔地にある)にあるExcelデータをUSBメモリ等のメディアまたはメールに添付して送付してもらい、それを自分のパソコンにコピーし、それをAccess2000にインポートすることができればよいのです。 手動でのインポートは問題なくできたが、自動で行いたいので、悩んでおります。 どうぞ宜しくお願い致します。 (記述したプログラム) --------------------------------------------------------- Private Sub 実行_Click() On Error GoTo エラー Dim strac As String Dim strxls As String Dim strrange As String Dim strmsg As String strac = "T_RTEST" 'Accessテーブルを指定 strxls = "C:\Documents and Settings\DAN\My Documents\RTEST.xls" 'エクセルファイルを指定 ( 'strxls = "C:\RTEST.xls" 'C:\でやったときの記述) strrange = "RTEST" 'データ入力のシート名とセル範囲を指定しない strmsg = "エクセルファイル" & strxls & "を、Accessファイル" & strac & _ "として、データ入力を行います。" & Chr(13) & Chr(13) & _ "エクセルファイルの入力レンジは、" & strrange & "です。" & _ "注意点としては、既にAccessファイル" & strac & Chr(13) & Chr(13) & _ "が存在しているとデータを追加していきますので、実行前に" & strac & _ "を削除しています。" & Chr(13) & Chr(13) & _ "よろしければ、OKをクリックしてください。" 'MsgBoxのメッセージ DoCmd.DeleteObject acTable, strac 'テーブルを削除 If MsgBox(strmsg, vbOKCancel, "Microsoft Access Club") = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, _ strac, strxls, True, strrange MsgBox "データ入力は、正常に完了しました。" End If Exit Sub エラー: Select Case Err.Number Case 7874 'エラーの原因となったステートメントの、 '次のステートメントからプログラムの実行を再開します。 Resume Next Case Else MsgBox "予期せぬエラーが発生しました。" & Chr(13) & Chr(13) & _ "エラー番号:" & Err.Number & Chr(13) & Chr(13) & _ "エラー内容:" & Err.Description, 1, "Microsoft Access Club" End End Select End Sub ---------------------------------------------------------
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, _ strac, strxls, True, strrange Excel では、RTEST という範囲名が設定されていないのでは? なら此処は・・・strac, strxls, True だけで。 また、acSpreadsheetTypeExcel3 はExcel3.0形式の指定です。8 あたりでは?
お礼
連絡が遅くなり、申し訳ありません。 今、ご指示のようにプログラムの記述を「・・・strac, strxls, True」 だけにして、更に「acSpreadsheetTypeExcel3 」の「3」の部分を「8」に変更してみたら、うまくいきました。 どうもありがとうございました。大変助かりました。 今後とも宜しくお願い致します。