
レコードの追加・削除を繰り返して重たくなったAccessデータベースを軽くするために、手作業で「ツール→データベースユーティリティ→最適化」とやっているのですが、これをExcelVBAで自動化したいのです。
ADOのコマンドでできるのでは?と勝手に考えているのですが、どうなんでしょうか?
ExcelVBAから可能でしたら、どのように書けばよいか教えてください。
なお、ADOの知識は非常に乏しいのですが、「ConnectionオブジェクトやRecordsetオブジェクトを定義して、レコードの追加・削除を行う」程度なら分かります。(逆に言うとそれくらいしか分かりません…)
平易な言葉でお教えいただけると助かります。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ExcelでACCESSのライブラリを参照させます。
その上で以下のコードを実行してみてください。
ただし詳細設定は未確認です。とりあえず最適化はできてます。
(WinME+Office2000の場合)
C:\DB1.mdb を C:\DB1_2.MDBにします。
1.ExcelVBAのメニュー[ツール]-[参照設定]をクリック。
2.[Microsoft Access 9.0 ObjectLibrary]にチェックを付ける。
3.以下のコードを貼り付けて実行。
Sub ACCESSの最適化()
Dim mdbSourceDB As String
Dim mdbTargetDB As String
'最適化対象のデータベースファイル
mdbSourceDB = "C:\db1"
'最適化後のデータベースファイル
mdbTargetDB = "C:\db1_2"
'最適化を実行する
DBEngine.CompactDatabase mdbSourceDB, mdbTargetDB
End Sub
これでとりあえずは最適化できますがチューニングはがんばって見てください。
早速のご回答ありがとうございました。試してみましたら、うまくいきました。
この場で申し訳ありませんが、もう一つ質問させてください。
上記の回答では、最適化の前後でデータベースファイル名を変えなければならないと思うんですが、ファイル名を変えなくても良い方法があったらお教えいただけないでしょうか。
「そんな方法は無い!」ということでしたら、その旨をお返事いただければ幸いです。よろしくお願いします。
No.3
- 回答日時:
こんにちは。
maruru01です。つけたし程度ですが。
手順としては以下のような感じでしょうか。
Accessファイルを"db1.mdb"として、別に"temp.mdb"というファイル名を使用します。
1.temp.mdbファイルを削除する
2.Nameメソッドで、db1.mdb→temp.mdbに変名する
3.temp.mdb→db1.mdbに最適化する
4.次回最適化まで、temp.mdbはバックアップとして保存しておく
temp.mdbファイルは、最適化直後に削除してもいいんですが、タイミングによっては最適化中に削除を実行してしまい、エラーになってしまう可能性があるので、次回最適化直前がいいと思います。
あと、Accessのオプション設定で、「閉じる前に最適化する」という項目があるので、それをチェックしておき、いったん開いてすぐ閉じるという動作をすれば出来ます。
この場合は同じファイル名で最適化されます。
ちなみに、ファイルを開くには、Shell関数や、APIのShellExeCute関数を使用します。
閉じる場合は、自動化しようとするとちょっと面倒になりますが。
なるほど。
確かにバックアップファイルとして残すというのは、いい作戦ですね。
ファイルを開く2つの関数は知らなかったです。
ありがとうございました。
またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- その他(コンピューター・テクノロジー) ChatGPT ExcelVBAの精度は3.5と4で違いはある? 1 2023/04/21 21:00
- ソフトウェア データベースのウェブでの自作 2 2023/08/01 10:06
- Access(アクセス) Accessで作ったデータベースをwebで活用したい 2 2023/06/03 08:49
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Chrome(クローム) 入力フォームの履歴を消したい 2 2023/06/29 13:02
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- ドメイン・サーバー・クラウドサービス 独自ドメインでのNSレコード設定 1 2023/07/12 18:36
このQ&Aを見た人はこんなQ&Aも見ています
-
性格悪い人が優勝
できるだけ性格悪い人になって回答をお願いします。
-
【お題】甲子園での思い出の残し方
【お題】「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
データベースの最適化をマクロでしたい
その他(データベース)
-
マクロでデータベースの最適化をしたい
その他(データベース)
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
Access データベースの最適化をマクロでしたい
その他(データベース)
-
5
Access終了時にマクロまたはVBAの実行したい
その他(Microsoft Office)
-
6
Accessの最適化について DBengine.CompactDatabaseを利用して最適化を行う
Access(アクセス)
-
7
Access サブフォームでの選択行の取得
その他(データベース)
-
8
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
9
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
10
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
11
ExcelVBAからAccessMDB内のテーブル存在チェックをしたい
Visual Basic(VBA)
-
12
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
13
「RunSQL」と「Execute」の違い
Access(アクセス)
-
14
Access、マクロの最後に最適化を入れられる?
その他(Microsoft Office)
-
15
エクセルからアクセスのプロシージャーを実行させるには?
Excel(エクセル)
-
16
Accessのフィールド名に半角括弧を使ってしまった
Visual Basic(VBA)
-
17
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
18
accdbファイルの最適化
その他(データベース)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「○○○.ldb」のAccess レコード ...
-
accessのmdbが勝手にできている?
-
ACCESS2003 ファイルが増えてい...
-
Accessで「誰々が使用中です」...
-
Accessのmdbを開こうとしたとき...
-
ACCESSで「ブックマーク...
-
Access2003でVBAツールの参照設...
-
アクセスをネットワークでリン...
-
ACCESSのモジュールエラー?
-
排他のエラーメッセージ
-
Accessデータベースの最適化をE...
-
複数のAccess mdbでの処理の共通化
-
Access2000 で読み取り専用の...
-
ExcelのマクロでAccessのmdbを...
-
ファイルは開くのに「見つから...
-
ACCESS 複数のmdbでModuleを共...
-
フォームを閉じるショートカッ...
-
インポート禁止にするには?
-
最適化後のサイズがあんまり変...
-
Excelでmdbファイルが簡単に開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessデータベースの最適化をE...
-
Accessのmdbを開こうとしたとき...
-
accessのmdbが勝手にできている?
-
「○○○.ldb」のAccess レコード ...
-
ACCESSのモジュールエラー?
-
アクセスをネットワークでリン...
-
ExcelのマクロでAccessのmdbを...
-
Accessで「誰々が使用中です」...
-
Excelでmdbファイルが簡単に開...
-
Accessのmdb分析(解析)方法ま...
-
Access2003でVBAツールの参照設...
-
accessなしの人にも、accessのM...
-
Database.mdbと言うファイル
-
アクセスのファイルが壊れた!!!!!!
-
排他のエラーメッセージ
-
ファイルは開くのに「見つから...
-
ACCESS mdbファイル 更新日時
-
ACCESSのmdbファイルが壊れ...
-
Accessでリンクテーブルのパス変更
-
ACCESSで「ブックマーク...
おすすめ情報