CopyObjectのSourceObjectTypeに指定する数字を調べる方法

解決


VB.NET初心者  2009-01-21 20:35:50  No: 145680

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を検索して得たものを流用してばかりなので、ちゃんとした調べ方
 を覚えたいと思っています)


毛布猫  2009-01-21 21:11:24  No: 145681

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の場合)
オブシェクトブラウザ表示させて似たような方法で検索できます。


VB.NET初心者  2009-01-21 23:10:39  No: 145682

調べ方、ありがとうございます。

リンクテーブルのコピーにはどの定数を使えばいいかが、
まだ分かってはいませんが、ひとまず自分で調べてみます。
ありがとうございました。


毛布猫  2009-01-22 01:40:59  No: 145683

>accessObj.DoCmd.CopyObject("newName", 0, "oldName")
カンマ一つ抜けてませんか?

accessObj.DoCmd.CopyObject(,"newName", 0, "oldName")
でリンクテーブルのコピーも出来そうです。AccessVBAで確認


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加