前回は、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であることが示されます。

なお、開かれるデータベースファイルに、ウィンドウ最大化のコードを書いてもいいような気がしますが、
確認すると、うまく動作しませんでした。
どなたかその理由をご存じの方がいましたら、ご教授ください。
だい
ご覧になっていない方は、こちらからどうぞ。
今回は、ウィンドウを最大化してアクセスを起動する方法を取り上げます。
同じ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であることが示されます。

なお、開かれるデータベースファイルに、ウィンドウ最大化のコードを書いてもいいような気がしますが、
確認すると、うまく動作しませんでした。
どなたかその理由をご存じの方がいましたら、ご教授ください。
だい
※コメント投稿者のブログIDはブログ作成者のみに通知されます