[発掘:Access]VBA からウィザードを直接 呼びだす方法

#これを発掘する趣旨
この記事を発掘する趣旨は

 1. AccessのWizardがアドインとして提供されていたこと
 2. Access2019でもこの機能が動くため現在でも一部は依然として有効であること
 3. これは推測だがDoCmd Runcommand以前の機能が残っている。
 4. この機能はAccess2.0に起源がある
 5. この4から察すると、これは開発者がコマンドラインからWizardを起動できるようにしたものだろう。
 6. とくにAccess2.0になればまだコマンドラインが主流の時代である。こうした機能は隠しコマンドとして開発者に重宝されたことだろう。今回実際に発掘に成功したが、数は10個もなく、作成ウィザードばかりであるし、コードもシンプルだ。手入力の時代だからこそ、シンプルでないと入力ができないのだろう。


###パフォーマンス最適化ツールで実験してみました
Access2019の64bit版です。

####イミディエイトウィンドウからは
イミディエイトウィンドウから起動するときはカッコで囲みます。

```vb
?Application.Run("ACWZTOOL.opt_Entry")
```

####コードとして

```vb
Sub runquery()
Application.Run "ACWZTOOL.opt_Entry"
'Application.Run "ACWZMAIN.frui_Entry", "NewQuery", acQuery
End Sub
```

###選択クエリウィザードの不思議な起動
できていいのか謎だが、既存のクエリ名を指定すると既存のクエリをWizardで起動する。
またクエリ名を省略するとエラー、現在ないクエリを指定すると、今度はクエリ名はWizardでクエリを作成すると、あらたに保存する名前を入力しなければならない。つまり通常のウィザードと若干異なった挙動をする。つまりよく確認して使えるものだけ使うべきで、これを正規のコードに入れることは避けた方がよい。２つ楽そうなものを起動させても挙動が異なっている。

NewQueryという選択クエリがすでにあるものとする。

####イミディエイトウィンドウからは
イミディエイトウィンドウから起動するときはカッコで囲みます。

```
?Application.Run("ACWZMAIN.frui_Entry", "NewQuery", acQuery)
```

####コードとして

```vb
Sub runquery()
'Application.Run "ACWZTOOL.opt_Entry"
Application.Run "ACWZMAIN.frui_Entry", "NewQuery", acQuery
End Sub
```
---

#VBA からウィザードを直接 呼びだす方法
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGnrlHowToCallWizardFromVBA.html
##概要

MS-Access で使用するウィザードやビルダーは、アプリケーション本体の組み込み機能としてではなく、アドインとして提供されています。したがって、ウィザードを直接呼び出す場合は MS-Access のメソッドとして呼び出すのではなく、Application.Run メソッドを介してアドインの関数を呼び出す形を取ります。
以下に主なウィザードの呼び出し方を紹介します
※ 以下で紹介する方法は YU-TANG が個人的に確認したものであり、本来 使用方法が公開されているものではありません。YU-TANG も、もちろん Microsoft 社も、以下の内容について いかなる動作保証もするものではありません。あくまで個々の責任においてお使いください。
またウィザードのほとんどは、RunCommand メソッドなどで呼び出し可能です。その場合は迷わず正規の手段を使いましょう。


