MS Access Tips/Sample and VBA and Blog customize etc...

VB.NETで自動バージョンアップ機能付きAccessファイル起動コマンドを作成する

前回の記事Visual Studio Express 始めましたで、Visual Studio Express をインストールして、前々回複数ユーザーで共有している場合のフロントエンドファイルのバージョンアップのVBSでの自動バージョンアップ機能付きAccessファイル起動コマンドを、VB.NET に移植したと
報告しましたが、今回は、この移植作業の経過を報告します。

VBAなどでVisialBasicの文法を理解していたり、他言語のIDEでの開発経験がある方が VB.NET を始める場合の参考になると思います。プログラミング未経験者は、入門サイトなどで学習してから読んでください。

VB.NET自動バージョンアップ

難易度:

インストールから最もシンプルなアプリケーションを作製するまで

Visual Studio Express のインストールは下記を参照してください。

VB Visual Studio Express 2013 インストールの手引き - ダウンロードからインストール、製品登録まで

インストールしたら、いよいよWindowsアプリケーションを作成します。
それも下記を参照してください。

VB はじめてのプログラム - プロジェクトの作成, プロジェクトの保存, プロジェクトを開く

ただし、最初の「新しいプロジェクト」ダイアログで名前を適切なものに変更してから、OKボタンをおしましょう。今回は「AccessFileStart」としておきます。

「新しいプロジェクト」ダイアログ

これでメッセージボックスが表示されてから、のっぺらぼうのウィンドウ(フォーム)が表示されるところまではできたと思います。

興味があれば、下記の目次から、入門講座の第2回以降も見ておいてください。

Visual Basic 入門講座

今回は、VBA経験者を対象ということで、いきなり、目的のアプリケーションの作成に行きます。

スプラッシュウインドウのデザイン設定

最初に開く「のっぺらぼうのウィンドウ」をスプラッシュウィンドウらしくデザインします。

まずは、左端のツールボックスをみてください。(表示されていない場合は、メニューの[表示]-[ツールボックス]をクリックしてください。)

VBAとは比較にならないぐらいコントロールがありますね。その中の「コモン コントロール」グループから[Label]をフォーム上にドラッグしてください。(ダブルクリックでもOKです。)

右端にプロパティウィンドウがありますので、そこの[Text]プロパティを起動したいAccessで作成してシステムの名前にします。とりあえず「□□□□システム」と仮定します。

[Font]プロパティのビルドボタンをクリックして、フォント名やフォントサイズをお好みに設定します。

さらにラベルを配置して、[Text]を、「起動中・・・」と設定します。

スプラッシュフォームデザイン画面

この辺の作業は、AccessのフォームのデザインビューやExcelのユーザーフォームとほとんど同じなのですぐ馴染めるでしょう。

ここで、ツールバーの[開始]ボタンをクリックしてみましょう。下記のようなフォームが表示されます。

実行フォーム画面

クローズボタンを押してフォームを閉じます。これでデザイン画面に戻ります。

スプラッシュウィンドウらしくするには、タイトルバーやコントロールボタン等を隠す必要があります。
フォームを選択して、プロパティの[表示]グループの[FormBorderStyle]を「None」に設定します。
[BackColor]もお好みに設定してください。

あとは、[Size StartPosition] を「CenterScreen」にします。これで、起動時にスクリーンの中央に表示されます。

また、スプラッシュウィンドウなので、タスクバーにアイコンを表示する必要がないので、
[Icon ShowInTasbar] を [False] にします。

これで、また[開始]をクリックしてみましょう。

スプラッシュフォーム実行画面

スプラッシュウィンドウらしくなりました。
さて、このウィンドウを閉じようとしても、クローズボタンがありません。焦らずに、「デバッグの停止」ボタンをクリックしましょう。

このコマンドは二重起動されると危険なので、できないようにしましょう。

メニューの[プロジェクト]-[AccessFileStart のプロパティ]をクリックします。
そこの「単一インスタンスのアプリケーションを作成する」にチェックを入れます。
これで、二重起動されなくなります。

プロジェクトプロパティ画面

これで、プロパティ等の設定は終了です。あとは実行したい処理のコードを記述することになります。

コーディング

さて、バージョンチェックのコードや、Accessファイル起動のコードを記述していくわけですが、どこに記述すればいいでしょう。

