• ベストアンサー

ACCESSで EXCELのデータをインポートするには

よろしくお願いします。ACCESS2000,EXCEL2000を使っています。 運営報告.XLS の一部のデータをテーブル(TBL入金)にインポートしたいのです。 1.マクロを組みました。添付をご覧下さい。 ワークシート名はどのように定義しますか? 目的のワークシートが左端にあるときは予定通りですが 2.実はACCESSのAPが入っているフォルダーで関連のファイルを処理したいので次のようにコーディングしました Private Sub 入金インポート_Click() Dim ファイル名 As String ファイル名 = Replace(CurrentProject.FullName, CurrentProject.Name, "") & "運営報告.xls" DoCmd.TransferSpreadsheet acImport, 3, TBL入金, ファイル名, yes, "Q1:S2" End Sub ここでもワークシート名は要求しません 実行時エラー'2495' このアクションまたはメソッドを実行するには、[Table Name/テーブル名]引数が必要です。 のメッセージが出ます。どのようにしたらよいでしょうか コーディング中 "Q!:S2"に続いて「,」を入力するとUseOAを要求しているようですがこれはどのようなものですか

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

  • ベストアンサー
回答No.4

>acSpreadsheetType の番号表のサイトご紹介いただけませんか VBEのデバッグモードでも確認することが出来ます。URLでは、 http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr07/hey0403.mspx や、回答2の方が紹介されているページの最後にあるリンク http://www.accessclub.jp/samplefile/help/help_126_1.htm などがあります。

shinkami
質問者

お礼

数度に亘るご指導感謝です。 エクスポートのときはシート名、セルの指定が出来ないこともわかりました(納得したわけではありません)

その他の回答 (3)

回答No.3

他にも問題がありましたね。 「3」ー>「8」 シート名を指定したいなら(たとえばSheet1の場合) 「"Q1:S2"」ー>「"Sheet1!Q1:S2"」 となります。

shinkami
質問者

お礼

ご回答有難うございます Private Sub 入金インポート_Click() Dim ファイル名 As String ファイル名 = Replace(CurrentProject.FullName, CurrentProject.Name, "") & "\運営報告.xls" DoCmd.RunSQL "delete from tbl入金" DoCmd.TransferSpreadsheet acImport, 8, "TBL入金", ファイル名, True, "請求!Q1:S10" End Sub これで解決ですが acSpreadsheetType の番号表のサイトご紹介いただけませんか

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

アクセスのモジュール側で Sub test04() DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ "社員7", "C:\Documents and Settings\xxx\My Documents\01化.xls", True, "検索表!A1:G12" End Sub 別の質問の時にテスト確認済み。 01化.xlsはインポートするエクセルのブック名に替え acSpreadsheetTypeExcel9の部分は http://www.accessclub.jp/samplefile/samplefile_126.htm など、Googleで「acSpreadsheetTypeExcelXX」で照会のこと。 シート名と範囲は質問者の実情に合わせる。 これでシートとその一部のセル範囲の扱い方がわかるだろう。 ーー この点が納得できうまく行ったら、あと何か質問に書いているが、別途未解決点があるなら、その点だけ、補足で、要求したら。

shinkami
質問者

お礼

ご回答及び参考サイト紹介有難うございます。 戴いたコードの固有名、ユーザ名を差し替えると成功しました。

回答No.1

とりあえず、「TBL入金」を「"TBL入金"」と文字列にする、「yes」を「True」にする、つまり DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2" としたら、どうなりますか?

shinkami
質問者

お礼

お騒がせしました。 No.2の:imogasi様のコードを参考にして Private Sub 入金インポート_Click() Dim ファイル名 As String ファイル名 = Replace(CurrentProject.FullName, CurrentProject.Name, "") & "\運営報告.xls" DoCmd.RunSQL "delete from tbl入金" DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TBL入金", ファイル名, True, "請求!Q1:S2" End Sub で通過しました。 これでワークシート指定の件も解決です。 よく分かりませんが 「acSpreadsheetTypeExcel」はEXCELの種類のようですね

shinkami
質問者

補足

ご返答有難うございます。 DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2" で エラーコードが変わりました。 実行時エラー'3274' 外部テーブルのフォーマットが正しくありません

関連するQ&A

専門家に質問してみよう