• ベストアンサー

EXCELのマクロ記録でMSアクセス操作は可能?

EXCEL2003のDATA(SHEET1全体)をアクセス2003の指定されたテーブルに取り込む操作を マクロの記録で行いたいのですが可能でしょうか?。 VBA等難しく思えるので、マクロの記録だけでできるといいのですが....。 下記のような操作はVBAで簡単に組めますでしょうか?。 (1)アクセスのBBB.MDBのTTTというテーブル内のDATAを全削除してテーブル閉じる (2)AAA.XLSのsheet1全体をTTTのテーブルにインポート。 (3)データーベースの最適化を行い保存して閉じる。 以上初歩的かもしれませんが、どなたかお願いします。

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

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

前提条件として、 ExcelではAccessのフィールド名に相当するタイトル行があること。 各列の値がAccessのフィールドのデータ型に沿ったものである事。 (でないとエクスポートエラーになります) で、VBA では下記のようになります。 (他にも方法がありますが、多分これが分かりやすいかと思います) Excel で、Alt + F11 キーでVBEの画面にして 挿入→標準モジュール を選択し、下記コードを貼り付けます。 緑色になっているコメント行を読んで指示に従ってください。 >マクロの記録で行いたい さすがのMS社さんもそこまで面倒は見てくれません。 >初歩的かも 難しい範疇に入ります。 Sub AccessMDB() 'ツール→参照設定 から 'Microsoft Access xx.x Object Library に 'チェックが必要です。 'xx.x は環境によって変わります Dim AC As Access.Application Set AC = CreateObject("Access.Application") Stop 'ここで確認のため一旦止めています '以降は、F8 を押して一行ずつ進めていって(ステップ実行) 'テーブルの中身の変化を確認していってください ' AC.OpenCurrentDatabase "D:\Office\BBB.mdb", True '実際のmdbファイルのフルパスに書き換えてください AC.CurrentDb.Execute "delete * from TTT" 'テーブルのレコード削除 AC.DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TTT", ThisWorkbook.FullName, True, "Sheet1!" 'テーブルに出力 'ワークシートの1行目をテーブルのフィールド名とするように、True としています AC.DoCmd.RunCommand acCmdCompactDatabase '最適化実行 AC.CloseCurrentDatabase 'ファイルを閉じます AC.Quit 'Access終了 End Sub

matsutake4018
質問者

お礼

大変わかりやすく説明して頂きありがとうございます。 早速トライしてみます。 お礼遅れてすみませんでした。

その他の回答 (1)

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

EXCELのマクロはEXCEL内だけのものです。ですのでACCESSは記録されません。ただし、取得だけは外部データーへの参照で出来ます。 ご質問の内容はVBAを書かなければ不可能です。書けば出来ます。

関連するQ&A