WindowsXP上でVB.NET2003を使用しています。
同一MDB内でリンクテーブルのコピーをしたいのですが、
Web上で下記コードを見つけてきましたが、
CopyObjectのSourceObjectTypeに指定する数字を調べる方法が分かりません。
見つけたコード(http://qa.asahi.com/qa1046574.html)
Dim accessObj
accessObj = CreateObject("Access.Application")
accessObj.visible = False
accessObj.openCurrentDatabase("c:\MDBNAME.mdb")
accessObj.DoCmd.CopyObject("newName", 0, "oldName") ←※
accessObj = Nothing
※の部分で、2つめの引数に指定された定数「0」では、「種類が違います」
のエラーにより、リンクテーブルのコピーが実行できませんでした。
リンクテーブルの定数がいくつなのか?が実際に知りたいことなのですが、
下記のSourceObjectTypeを表す定数がいくつなのかを調べたいとき、
通常どのようにして調べればよいでしょうか。
構文:
DoCmd.CopyObject(destinationdatabase , newname , sourceobjecttype , sourceobjectname)
destinationdatabase : コピー先のデータベースのフルパスを指定(省略でカレントデータベース)
newname : コピーするオブジェクトの新しい名前を指定
sourceobjecttype : コピーするオブジェクトのクラス定数を指定
acDataAccessPage: データアクセスページ
acDefault : カレントオブジェクト(既定値)
acDiagram : ダイアグラム
acForm : フォーム
acFunction : 関数
acMacro : マクロ
acModule : モジュール
acQuery : クエリ
acReport : レポート
acServerView : サーバービュー
acStoredProcedure: ストアアドプロシージャ
acTable : テーブル
sourceobjectname : コピー元のオブジェクト名を指定
ヘルプにある場合、どのようにしてヘルプを参照すればよいか分からないので、
教えて頂けますでしょうか。
(いつもWebを検索して得たものを流用してばかりなので、ちゃんとした調べ方
を覚えたいと思っています)
ACCESS2003ならマクロメニューからVisual Studio Editor開いて
F2キーでオブジェクトブラウザを起動します。
検索ウィンドウ(<すべてのライブラリ>の下、双眼鏡の左)
AcObjectType(acDataAccessPageなんかでも可)
を入力して検索します。一覧から候補を選ぶと
下の方に
Const acDataAccessPage = 6
Access.AcObjectType のメンバ
や
Const acDefault = -1 (&HFFFFFFFF)
Access.AcObjectType のメンバ
が表示されます。
またCopyObjectで検索して
Sub CopyObject([DestinationDatabase], [NewName], [SourceObjectType As AcObjectType = acDefault], [SourceObjectName])
Access.DoCmd のメンバ
の緑の部分のリンクをクリックしても探せます。
.NETからでもAccessが参照設定されていれば「ctrl+alt+j」で(VB2003の場合)
オブシェクトブラウザ表示させて似たような方法で検索できます。
調べ方、ありがとうございます。
リンクテーブルのコピーにはどの定数を使えばいいかが、
まだ分かってはいませんが、ひとまず自分で調べてみます。
ありがとうございました。
>accessObj.DoCmd.CopyObject("newName", 0, "oldName")
カンマ一つ抜けてませんか?
accessObj.DoCmd.CopyObject(,"newName", 0, "oldName")
でリンクテーブルのコピーも出来そうです。AccessVBAで確認
ツイート | ![]() |