Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


371 / 2272 ツリー ←次へ | 前へ→

【11990】配列を利用したテーブルのインポートについて アクセスVBA初心者 11/5/17(火) 7:35 質問[未読]
【11991】Re:配列を利用したテーブルのインポートに... hatena 11/5/17(火) 18:05 回答[未読]
【11992】Re:配列を利用したテーブルのインポートに... アクセスVBA初心者 11/5/18(水) 7:43 お礼[未読]

【11990】配列を利用したテーブルのインポートにつ...
質問  アクセスVBA初心者  - 11/5/17(火) 7:35 -

引用なし
パスワード
    初めまして今までエクセルを使っていて最近アクセスを使い始めた者なので
すが、質問がありまして投稿させていただきました。既出でしたら申し訳あり
ませんがご容赦ください。

 エクセルのシートをアクセスへインポートするマクロを以下のように作り
ました。
 ※アクセスのテーブルの名前とエクセルのシート名は同じです。後、実際は
もう少しテーブルが多いです。
 ですが、初めのFROM句のところでエラーがでます。また、このようなマ
クロでなく、ADOで書かないと現在開いているデータベース以外にもテーブ
ルを検索して処理を実行してしまうものなのでしょうか。

 ネットなどを調べても、うまくいきません。初歩的な質問ですみませんがも
し、ご存知の方がいらっしゃいまたら、お教え願えませんでしょうか。


Option Compare Database

Function mac()
On Error GoTo mac_Err

  Dim Tcount As Integer
  Dim TName As Variant

  TName = Array("T_01", "T_02", "T_03", "T_04", "T_05")


  'インポートするとデータが重複するので最初にテーブルのデータを削除
  For Tcount = LBound(TName) To UBound(TName)
    DoCmd.RunSQL "DELETE * FROM TName(Tcount)"
  Next


  'エクセルのシート(テーブルと同じ名前)をインポート
  For Tcount = LBound(TName) To UBound(TName)
      DoCmd.TransferSpreadsheet acImport, 8, TName(Tcount), "C:\AS.xls", True, TName(Tcount)
  Next


mac_Exit:
  Exit Function


mac_Err:
  MsgBox Error$
Resume mac_Exit


End Function

【11991】Re:配列を利用したテーブルのインポート...
回答  hatena E-MAIL  - 11/5/17(火) 18:05 -

引用なし
パスワード
   >  'インポートするとデータが重複するので最初にテーブルのデータを削除
>  For Tcount = LBound(TName) To UBound(TName)
>    DoCmd.RunSQL "DELETE * FROM TName(Tcount)"

TName(Tcount) は、"" の外に出さないと、「TName(Tcount)」という単なる
文字列になり、そのようなテーブルはないのでエラーになります。

   DoCmd.RunSQL "DELETE * FROM " & TName(Tcount)

【11992】Re:配列を利用したテーブルのインポート...
お礼  アクセスVBA初心者  - 11/5/18(水) 7:43 -

引用なし
パスワード
    hatena  様

 迅速な返信ありがとうございます。望むとおりの動作が実現いたしました。
 ADO接続に関してはもっと勉強してからにしたいと思います。
 それでは、失礼いたします。

371 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078191
(SS)C-BOARD v3.8 is Free