Access2000を操作するプログラムをAccess2007にバージョンアップ時にしなければならないことは?(その後)

解決


Misaki  2008-09-26 15:44:31  No: 101134  IP: 192.*.*.*

以前の質問の続きです。

あれから、「Microsoft.JET.OLEDB.4.0」を「Microsoft.ACE.OLEDB.12.0」に変更することで、ほぼ対応できました。ありがとうございました。
1つ問題があります。

ソース内に最適化している部分があり、JROを使用していますが、魔界の仮面弁士さんが書いてくれた通り、Access2007形式ではだめみたいです。
DAOを使うことはなるべくやめてくれとのことですので、AccessのApplication.CompactRepairメソッドを使用したいと思ったのですが、
エラーが出ます。(実行時エラー'91':オブジェクト変数またはwithブロック変数が設定されていません)
ソースは下記です。

    Dim bret As Boolean
    Dim AA As Access.Application
    bret = AA.CompactRepair(db1.accdb,db2.accdb)

何か間違った使い方をしているのでしょうか??
db1、db2は実際にはフルパスで指定しています。

※「サンドボックスモードでブロックされるAccess2007の関数」というのにCompactRepairが含まれていたのですが、何か関係ありますか?

編集 削除
Misaki  2008-09-29 10:01:24  No: 101135  IP: 192.*.*.*

自己レスです。

使い方がおかしかっただけでした。

Dim bret As Boolean
Dim AA As Access.Application
    
Set AA = New Access.Application
↑これが抜けていました。

bret = AA.CompactRepair(DB1, DB2, False)

Set AA = Nothing

編集 削除