goo blog サービス終了のお知らせ 

パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

VBからAccessを最大化して起動する(Visual Studio2008)

2011-05-17 09:00:45 | Visual Basic
前回は、VBからエクセルを最大化して起動する方法をご紹介しました。

ご覧になっていない方は、こちらからどうぞ。

今回は、ウィンドウを最大化してアクセスを起動する方法を取り上げます。

同じMicrosoftの製品でも、コードの内容が異なることがお分かりいただけるでしょう。
一緒にしてくれればいいのに、と思うのは、僕だけでしょうか。


それでは、任意の名前で新規プロジェクトを作成します。

フォームが表示されたら、ボタンを1つ配置します。

名前は、初期設定の「Button1」のままです。
Textプロパティに「Access起動」と設定しました。
(下の図参照)




このボタンをクリックしたときに、Accessを起動し、最大化します。

なお、Accessは、データベースを開かないと意味がないので、
フルパスで、任意のデータベースファイルを指定するようにします。

フォームのボタンをダブルクリックして、コード画面に切り替えます。

以下のように記述してください。



Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, _
               ByVal e As System.EventArgs) _
               Handles Button1.Click

    'Accessを最大化して起動する
    'WinApiを使用する方法もあるらしいが、この方が簡単です
    'Accessの持っている機能を使う 

    'Accessのファイルに書いても、アプリは最大化しない(原因は不明)

    Const acCmdAppMaximize As Long = 10

    Dim path As String = "I:\xxxxxx\pcc\pcc2007.mdb"
    Dim ac As Object = CreateObject("Access.Application")

    ac.OpenCurrentDataBase(path)
    ac.RunCommand(acCmdAppMaximize)
    ac.visible = True

  End Sub
End Class


画像も載せておきます。






pathという変数に、フルパスで開くファイルを指定します
CreateObject関数で、Accessオブジェクトを生成します。

あとは、このAccessオブジェクトの持つメソッドとプロパティをうまく使います。

OpenCurrentDataBaseメソッドで、ファイルを開きます。

このあとが最大化処理です。
RunCommandメソッドで、アプリケーションの最大化を行います。

エクセルと違って、Accessは、アプリケーションの最大化というメソッドを持っているのです。
このメソッドの引数に acCmdAppMaximize を指定していますが、
これは組み込み定数といい、AccessVBAの中で数字の代わりに使えるようになっているものです。
ですから、正体は、数値です。
ただし、今は、AccessVBAで制御しているわけではありません。
したがって、組み込み定数をそのまま使うと、エラーとなります。

この対策として、
Const acCmdAppMaximize As Long = 10

の行で、組み込み定数を変数として宣言し、正体の10という数値を代入しています。
これで、使用できるようになります。
(もちろん、引数に直接 10 と入れても大丈夫ですが、可読性を考慮しています)

あとは、Visibleプロパティで、表示すれば完了です。



デバッグ実行すると、Accessのウィンドウが最大化して起動することがわかります。


なお、Accessの組み込み定数の正体の数値を見抜く方法をご紹介します。

任意のデータベースファイルを開き、VisualBasic Editorを開きます。
「表示」メニューの「オブジェクトブラウザ」をクリックします。

画面左の<グローバル>をクリックし、右側の一覧から、acCmdAppMaximize を選択します。

すると、画面下に、数値が10であることが示されます。





なお、開かれるデータベースファイルに、ウィンドウ最大化のコードを書いてもいいような気がしますが、
確認すると、うまく動作しませんでした。

どなたかその理由をご存じの方がいましたら、ご教授ください。


だい

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 今週のおすすめ記事 | トップ | 表内の行を簡単に移動する(Word) »
最新の画像もっと見る

コメントを投稿

Visual Basic」カテゴリの最新記事