エクセルのデータ(列数、行タイトルは都度かわる)をアクセスにインポートしテーブルを作成したいと思っています。
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
No.1ベストアンサー
- 回答日時:
> varac = "T_TESTTABLE"
> DoCmd.DeleteObject acTable, varac
データベースに"T_TESTTABLE"は存在していますか?存在していなければ、削除できずにエラーとなります。
> varxls = "C:\Users\AC\Desktop\ACTEST\RAWDATA.xlsx
> DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,varac, varxls, True, strrange
アクセスのバージョンとインポートするエクセルファイのバージョンは何でしょうか?"ACTEST\RAWDATA.xlsx"は、拡張子から推察するとエクセル2007以上のバージョンで作成されていると思われます。引数"acSpreadsheetTypeExcel9"は、エクセル2000形式のワークシートの種類を指定するために使用します。
tate san 様
早々のご回答をいただき、ありがとうございました。
おっしゃる通り、引数"acSpreadsheetTypeExcel12xml"へ変更し
ファイル名の後に"!"をつけたところ、無事に実行されました。
imogasi 様のおっしゃる通り、タイトルと質問内容があっていなくわかりにくい
文章だったのにも関わらず、的確なご回答をいただき大変感謝しております。
ありがとうございました。
No.2
- 回答日時:
エクセル・アクセスではエクスポートとインポートという対立用語があります。
エクセル側では、
・インポートに当たるのは、データー外部データの取り込みです
・エクスポートに当たるのはーー存在しない?
アクセス側では
・インポート
・エクスポート
とも操作、マクロやVBAやできます。
ーーー
質問はどちらの方でやるのか?自分の質問の文章をよく読んでください。揺れていて、判りにくい。
掲載コードでDoCmdを使っているところから、アクセスVBAらしい。
それなら質問の標題を変えるべきでしょう。
「アクセスVBA エクセルからインポート」という風に。標題だけの問題だと、侮る無かれ、後世までこの質問がGoogleなどで見られる恐れがあるのだ。
エクセルのバージョンも書いてなくて、acSpreadsheetTypeExcel9と、xlsxと矛盾しているようだ。
何かをそのままコピーしたためではないか?
ーー
アクセス側でエクセルファイルをインポートするなら、Googleででも「アクセス VBA インポート エクセル」で照会すれば
沢山(膨大な数の)記事が出る。
ーー
セル範囲の指定は
Private Sub test01()
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "01化", "01化.xls", True, "Sheet1!A1:D3"
End Sub
で出来た(2003まででのテストだが)
imogasi 様
ご回答いただき、ありがとうございます。
おっしゃるとおり、質問内容にあっているタイトルは「アクセスVBA エクセルからインポート」でした。
エラーがでてしまったのも引数"acSpreadsheetTypeExcel9"でした。
"12xml"へ修正したところ、うまく実行できました。
急ぎの要件でACCESSのVBAを使用しなくてはならず、自分のやりたいことをネット検索して
コピペしてからコードをの内容をひもといていってたのですが、なかなかちゃんと理解できず
エラーの原因がわかりませんでした。
支離滅裂な質問にご回答いただき、誠に感謝しております。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
生鮮MDシステムについて。
-
アクセスでガントチャート作成
-
アクセス2007のデータを、見出...
-
エクセルでアクセスデータの差...
-
略図作成ソフト
-
スキルシートのエクセルの項目に
-
エクセルVBA アクセスにインポ...
-
差し込み印刷の元データファイ...
-
ISOファイルとMDSファイル
-
EXCEL共有ファイルの使用中の相...
-
共有フォルダの最終アクセス者...
-
Word2000でvlookup
-
ACCESSでデータ読み取り専用を...
-
エクセルでのアクセス履歴をと...
-
batファイルでレジストリキーの...
-
EXCELの会計伝票から勘定奉行へ...
-
エクセルで誰が今開いているか...
-
PCAで、「仕訳データ受入」でデ...
-
イーファンビューでwebpファイ...
-
Word差し込み印刷、フォルダの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
生鮮MDシステムについて。
-
アクセスでガントチャート作成
-
ユニークアクセス トータルアク...
-
アクセスにエクセルで作成され...
-
家計簿をつけるとしたらエクセ...
-
Sharepointサイトにアクセスで...
-
アクセス2007のデータを、見出...
-
アクセスとエクセルの違い
-
DVD(映画)を整理・管理するデー...
-
ハイパーリンクのインポートに...
-
the cardからエクセルに乗りか...
-
拡張子TBLのファイルを開きたい
-
テキストデータ量が膨大で、エ...
-
アクセス2007とアクセス2010に...
-
ACCESSからエクセルのフォーム
-
エクセルとACCESの違いを教えて...
-
エクセルVBA アクセスにインポ...
-
ネットについて質問です。 ホー...
-
無料もしくは安価なのリモート...
-
ノーツで質問です。
おすすめ情報