• ベストアンサー

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