入門講座の第一回ではフォームの Load イベントにMsgBoxを記述しましたが、これだとフォームが表示される前にメッセージが表示されます。スプラッシュウィンドウなので、これではダメですね。
shown というイベントがあります。これが良さげなので、そこをダブルクリックしてコードエディターで下記のように記述します。

これで、開始するとフォームが表示され、その上にメッセージボックスが表示されてボタンを押すとフォーム自体も閉じるようになります。

ここにバージョンチェック等の処理コードを記述すればいいでしょう。まずは、Accessファイルを開くコードを挿入します。

これを実行すると、フォームが表示されてメッセージボックスのボタンをクリックするとフォームは閉じて、Accessファイルが開きます。

バージョンチェック処理の追加

複数ユーザーで共有している場合のフロントエンドファイルのバージョンアップ - hatena chips
上記の vbs のコードからバージョンチェックの部分だけ抜き出して、そのまま貼り付けました。

cnC.Open 引数部分は()で囲めと、指示がでるので、修正します。

これで、開始をすると、実行時エラーで、

If rsC("ver") < rsS("ver") Then

の行で止まります。中断ボタンを押して、デバッグを終了します。
おそらくValueが既定値として省略できないのだろうとということで、

If rsC("ver").Value < rsS("ver").Value Then

と修正します。

これで、開始をクリックすると、問題なく実行されてしまいました。修正済みのコードが下記です。

どうですか。VBAを使いこなしている人なら、簡単でしょう。

あっ、もう一つ大きな違いがあります。VBAやVBSではオブジェクトに代入する時は、Setが必要でしたが、VB.netでは不要です。コピーした時に Set は自動で削除されるので意識する必要はないですが。

VB.NETらしいコードに書き換える

VBSのコードなので ADOオブジェクトをCreateObjectで遅延バインディングしていますが、AccessVBAのよう事前バインディングに変更しましょう。VBAならADOに参照設定をしますが、VSも同様の機能があります。

メニューの[プロジェクト]-[参照の追加]で参照マネージャーを表示させます。[Com]-[タイプライブラリ]を選択して、右のリストから、Microsoft ActiveX Data Object #.# Library にチェックを入れます。
これで、Access VBA と同じようにコーディングできます。

参照マネージャ

また、ファイルコピーは、FileSystemObject は使わずに、.net の System.IO.File.Copy メソッドに変更します。

このコードではADOを使っていますが、VB.NETでは .NET Framework が提供する ADO.NET を使用したほうがシンプルに記述できるし、パフォーマンスも高いそうです。

ADO から ADO.NET への移行方法

VSで本格的なデータベースアプリケーションを作製するときになった時点でADO.NETの検討しても遅くはないでしょう。

実行ファイル

あっ、そうそう、大事なことを書き忘れてました。VSのような開発環境と、AccessなどのVBAの違いはAccessで作成してシステムはAccess(またはAccessランタイム)がインストールしていないと動作しないが、VSは実行ファイル(拡張子が EXE のファイル)を生成できて、VSがインストールサれていないPCでも実行して動作させることが可能ということです。(正確には、.NET Framework がインストールされていないとダメなんですが、Windowsなら最初からインストールされています。)

で、この生成されたEXEファイルがどこにあるかですが、VS2013の場合は、
マイドキュメントの中の「Visual Studio 2013」内の「Projects」というフォルダーにプロジェクト毎のフォールダーがあり、そこに各種ファイルが格納されています。そのフォルダーのなかの binフォルダー内のDebugフォルダーにあります。

今回は、最初に、プロジェクト名を AccessFileStart としたので、
C:\Users\ユーザー名\Documents\Visual Studio 2013\Projects\AccessFileStart\AccessFileStart\bin\Debugフォルダー内に、
AccessFileStart.exe が有ります。これをコピーして実行したいPCに置いてください。

まとめ

どうでしょうか。VBA経験者なら、意外と敷居は低いのではないでしょうか。

VBAにはない豊富なコントロール群を見ていると、これらを使って何か作ってみたいという意欲はわいてきませんか。

今回は、VBSのコードを移植しただけですが、次回で、もう少しVB.netの機能を活かして、格好いいものに改良していきます。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/424-0581fc68
該当の記事は見つかりませんでした。