こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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を要求しているようですがこれはどのようなものですか

投稿日時 - 2009-08-14 13:04:23

QNo.5206529

困ってます

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

>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
などがあります。

投稿日時 - 2009-08-14 19:29:47

お礼

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

投稿日時 - 2009-08-15 07:23:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

他にも問題がありましたね。
「3」ー>「8」

シート名を指定したいなら(たとえばSheet1の場合)
「"Q1:S2"」ー>「"Sheet1!Q1:S2"」

となります。

投稿日時 - 2009-08-14 14:15:42

お礼

ご回答有難うございます

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 の番号表のサイトご紹介いただけませんか

投稿日時 - 2009-08-14 18:05:57

ANo.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」で照会のこと。
シート名と範囲は質問者の実情に合わせる。
これでシートとその一部のセル範囲の扱い方がわかるだろう。
ーー
この点が納得できうまく行ったら、あと何か質問に書いているが、別途未解決点があるなら、その点だけ、補足で、要求したら。

投稿日時 - 2009-08-14 13:49:39

お礼

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

投稿日時 - 2009-08-14 16:42:29

ANo.1

とりあえず、「TBL入金」を「"TBL入金"」と文字列にする、「yes」を「True」にする、つまり

DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2"

としたら、どうなりますか?

投稿日時 - 2009-08-14 13:40:16

補足

ご返答有難うございます。

DoCmd.TransferSpreadsheet acImport, 3, "TBL入金", ファイル名, True, "Q1:S2" で

エラーコードが変わりました。
実行時エラー'3274'
外部テーブルのフォーマットが正しくありません

投稿日時 - 2009-08-14 15:15:22

お礼

お騒がせしました。

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の種類のようですね

投稿日時 - 2009-08-14 17:31:39

あなたにオススメの質問