dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。

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
---------------------------------------------------------

A 回答 (1件)

>DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, _


strac, strxls, True, strrange

Excel では、RTEST という範囲名が設定されていないのでは?
なら此処は・・・strac, strxls, True だけで。
また、acSpreadsheetTypeExcel3 はExcel3.0形式の指定です。8 あたりでは?
    • good
    • 0
この回答へのお礼

連絡が遅くなり、申し訳ありません。

今、ご指示のようにプログラムの記述を「・・・strac, strxls, True」 だけにして、更に「acSpreadsheetTypeExcel3 」の「3」の部分を「8」に変更してみたら、うまくいきました。

どうもありがとうございました。大変助かりました。
今後とも宜しくお願い致します。

お礼日時:2012/11/22 19:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す