• ベストアンサー

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

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

>DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, _ strac, strxls, True, strrange Excel では、RTEST という範囲名が設定されていないのでは? なら此処は・・・strac, strxls, True だけで。 また、acSpreadsheetTypeExcel3 はExcel3.0形式の指定です。8 あたりでは?

DANSAMA
質問者

お礼

連絡が遅くなり、申し訳ありません。 今、ご指示のようにプログラムの記述を「・・・strac, strxls, True」 だけにして、更に「acSpreadsheetTypeExcel3 」の「3」の部分を「8」に変更してみたら、うまくいきました。 どうもありがとうございました。大変助かりました。 今後とも宜しくお願い致します。

関連するQ&A

  • CSVデータをAccess2000に自動取得

    いつもお世話になっております。 Access2000(OSはWindowsXP)上にボタンを作り、これをクリックするとExcelデータを自動的にインポートするプログラムを作りました。 このプログラムを利用して、エクセルデータではなく、CSVデータをインポートするように変更しようと思っていますが、インターネットを調べても、今一つ要領を得ません。 どの部分をどのように修正すればよいのか、お分かりの方がおられれば、是非ご教授をお願いします。 どうぞ宜しくお願い致します。 (記述したプログラム) ------------------------------------------------------------------ Dim strac As String Dim strxls As String Dim strrange As String Dim strmsg As String strac = "T_回収お客様情報" 'Accessテーブルを指定 strxls = "C:\回収お客様情報.xls" 'エクセルファイルを指定 strmsg = "エクセルファイル" & strxls & "を、" & strac & _ "という名前のファイルとして、データ転送を行います。" & Chr(13) & Chr(13) & _ "よろしければ、OKをクリックしてください。" 'MsgBoxのメッセージ DoCmd.DeleteObject acTable, strac 'テーブルを削除 If MsgBox(strmsg, vbOKCancel, "Microsoft Access Club") = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True MsgBox "データ入力は、正常に完了しました。" End If Exit Sub ---------------------------------------------------------------------

  • エクセルデータをAccessに取り込む時のコツ

    いつもお世話になっております。 Access2000(OSはWindowsXP)上にボタンを作り、これをクリックするとExcelデータを自動的にインポートするプログラムを作りました。 プログラムはインターネットを調べて、下記のように書きました。 これはこれで使えるのですが、現在のプログラムの記述では、今回エクセルデータをインポートすると、前回取り込んでいたエクセルデータが一旦削除され、今回取り込んだエクセルデータに置き換わります。 これを、前回取り込んだエクセルデータに、今回取り込んだエクセルデータが追加されるような形になれば、より便利に使えるので、その記述の仕方が分かる方がおられましたら、是非教えて頂きたく思います。 どうぞ宜しくお願い致します。 (記述したプログラム) -------------------------------------------------------------------------------- Dim strac As String Dim strxls As String Dim strrange As String Dim strmsg As String strac = "T_回収お客様情報" 'Accessテーブルを指定 strxls = "C:\回収お客様情報.xls" 'エクセルファイルを指定 strmsg = "エクセルファイル" & strxls & "を、" & strac & _ "という名前のファイルとして、データ転送を行います。" & Chr(13) & Chr(13) & _ "よろしければ、OKをクリックしてください。" 'MsgBoxのメッセージ DoCmd.DeleteObject acTable, strac 'テーブルを削除 If MsgBox(strmsg, vbOKCancel, "Microsoft Access Club") = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ strac, strxls, True MsgBox "データ入力は、正常に完了しました。" End If Exit Sub --------------------------------------------------------------------------------

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

    エクセルで作成したテーブルデータを取り込むときに余分に空白のレコードが取り込まれてしまうんですが原因が分かりません。 下記コードで処理してます。 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レコードだけです。 アクセスでは既存のテーブルに保存してます。 詳しい方お願いします。

  • Accessへのエクセルデータインポート

    Accessへのエクセルデータインポート 環境:Access2000/WinXP アクセス2000の特定テーブルへ、エクセルデータをインポートするよう組んだのですが、新しくデータを追加すると、これより前に入っていたデータがレコードを残して消えてしまいました。 新規データを追加した際にただの追加としたいのですがどこがおかしいのでしょうか。 Private Sub データ登録_Click() Dim objExcel As Object Dim varFilePath As Variant Dim bln As Boolean Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "受講者情報一覧" Set objExcel = CreateObject("Excel.Application") varFilePath = objExcel.GetOpenFilename("Microsfot Exel (*.xls), *.xls", , "xls選択") If varFilePath <> False Then varxls = varFilePath Else Exit Sub End If Set objExcel = Nothing varxls = varFilePath strrange = "" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & "へ、インポートします。" DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, varac, varxls, True MsgBox "正常にインポート完了しました。" End If Exit Sub エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Sub End Sub

  • エクセルVBA アクセスにインポート

    エクセルのデータ(列数、行タイトルは都度かわる)をアクセスにインポートしテーブルを作成したいと思っています。 VBAでこの処理をおこないたく、下記のコードで実行したのですがデバッグがはしってしまいます。 (DとEでデバッグ) 原因がお分かりになる方がおりましたら、教えていただけますでしょうか? 何卒、よろしくお願い申し上げます。 Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "T_TESTTABLE" ' --- A varxls = "C:\Users\AC\Desktop\ACTEST\RAWDATA.xlsx" ' ---B strrange = "TEST_RAWDATA" ' --- C strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" DoCmd.DeleteObject acTable, varac ' --- D If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange ' -- E MsgBox "データ入力は、正常に完了しました。" End If Exit Function エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & _ "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Function End Function

  • ACCESS エクスポート ダイアログ ファイル名取得

    ACCESS2003で作成したデータをダイアログで指定したファイル名でエクスポートしたいのですが、上手くできません。 ダイアログが開きその指定したフォルダーにあるエクセルファイルを選択すれば、正常にエキスポートできるのですが、 開いたダイアログにファイル名を入力すると、それ以降動かなくなります。 基本的なことが間違っているのでしょうか?? 詳しい方教えてください。下記にコードした内容を書きました。 よろしくお願いします。 Private Sub cmbTransExcel_Click() On Error GoTo Err_cmbTransExcel_Click Dim fileSaveName As Variant Set dlg = Application.FileDialog(msoFileDialogOpen) With dlg .Title = "チェック" .ButtonName = "エキスポート" .InitialFileName = "C:\Program Files\DATA\" .InitialView = msoFileDialogViewList .AllowMultiSelect = False .Filters.Clear .Filters.Add "xls", "*.xls" End With With dlg If .Show = -1 Then For Each vntPath In dlg.SelectedItems strPath = vntPath Next Else Set dlg = Nothing Exit Sub End If End With Set dlg = Nothing Dim strac As String Dim varxls As Variant Dim strmsg As String strac = "Q_チェック" 'Accessファイルを指定します。 varxls = strPath 'エクセルファイルを指定します。 strmsg = strac & " を、Excelファイルへ出力します。" & Chr(13) & _ "出力先は" & varxls & "、 シート名は" & strac & "です。" & _ Chr(13) & "よろしければ、OKをクリックして下さい。" If MsgBox(strmsg, vbOKCancel) = vbOK Then '最初のデータをフィールド名として使います。 DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, strac, varxls, True MsgBox "EXCELの出力が正常終了しました。", vbInformation, "処理終了" End If Exit_cmbTransExcel_click: Exit Sub Err_cmbTransExcel_Click: MsgBox "EXCELの出力が異常終了しました。", vbCritical, "エラー!" Resume Exit_cmbTransExcel_click End Sub

  • VB2008からAccess2007へのDAO接続でエラーになります。

    VB2008からAccess2007へのDAO接続でエラーになります。 VB2008EEからDAO3.6を利用し、Access2007(*.accdb)に接続しようとしていますが、 エラーが発生してしまい、接続できません。 エラーの内容は下記のとおりです。 実行時エラー '3343': データベースの形式 'XXX' を認識できません。 Access2000のデータベース(*.mdb)には普通に接続できています。 Accessのバージョンを問わずに接続したい場合、どうすればよいのでしょうか? 参考までに現在のコードを記載しておきます。 ※DAO3.6に参照設定してあります。 Imports dao Module modConnectDb Public Function DaoConnect(ByVal strDb As String) As Boolean 'strDb:データベースのファイルパス Dim Ws As dao.Workspace Dim DbE As dao.DBEngine Dim Db As dao.Database Dim strMsg As String Try DbE = New dao.DBEngine Ws = DbE.Workspaces(0) Db = Ws.OpenDatabase(strDb) Catch ex As Exception strMsg = "エラー番号 " & Str(Err.Number) & vbCrLf & _ Err.Source & " でエラーが発生しました。" & vbCrLf & Err.Description MsgBox(strMsg, vbExclamation, "エラー") End Try End Function End Module

  • AccessVBA:TransferSpreadSheetメソッドで既存テーブルに挿入は出来る?

    元となるAccessテーブルはあります。 そこに、ExcelからTransferSpreadSheetメソッドを使って、フィールド挿入という形が出来ますでしょうか。 指定したExcelデータじたいのインポートは出来てますけど、挿入となるとさっぱり分かりません。 (Win2000/Access2000/Excel2000) 現在の書き込みは以下のとおりです。 Function ExcelDataImport() On Error GoTo Err_コマンド1_Click Dim varac As Variant Dim varxls As Variant Dim strrange As string Dim strmsg As string varac = "既存テーブル" varxls = "C:\Temp\EX.xls" strrange = "(A1:A1000)" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, varac, varxls, True, strrange (エラーメッセージ定義が続く) End Function --------------------------------------------------Private Sub Excelin_() Call ExcelDataImport End Sub

  • [PG]AccessVBAでファイルのインポートする方法

    [PG]AccessVBAでファイルのインポートする方法 VBAでエクセルファイルのインポートする機能を実装しています。 下記のコードで実行しますと実行時エラー"3011"が表示され DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange で止まります。何か解決方法を教えていただけないでしょうか? Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String ' --- Accessテーブルを指定します。存在していなければ自動的に作成します。 varac = "tbl_売上げテーブル" ' ---Excelファイルを指定します。必ず、存在していなくてはいけません。 varxls = "C:\売上げ.xls" ' --- データ入力のシート名とセル範囲を指定します。 ' なお、省略が可能です。省略した場合は、ワークシート全体がインポートされます。 strrange = "売上げシート!A1:D10" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" ' --- DeleteObjectメソッドを用いて、tbl_売上げテーブルを削除します。 ' --- TransferSpreadsheetメソッドを用いてデータをインポートします。 DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange MsgBox "データ入力は、正常に完了しました。" End If Exit Function

  • AccessからExcel最小化

    お世話になっております 以下の件、お分かりの方ご教授お願いします Win2000 Access2000 Accessから起動している指定したパスの エクセルファイルを最小化したいと思ってます 以下の様に組んでますが、インデックスが有効範囲にないと 出てしまいます。パスは確実にあるのですが原因がわかりません Private Sub Excel最小化_Click() Dim mobj As Object On Error GoTo err Set mobj = New Excel.Application mobj.Workbooks("C:\test\test.xls").active   ←ここでエラー mobj.windowsstate = xlMaximized Exit Sub err: MsgBox Error(err.Number) End Sub