- ベストアンサー
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を要求しているようですがこれはどのようなものですか
- みんなの回答 (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 などがあります。
その他の回答 (3)
- cistronezk
- ベストアンサー率38% (120/309)
他にも問題がありましたね。 「3」ー>「8」 シート名を指定したいなら(たとえばSheet1の場合) 「"Q1:S2"」ー>「"Sheet1!Q1:S2"」 となります。
お礼
ご回答有難うございます 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)
アクセスのモジュール側で 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」で照会のこと。 シート名と範囲は質問者の実情に合わせる。 これでシートとその一部のセル範囲の扱い方がわかるだろう。 ーー この点が納得できうまく行ったら、あと何か質問に書いているが、別途未解決点があるなら、その点だけ、補足で、要求したら。
お礼
ご回答及び参考サイト紹介有難うございます。 戴いたコードの固有名、ユーザ名を差し替えると成功しました。
- cistronezk
- ベストアンサー率38% (120/309)
とりあえず、「TBL入金」を「"TBL入金"」と文字列にする、「yes」を「True」にする、つまり DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2" としたら、どうなりますか?
お礼
お騒がせしました。 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の種類のようですね
補足
ご返答有難うございます。 DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2" で エラーコードが変わりました。 実行時エラー'3274' 外部テーブルのフォーマットが正しくありません
お礼
数度に亘るご指導感謝です。 エクスポートのときはシート名、セルの指定が出来ないこともわかりました(納得したわけではありません)