※ 本稿とほとんど同じ MSKB が存在することを確認しました。
[148506](http://support.microsoft.com/kb/148506) - ACC: How to Run Microsoft Access Wizards Using Visual Basic機械翻訳(編注:この英文のKBも併せて以下に発掘しておいた)
Access 2000 以降には対応していないものの、基本は変わっていませんので、この MSKB だけでも情報としては十分かもしれません。
本稿を引き上げることも考えたのですが、内容的に重複しない箇所もあるため、MSKB が改訂されるまでは残しておきます。(YU-TANG@02/25/02)

##前提
本ページの内容は Access 2000 での確認に基づいています。コードも Access 2000 以降用の記述です。Access 97 以前については、アドイン名を下記対応表にのっとって読み替えてお使いください。ただしすべての事例について Access 2000 以外のバージョンでの動作確認を行ったわけではありません。動作しない場合は悪しからずご了承ください。 

|Access 95|Access 97|Access 2000|
|:-----:|:------:|:----------------------:|
|WZMAIN70.mda	|WZMAIN80.mde|ACWZMAIN.mde|
|WZLIB70.mda	|WZLIB80.mde	|ACWZLIB.mde|
|WZTOOL70.mda	|WZTOOL80.mde	|ACWZTOOL.mde|
|UTILITY.mda	|UTILITY.mda	|UTILITY.mda|

###ウィザード
#####テーブル作成ウィザード
`Application.Run "ACWZMAIN.tw_Entry" `

#####テーブル正規化ウィザード (テーブル名指定なし)
`Application.Run "ACWZTOOL.zw_NormalizerEntry"`

#####テーブル正規化ウィザード (テーブル名指定あり)
`Application.Run "ACWZTOOL.zw_NormalizerEntryTable", "データソース名"`
#####リンク テーブル マネージャ

`Application.Run "ACWZTOOL.att_Entry"`
#####ピボットテーブル ウィザード

`Application.Run "ACWZMAIN.pvt_Entry", "データソース名"`

※ データソース名は省略（空文字列）可です。
#####Word 差し込みウィザード

`Application.Run "ACWZMAIN.pm_Entry", "データソース名"`
#####選択クエリー/フォーム/レポート/ページ ウィザード

※ ページ ウィザードは Access 2000 以降のみです。

ACWZMAIN.frui_Entry 関数の第 2 引数を指定して使い分けます。

データソース名はいずれも省略（空文字列）可です。

`Application.Run "ACWZMAIN.frui_Entry", "データソース名", acQuery`

`Application.Run "ACWZMAIN.frui_Entry", "データソース名", acForm`

`Application.Run "ACWZMAIN.frui_Entry", "データソース名", acReport`

`Application.Run "ACWZMAIN.frui_Entry", "データソース名", acDataAccessPage`

選択クエリー ウィザードに限り、データソース名を省略する場合は下記でも呼び出し可能です。

`Application.Run "ACWZMAIN.ssq_Entry" `
#####宛名ラベル ウィザード

Application.Run "ACWZMAIN.mlbl_Entry", "データソース名"

#####重複クエリー ウィザード
`Application.Run "ACWZTOOL.Dup_Entry"`
#####不一致クエリー ウィザード
`Application.Run "ACWZTOOL.dwz_Entry"`
#####メニュー作成ウィザード
`Application.Run "ACWZMAIN.sbm_Entry" `

#####インポート/エクスポート ウィザード
`Application.Run "ACWZLIB.mx_Entry", 変換の種類, "ファイル名", "オブジェクト名", "変換形式" `

変換の種類は次の数値で指定します。

|変換の種類	|指定する値|
|:----:|:----:|
|インポート	|1|
|リンク	|2|
|エクスポート	|3|

<details><summary><color = 'red'>※MS-Access の定数 acImport(0)、acLink(2)、acExport(1) と混同しないでください。</summary>リンクの値はたまたま一致していますが、この値はあくまでアドイン独自の定義です。 


変換形式に指定できる文字列の詳細については、DAO のヘルプで Connect プロパティのトピックを参照し、データベースの種類とそれに対応するデータベースの指定子の一覧で確認できます。

指定子末尾のセミコロン ( ; ) は省略してもかまわないようです。

※ Access 2000 の SR なしを Windows 2000 や  Windows XP 上にインストールすると、ADO、DAO やJet SQL、JRO などのヘルプがインストールされないという障害が発生する場合があります。これはインストーラが MDAC の上位バージョンを検出して、すでに最新版のヘルプが入っているものと勘違いしてスキップしてしまうために発生するようです。実にトホホな障害ですが、参考書籍が手元にあるのでない限り、唯一の情報源へのアクセス手段を絶たれかねませんので、ご注意を。

249065 - [OFF2000]Windows2000上でヘルプを表示しようとするとエラー

ACWZLIB.mx_Entry で呼び出し可能な変換の種類と変換形式の主な組み合わせについて、Access 2000 での確認結果を下記に一覧にしてみました。 


|データベースの種類	|変換形式	|インポート	|リンク	|エクスポート|
|:--------|:------|:------|:------|:------|
|Text	|Text	|○	|○	|○|
|HTML	|HTML Import	|○	|○	|×|
|Microsoft Excel 5.0 または Microsoft Excel 95	|Excel 5.0	|○	|○	|×|
|Microsoft Excel 97	|Excel 8.0	|○	|○	|×|

HTML ファイルをリンクする場合でも、変換形式は "HTML Import" で指定します。

Excel の場合はエクスポートできない(エクスポートはウィザードを介さない)ので、変換形式を気にする必要はないようです。"Excel 5.0" と "Excel 8.0" のどちらを指定しても、どちらの形式のファイルもインポート/リンクできます。

Lotus 1-2-3 など、ワークシート系はおおむね Excel と同様のようです。Jet データベースと ODBC の指定の詳細は、可否も含めて不明です。テストでは接続はできたものの、結果が妙だったので深くは追求していません。(^ ^;) 
これも特に理由が無い限り RunCommand メソッド (acCmdZoomBox) で呼んだ方が無難でしょう。

####その他
アドインの中には、ちょっと変わった関数が用意されていたりします。本来 ユーザーが使用することを想定したものではないでしょうが、興味深いのでいくつかピックアップしてみました。

###ズーム ボックス

####Access 97 以前
マクロをモジュールに変換ウィザード

```vb
Application.Run "ACWZTOOL.mtm_Entry"
```

※ 事前にデータベース ウィンドウ上で対象マクロが選択されていないとエラーになります。

セキュリティ ウィザード
`Application.Run "ACWZTOOL.swz_Entry"`
データベース分割ツール
`Application.Run "ACWZTOOL.sp_Entry"`
パフォーマンス最適化ツール
`Application.Run "ACWZTOOL.opt_Entry"`
オート フォーマット
`Application.Run "ACWZMAIN.af_Entry"`

###ビルダー
####式ビルダー

Access 2000 以降は VBE が COM アドイン化したために VBE 上で使えなくなってしまった式ビルダーですが、アドインの中に見当たらないので、式ビルダー自体はどうも Access の組み込み機能のようです（自信なし）。

ただし、なぜか演算子や関数の一覧を Utility.mda のテーブルから読み込んでいるために、Utility.mda 依存になっています。

いずれにしても、使いたいときはすなおに RunCommand メソッド (acCmdInvokeBuilder) で呼んだ方が無難でしょう。 

`変数 = Application.Run("UTILITY.BuilderZoom", "オブジェクト名", "コントロール名", "表示文字列"[, "フォント名", [フォントの太さ, [フォントサイズ]]])`

※ 引数フォント名は文字列で、それ以外のオプショナル引数は Integer 型の数値で指定します。省略すると [ツール]-[オプション] の既定のフォント設定が使用されます。ただし、私が試した限りでは、フォントの太さの指定をしても特に変化はないようです。

####Access 2000 以降

`変数 = Application.Run("UTILITY.BuilderZoom", "オブジェクト名", "コントロール名", "表示文字列")`

※ Access 2000 以降では、ズームボックス自体にフォント設定機能がついたため、オプショナル引数は無くなりました。指定するとエラーになります。

UTILITY.BuilderZoom 関数はズームボックス上で入力/編集された文字列を返します。したがって返り値をテキストボックスか変数に格納しないと、無意味になります。

引数のオブジェクト名とコントロール名は、特に意味は無いようです。省略（空文字列）したり、実在しない名称を渡したりしても、エラーにはなりません。 

※ 以下の使用例では ACWZLIB を使用していますが、ACWZMAIN や ACWZTOOL で呼び出しても OK です。
wlib_GetTickCount

これは現在時を取得する Windows API 関数の GetTickCount を呼び出します。これを使うと宣言なしで GetTickCount を使用できます。

ほかにも SendMessage や SetActiveWindow など、けっこう充実しています。

`変数 = Application.Run("ACWZLIB.wlib_GetTickCount") `

[red]※ wlib_GetTickCount は Access 97 以前では使えません。[red]

#####wlib_max
#####wlib_min

Long 型の数値を 2 つ受け取り、大きいほう、あるいは小さいほうを返します。VBA でも IIf 関数を使えば済む話なので、別に無いと困るものではありませんが、なんかプログラミングの入門書に出てきそうな関数が実在しているというのは妙に微笑ましいものがあります。 

`変数 = Application.Run("ACWZLIB.wlib_max", 数値1 , 数値2)`

`変数 = Application.Run("ACWZLIB.wlib_min", 数値1 , 数値2)`

#####wlib_ReplaceStr
#####wlib_ReplaceAllStr

文字列を置換します。

wlib_ReplaceStr は条件に一致する最初の文字列だけを置換します。wlib_ReplaceAllStr は条件に一致するすべての文字列を置換します。

※ wlib_ReplaceAllStr は Access 97 以前では使えません。

値を返すわけではなく、参照渡しで受け取った文字列を直接置換します。

以下は使用例です。

```visualbasic
Dim strTemp As String
strTemp = "山田中学校の田中さん"
MsgBox strTemp
Application.Run "ACWZLIB.wlib_ReplaceStr", strTemp, "田中", "犬養"
' Application.Run "ACWZLIB.wlib_ReplaceAllStr", strTemp, "田中", "犬養"
MsgBox strTemp
```

Access 2000 以降は Replace 関数が使えるため、ユーザーがわざわざこの関数を使うメリットはありませんが、Access 97 以前では意味があるかもしれません。 

###補足

MS-Access で使用されているウィザードやビルダー本体の収録先情報は、下記 MSKB で公開されています。

208307 - ACC2000: Wizard Names and Their Locations機械翻訳

wlib_stUniqueDocName

ユニークなオブジェクト名を返します。

構文は以下の通りです。

```vb
wlib_stUniqueDocName(strInitName As String, intObjectType As Integer) As String
```

引数 strInitName と同じ名前のオブジェクトが、引数 intObjectType で指定した種類のオブジェクトのコレクションの中に既に存在している場合は、名前の末尾に数字を付加してユニークな名前を返します。

もし同じ名前が既存のコレクションの中に無ければ、引数 strInitName がそのまま返されます。

以下は使用例です。

```visualbasic
strNewTable = Application.Run("acwzmain.wlib_stUniqueDocName", "HogeHoge", acTable)
```

159367 - ACC97: Which Wizard Is Where in Microsoft Access 97?機械翻訳
Microsoft Office Resource Kit > Microsoft Access Architecture
159367 の中には、ダウンロード可能なソースコード付きアドインへのリンク一覧が存在します。詳細について知りたい場合は、これをたどってダウンロードしたアドインを解析することになります。
ただし残念ながら公開されているのは Access 97 用（バージョン 8.0）の英語版のみです。
208307 の中に、「一般販売される Access (the retail version of Microsoft Access) に含まれるウィザード用の VBA コードを見ることはできません」 と明記されています。

アドインの構成はかなり複雑になっており、仕組みを把握するのは容易なことではないでしょう。VBA の記述においては英語版も日本語版もないので、アドインが英語版だからといってハンディは特にありませんが、もともとユーザー向けに作成されたものではないので、親切なコメント類はどこにも見当たりません。高峰に挑む方は、それなりの準備と心構えをもって臨みましょう。(^ ^)/~~ 
###余談

アドインの構成が分かったからといって、それが実際にどのていど役に立つかといえば、率直なところたいして役には立ちません。

ウィザードの多くは RunCommand メソッドから呼び出せますし、特定の業務で使う場合はたいてい仕様や用途が限定されるため、実際のウィザードが行っているような汎用のチェックを省けるので、ゼロから独自に作成してもそれほど手間ではない場合も多いのです。

したがって、アドイン解析で満たされるのはほとんどの場合、業務効率ではなく知的好奇心であって、労多くして益少なし、というのが実情です。 
そんな中、個人的に『これは使える！』と思ったのが、ズームボックスの改造です。

ズームボックスは、入力欄の狭いプロパティ シートやクエリーのフィールドなどを編集する際に【Shift】＋【F2】で簡単に呼び出すことができ、開発者にとっては何かと重宝する機能です。Access 2000 からはフォントの設定も可能になり、さらに使いやすくなったのも事実です。

しかし、それはあくまで Access 97 以前と比較した場合の話であり、テキストエディタとして評価した場合には依然として貧弱を通り越して無能と言いたくなるほど機能が何もありません。そのため、ちょっと複雑な記述をしようとすると、結局コピー＆ペーストで使い慣れたテキストエディタに移行することになってしまいます。

しかしズームボックス自体を改造すれば、秀○並みに多機能で使い勝手のよいズームボックスを実装するのも夢ではありません。別にそこまで手間をかけなくとも、フリーウェアでそこそこ使える OCX を貼るだけでも飛躍的に融通が利くようになります。

デザインだって、あんな殺風景なものではなく、フォームに画像をあしらったりすれば一気に華やいで、ズームボックスを使うのが楽しくなること請け合いです。

`# なんか出張リフォーム大作戦のノリだな。(^ ^;) `
Access 2000 用の改造可能な UTILITY.MDA は提供されていませんが、Access 97 用の UTILITY.MDA を Access 2000 形式に変換して差し替えたところ、問題なく動作しました。これで My ズームボックスの誕生です。＼(^o^)／

ただ、こういう使い方に問題が何もないかというと、正直分かりません。

UTILITY.MDA にはズームボックスだけでなく、オートダイヤラーやレポート出力ルーチンも収録されています。また式ビルダーも UTILITY.MDA のテーブルを参照しています。Access 97 用の UTILITY.MDA に差し替えるということは、これらの機能に加えられた Access 2000 用の変更をグレードダウンするということに他なりません。それが思わぬところで影響しないかどうかは、Access 2000 用の変更点を確認する術が無い以上、不明と言うしかない状態です。

結局、潜在的なリスクを承知で個々の責任において判断するしかない、という決まり文句に落ち着いてしまうのですが。

それでも私個人としては、リスクを承知であえてやってみる価値はあると思っています。

Access 2000 用の UTILITY.MDA にはバグがあり、UTILITY.MDA をロードした後（つまりズームボックスやオートダイヤラーを呼び出した後）に 2 バイト文字を使用した名前の関数をイベント プロパティなどから直接呼ぶとエラーになります。これは Office 2000 SP-2 に至るも修正されていません。 
それでも私個人としては、リスクを承知であえてやってみる価値はあると思っています。

Access 2000 用の UTILITY.MDA にはバグがあり、UTILITY.MDA をロードした後（つまりズームボックスやオートダイヤラーを呼び出した後）に 2 バイト文字を使用した名前の関数をイベント プロパティなどから直接呼ぶとエラーになります。これは Office 2000 SP-2 に至るも修正されていません。

    414234 - [ACC2002] 日本語名のプロシージャが実行できない

Access 2002 でも修正されていないところを見ると、そもそも直す気があるのかどうか疑わしくなってきますが、実は Access 97 用の UTILITY.MDA から変換したアドインに差しかえると、この問題は起きなくなります。

つまり現時点ではっきりしているのは、アドインを差し替えた場合に、少なくともズームボックスをカスタマイズして、バグを避けられるという二重のメリットがあるという点だけなのです。デメリットはあるかもしれないし、ないかもしれないが、いずれにしても既知のデメリットは今のところ無いわけです。

この条件なら、既に本体アプリ自体がバグだらけの製品を購入したユーザーにとっては、いまさらガタガタ言うほどのリスクでもなんでもないでしょう。

仕事で配ったりするのはともかくとして、個人の端末上で使い勝手をよくするためなら、アリの選択だと私は思います。 

###謝辞

コード解析可能なアドインの存在は Picaso 氏の投稿より、知るにいたりました。末尾ながら、お礼申し上げます。また、とにもかくにも、半分 内部仕様に属するアドインのソースコードを一度はユーザーに公開するという英断を行った Microsoft 社の鷹揚な姿勢にも感謝いたします。

本ページの情報にユーザー各位に寄与するものがあれば、その評価は上述の各位に帰するものであり、情報の不正確さは YU-TANG がその責を負うものです。

▲

※ 本トピックへのご意見・ご感想・ご指摘・ご要望が有れば、MS Access 庵あるいは YU-TANG までお気軽にお寄せください。

---

#How to run Microsoft Access wizards using Visual Basic
http://support.microsoft.com/kb/148506

View products that this article applies to.
Article ID	:	148506
Last Review	:	February 14, 2007
Revision	:	3.2
This article was previously published under Q148506
##On This Page
SUMMARY
MORE INFORMATION
Calling the Wizards
Syntax with a Reference
Syntax Using a Reference
REFERENCES

#SUMMARY
SUMMARY
Advanced: Requires expert coding, interoperability, and multiuser skills.

This article describes how to start the Microsoft Access 97 and Microsoft Access 7.0 wizards by using Visual Basic for Applications.

CAUTION: If you plan to create a custom application using the Microsoft Access Developer's Toolkit (ADT) for Windows 95 or the Microsoft Office 97 Developers Edition (ODE), you should not programmatically start the Microsoft Access. Since you cannot distribute the required library files with your application, any Visual Basic code that runs the wizards can fail in the run-time environment. You must have a single, licensed copy of Microsoft Access for Windows 95 or Microsoft Access 97 installed on your computer to run the Microsoft Access Wizards by using the methods described in this article.

MORE INFORMATION
In Microsoft Access 97, the procedures for running the Wizards are contained in the Wzmain80.mde and Wztool80.mde library databases, which are located in your Microsoft Office folder (for example, C:\Msoffice\Office).

In Microsoft Access 7.0 for Windows 95, the procedures for running the Wizards are contained in the Wzmain70.mda and Wztool70.mda library databases, which are located in your Microsoft Access folder (for example, C:\Msoffice\Msaccess).

The Wzmain80.mde and Wzmain80.mde library databases contain the following procedures for specific wizards:

```visualbasic
   Wizard                 Procedures
   ---------------------------------------------------------------------

   Form                    frui_Entry([TableName as String], ObjectType _
   Report                     as Integer)
   Simple Query

   Crosstab Query          xtq_Entry()

   AutoForm: Columnar      auto_Entry(TableName as String, DocumentType _
   AutoForm: Datasheet        as Integer, ObjectType as Integer)
   AutoForm: Tabular
   AutoReport: Columnar
   AutoReport: Tabular

   PivotTable              pvt_Entry([TableName as String])

   Word for Windows Merge  pm_Entry(TableName as String)

   MailingLabel            mlbl_Entry(TableName as String)

   Table                   tw_Entry() 
```

The Wztool80.mde and the Wztool80.mde library databases contain the following procedures for specific wizards:

```visualbasic
   Wizard                  Procedures
   ------------------------------------------------------------------

   Attachment              att_Entry()

   Form Chart              cw_WizardEntry(TableName as String, _
   Report Chart              ObjectType as Integer, Unused as Integer)

   Find Duplicates Query   dup_Entry()

   Find Unmatched Query    dwz_Entry()
```

##Calling the Wizards
When you call a procedure in a library database, the required syntax can vary, depending on if you have a reference to the library within your database.
Syntax with a Reference
If your database has a reference to Wztool80.mde and Wzmain80.mde (Microsoft Access 97) or Wztool70.mda and Wzmain70.mda (Microsoft Access 7.0), you can call the wizard procedures using standard syntax for running a function or subroutine. For example, to start a specific wizard from a form, you can copy the sample syntax below to the OnClick property of a command button on the form: 

```visualbasic
			
   Wizard                   Calling Syntax
   ---------------------------------------------------------
   Attachment               =att_Entry()
   AutoForm: Columnar       =auto_Entry("Customers", 1 , 2 )
   AutoForm: Datasheet      =auto_Entry("Customers", 3 , 2 )
   AutoForm: Tabular        =auto_Entry("Customers", 2 , 2 )
   AutoReport: Columnar     =auto_Entry("Customers", 1 , 3 )
   AutoReport: Tabular      =auto_Entry("Customers", 2 , 3 )
   Crosstab Query           =xtq_Entry()
   Find Duplicates Query    =dup_Entry()
   Find Unmatched Query     =dwz_Entry()
   Simple Query             =frui_Entry("Customers",1)
   Form                     =frui_Entry("",2)
   Form Chart               =cw_WizardEntry("Customers",2,0)
   MailingLabel             =mlbl_Entry("Customers")
   PivotTable               =pvt_Entry([TableName as String])
   Report                   =frui_Entry("Customers" ,3)
   Report Chart             =cw_WizardEntry("Customers",3,0)
   Table                    =tw_Entry()
   Word for Windows Merge   =pm_Entry("Customers")
```

NOTE: You cannot programmatically create a reference using Visual Basic. It must be created manually. The basic steps are as follows:

<OL>
<li>Open your database in which you want to start the wizards from Visual Basic.</li>
<li>Open a module in Design view.</li>
<li>On the Tools menu, click References.</li>
<li>If the libraries appear in the list of available references, ensure that their check boxes are checked and click OK. If these libraries are not listed, then click the Browse button and proceed with step </li>
<li>In the Add Reference box, Select "Databases *.MDB, *.MDA" from the Files Of Type list, and then locate the Wzmain80.mde or Wztool80.mde. Note that these files are typically installed in the Microsoft Office folder in the subfolder, Office (for example, C:\Msoffice\Office).

**NOTE: In Microsoft Access 7.0 for Windows 95, you would look for Wzmain70.mda or Wztool70.mda, typically located in the Microsoft Access folder (for example, C:\Msoffice\Msaccess).***

<li>Once you locate the library (for example Wzmain80.mde), select the file name and click OK. The library name should then appear in the References box with a check mark. Click OK to close the References box.</li>
</OL>

##Syntax Using a Reference
If you want to avoid creating a reference to Wztool80.mde and Wzmain80.mde (Microsoft Access 97) or Wztool70.mda and Wzmain70.mda (Microsoft Access 7.0), you can use the Run method of the Application object in a Visual Basic procedure to call a wizard, for example:

```visualbasic
   Application.Run "<library>.<function>", [arguments]
```

To start a specific wizard, use Application.Run with the sample "library.function" syntax in the table below:

```visualbasic
 Wizard                   "<library>.<function>"
 -----------------------------------------------------------------------

 Attachment               "Wztool80.att_Entry"
 AutoForm: Columnar       "Wzmain80.auto_Entry", "Customers",1,acForm
 AutoForm: Datasheet      "Wzmain80.auto_Entry", "Customers",3,acForm
 AutoForm: Tabular        "Wzmain80.auto_Entry", "Customers",2,acForm
 AutoReport: Columnar     "Wzmain80.auto_Entry", "Customers",1,acReport
 AutoReport: Tabular      "Wzmain80.auto_Entry", "Customers",2,acReport
 Crosstab Query           "Wzmain80.xtq_Entry"
 Find Duplicates Query    "Wztool80.dup_Entry"
 Find Unmatched Query     "Wztool80.dwz_Entry"
 Simple Query             "Wzmain80.frui_Entry", "Customers",acQuery
 Form                     "Wzmain80.frui_Entry", "",acForm
 Form Chart               "Wztool80.cw_WizardEntry", "Customers",acForm,0
 MailingLabel             "Wzmain80.mlbl_Entry", "Customers"
 PivotTable               "Wzmain80.pvt_Entry","Customers"
 Report                   "Wzmain80.frui_Entry", "Customers" ,acReport
 Report Chart             "Wztool80.cw_WizardEntry", "Customers",acReport,0
 Table                    "Wzmain80.tw_Entry"
 Word for Windows Merge   "Wzmain80.pm_Entry", "Customers"
```

***NOTE: In Microsoft Access 7.0 for Windows 95, you use the same syntax except you use a 7 instead of an 8 in the library name. For instance, the Attachment Wizard would be referred to as "Wztool70.att_Entry in Microsoft Access 7.0"***

##REFERENCES
Microsoft Access "Building Applications with Microsoft Access 97," Chapter 12, "Using Library Databases and Dynamic-Link Libraries," pages 353-369.

Microsoft Access "Building Applications with Microsoft Access for Windows 95," version 7.0, Chapter 12, "Using Library Databases and Dynamic-Link Libraries," pages 292-294.

For more information about starting Microsoft Wizards in Microsoft Access version 2.0, please see the following article in the Microsoft Knowledge Base:

115121 ACC2: How to Start MS Access Wizards with WLib_WizMain Function

###APPLIES TO
•	Microsoft Access 95 Standard Edition
•	Microsoft Access 97 Standard Edition

###Keywords: 
kb howto kb usage KB148506

---

#ACC2: How to Start MS Access Wizards with WLib_WizMain Function
http://support.microsoft.com/kb/115121/EN-US/

View products that this article applies to.
This article was previously published under Q115121
Moderate: Requires basic macro, coding, and interoperability skills. 
You can start Microsoft Access Wizards from controls. This article describes how to start a wizard from a button on a form by calling the WLib_WizMain() function. 

The following steps demonstrate how to start a Wizard from a command button on a form:
<OL>
<li>Open a new form.
<li>Add a command button to the form.
<li>Set the button's OnClick property to: 


```
 =WLib_wizmain("",0)
```

NOTE: 0 invokes the Table Wizard. You can use 0, or any of the following choices in this example: 

```
       Table Wizard: ("",0)
       Query Wizard: ("",1)
        Form Wizard: ("",2)
      Report Wizard: ("",3)
```

<li>View the form in Form view. Click the command button. 
</OL>

You can also start a wizard from a custom toolbar. To do so, see article Q113304 here in the Microsoft Knowledge base. In step 5 of that article, select Miscellaneous instead of Record Navigation, and then select Macro instead of Find Record. Then, use a macro with a RunCode action that runs the function WLib_wizmain("",0). 

For an example of how to run Microsoft Access Wizards from Visual Basic in Microsoft Access for Windows 95 version 7.0, please see the following article here in the Microsoft Access Knowledge Base:

148506  ACC95: How to Run MS Access Wizards Using Visual Basic 

Retired KB ArticleRetired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

####APPLIES TO
Microsoft Access 2.0 Standard Edition

---


###APPLIES TO
Microsoft Access 95 Standard Edition
Microsoft Access 97 Standard Edition

###Keywords: 
kb howto kb usage KB148506

###Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.

---

#Microsoft Windows XP、Windows 2000、または Windows Me ベースのコンピュータで Office ヘルプを表示しようとするとエラー メッセージが表示される
http://support.microsoft.com/kb/249065/ja
文書番号	:	249065
最終更新日	:	2005年11月21日
リビジョン	:	3.1

##編注：
この記事はすでに解決済みの現象であり、さらにサポートも終わっている。このため全文を紹介する意味がない。あくまでも記事中に紹介されているため、参考として発掘したものである。

この記事は、以前は次の ID で公開されていました: JP249065
目次
現象
原因
解決方法
回避策
状況
詳細
現象の再現手順
現象
Microsoft Access で、Data Access Objects (DAO) ヘルプ ファイルを起動すると、次のエラー メッセージが表示されることがあります。
Microsoft Visual Basic
***Microsoft Access は、ヘルプを表示できません。エラーが発生しました。この機能は正しく動作しません。修復しますか?***
[はい] をクリックすると、Microsoft Visual Basic ヘルプのウィンドウが表示されますが、そのヘルプ ウィンドウにはトピックが表示されません。
[いいえ] をクリックすると、次のエラー メッセージが表示されます。
Microsoft Visual Basic

***ヘルプを表示できません。***
##原因
この問題は、Microsoft Office 2000 が Microsoft Data Access Components (MDAC) 2.1 用の HTML プログラミング ヘルプ ファイルをインストールしないために発生します。Microsoft Windows 2000 と Microsoft Windows Millennium Edition (Me) では MDAC 2.5 がインストールされ、Windows XP では MDAC 2.7 がインストールされますが、圧縮された HTML プログラミング ヘルプ ファイルはインストールされません。

Windows XP、Windows 2000、または Windows Me をインストールした後、Microsoft Office 2000 のインストール中に、システムは、MDAC が既にインストールされていることを検出します。このため、MDAC のインストールでは、圧縮された HTML プログラミング ヘルプ ファイルのインストールがスキップされます。Microsoft Visual Basic 環境で、オブジェクト、プロパティ、またはメソッドに関するヘルプ情報を検索するために F1 キーを押すと、「現象」で説明したエラー メッセージが表示されます。


##解決方法
 この問題を解決するには、Microsoft Office 2000 Service Release 1/1a (SR-1/SR-1a) を入手します。 
<中略>
この資料は以下の製品について記述したものです。
•	Microsoft Access 2000 Standard Edition
•	Microsoft Office 2000 Premium
•	Microsoft Office 2000 Developer
•	Microsoft Office 2000 Professional
<以下略>