• ベストアンサー

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

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • ACCESS VBA マクロ  Excelのデータをインポートする(複数シート)

    ACCESSのVBAでEXCELのシートにあるデータをインポートしたいです。シートは複数あり、シート数は作業毎に一定ではありません。データの数もシート毎に違います。(項目(column数)は全部同じです) 手作業でインポートをすると、どのシートのデータをインポートするかウイザードで選択しますが、シート数が多いので一度に同じテーブルにインポートをするVBAを組みたいのです。(データ数が多いのでエクセルで一つのシートにまとめる事が出来ません。) シート数がその都度違うので変数を使ったりVBAでインポートするのかな?と思うのですが。。。 インポートするベースのテーブルは先に作ってあり、データをインポートする際にそのテーブルに追加する形にしたいと思っています。 excelのVBAは初心者ですがAccessでのVBAの経験がありません。 ACCESSでのマクロ、VBAを良くご存知の方がいらっしゃったら是非教えてください。どうぞよろしくお願いいたします。

  • 記録したマクロを実行するボタン

    シート1にマクロを実行するボタンを 作成したいと思います。 マクロは、シートに2にアクセスdbのクエリデータを 外部データの取り込み実行でインポートする よう記録しています。 シート1のボタンに記録したマクロを 貼り付けると、エラーメッセージで 「とりこみ先の範囲は、クエリテーブルが 作成された同じワークシートにありません」 と出ました。 同じワークシートでないとクエリ実行ボタンは 作れないのでしょうか?? よろしくお願いいたします。

  • Accessのマクロについて教えてください。

    WinXP Access2002です。 現在Accessのあるフォームにコマンドボタンを貼り付けこのボタンをクリック時にマクロでアプリケーションの実行を指定しExcelのファイルを開いています。具体的には c:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE10\EXCEL.EXE D:\EXCEL\AAAY\BBB.XLS です。D:\以下はExcelで作ったファイルの格納場所です。現在これでうまくいっています。 この場合BBB.xlsしか立ちあがりません。これはこれでBBB.xlsだけで用が足りているので何ら問題ないのですがやろうとしていることは¥AAAのホルダーに入っている複数のCCC.xls、DDD.xls・・・・・・等をマクロの途中ダイアログボックス等で仮に今ほしいファイルがXXX.XLSだったとしたら目的のXXX.xlsを指定し開く方法がありますでしょうか。 又これが駄目ならマクロで¥AAAのホルダーまで開く方法はあるのでしょうか。何せAccessのマクロでExcelは立ちあがりますが沢山のホルダーがあるので一歩でも自動で近づきたいのです。方法がありましたらよろしく教えてください。

  • AccessVBA でテーブルをインポートする方法

    AccessVBAでテーブルをインポートする方法 aaa.mdbの中のあるテーブルを、bbb.mdbにインポートする方法を教えてください。 ボタンで実行させたいのでVBAを使った方法をお願いします。

  • アクセスVBAでエクセルを操作するのは不可能でしょうか?

    アクセスVBAでエクセルを操作するのは不可能でしょうか? テスト.xlsのシート1の1行目コピーして テーブルに追加するということがしたいのですがどういうコードを書けばいいのか分かりません。 テスト.xlsは開いている状態です。 アクセス側のユーザーフォーム上のコマンドボタンをクリックしたらこの動作を実行するコード。。。 というのは不可能でしょうか?よろしくお願い致します。

  • Access、マクロの最後に最適化を入れられる?

    Access2003を使用しています。 マクロの最後に最適化を組み込むことは可能でしょうか? マクロの内容は、 1、昨日のデータ抽出に使用した作業用テーブル内のデータを削除する 2、本日のデータをインポートしてくる 3、1で空にしたテーブルに、2のデータを追加クエリで流し込む 4、2でインポートしてきたデータ(テーブル)を削除する です。 この後、「5、データベースを最適化する」を入れてマクロを終わらせたいのです。 インポートしてくるテーブルは8個あり、1テーブルに20万を超すデータが入っているため、インポート、追加をやっているうちに、データベースの大きさが1,126,528KBにもなってしまいます。 この後、この大容量のテーブルを使って、大容量のテーブルを作成しているうちに・・・・データベースは更に大きくなってしまい困っています。 マクロの最後に「ここで一旦最適化」を入れられないでしょうか? このデータベースを使用するのは自分で使用するものでないため、「マクロ終了後ツールボタンで最適化する」ということが出来ません。 また、VBAはわからないので・・・出来ればマクロなどで対応できると助かります。 どなたか詳しい方、教えてください!

  • Microsoft Accessのデータが、別々のmdbファイルとして

    Microsoft Accessのデータが、別々のmdbファイルとして2つあります。Accessを持っていないので、OpenOfficeで開いています。このmdbファイルにあるテーブルをまとめてOpenOfficのBaseで開くことはできないでしょうか? 具体的には、Microsoft Accessのデータ、「aaa.mdb」「bbb.mdb」というファイルがあります。 「既存のデータベースに接続」>「Microsoft Access」で、「aaa.mdb」や「bbb.mdb」に、個別に接続して新規データベースを作成することはできたのですが、どちらのmdbファイル内にあるテーブルも参照してクエリを作りたいんです・・・。 また、過去に無理矢理「bbb.mdb」のテーブルをCtrl+c>Ctrl+vで「aaa.mdb」にコピー&ペーストしていたこともありましたが、今回はテーブルサイズが大きいせいか、エラーになります(メッセージ:エラーが発生しました。コピー処理を続行しますか)。 データベースに関する基礎知識が足りないので、そもそもそれができるかどうかも分かりません。 Webで検索しても参考になるサイトを見つけられませんでした。 よろしくお願いいたします。

  • Accessデータを違うmdbにコピーしたい

    VB2005で、mdbをデータベースにして開発しています。 aaa.mdbのテーブル1のデータをbbb.mdbのテーブル1に読み込ませたいと思っています。 bbb.mdbのテーブル1は、aaa.mdbのテーブル1よりフィールド数が多く、 該当する列にデータを読み込ませたいと思っています。 今まで、バックアップはaaa.mdbを丸ごとコピーして圧縮ファイルにしていました。復元の時は、解凍して上書きする、という手法をとっていました。 しかし、今回どうしてもテーブル1に列を追加しなくてはならず、aaa.mdbのバックアップデータをbbb.mdbに読み込ませて、VB2005のフォームに表示したいと考えております。 以上のような操作は可能でしょうか?可能でしたらその手法を是非教えてください。 また、データベースアプリを作成する上でアプリ完成後に、カスタマイズや計算方法の変更により列の追加が必要になる、いうことはまずいことでしょうか?前もって考えてフィールドを持っておくべきなのでしょうか?経験がないため、わかりません。この点についてもアドバイスがありましたら宜しくお願い致します。

  • ノーツの添付ファイルの場所を知りたい

    ノーツの添付ファイルの場所を知りたい 例えばAAA.xlsとBBB.csvがありAAA.xlsにVBAで BBB.csvをオープンするコードが書いてあります。   Open ThisWorkbook.Path & "\bbb.csv" For Input As #1 AAA.xlsとBBB.csvが同一フォルダーにある時はOKなのですが ノーツの掲示板の1文書にこの2つを添付してマクロを実行しても BBB.csvがnot foundになってしまいます。   注1.ThisWorkbook.Pathはc:\....の中のtemporaryのようです   注2.実際の問題はBBB.csvではなく数万件のAccess.mdbなのであらかじめ      AAA.xlsにデータを保持することは不可能です 何か良い解決策はありますでしょうか? よろしくお願いします。

専門家に質問してみよう