|
「どういう・どのように」に付いて
API関数については、VBAの関数にない(あればAPIは必要ないので、当然ですが)
OS寄りの処理ができる関数と思って下さい。
(DLL<動的結合ライブラリ>から、関数の形で処理を呼び出します。)
API関数は、Declareステートメントでプロシージャの前に書き込むと
(あるいは新たに標準モジュールを挿入して、そこに書き込むと)、
通常のFunctionプロシージャと同じように
VBAのプロシージャから呼び出すことができます。
VBAでの作譜では、現実の作業に対処するため、APIに関連するものは
できたものをコピーして貼り付けというのが通常であり、
掲示板上にコードを載せたいのは山々ですが、
しかし、著作権上の問題があり、この本も「転載することを禁止」と
誠にご尤もなことですので、↓で御容赦ください。
御質問の「ユーザーフォームに最大化・最小化ボタンを付加し、
リサイズを可能にする」に付いて使う関数は、次の4つです。
クラス名またはキャプションタイトルを与えて
ウィンドウハンドルを取得する関数:FindWindowA
ウィンドウに関する情報を取得する関数:GetWindowLongA
ウィンドウの属性を変更する関数:SetWindowLongA
ウィンドウのメニューバーを再描画する関数:
User32.dllに媒介変数を指定したものを使用
使い方に付いて
実際のVBAでは、例として(途中は・・・で隠して)次のようになります。
[標準モジュール]では、次のように書き込みます。
Public Const GWL_STYLE = -16& 'ウィンドウスタイルを取得する
・・・
・・・
'クラス名またはキャプションタイトルを与えて
'ウィンドウハンドルを取得する関数の宣言
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
・・・
Declare ・・・
・・・
' ここから下が、これまで作ってきたプロシージャ
Sub UserForm1Run()
' ユーザーフォームを表示
UserForm1.Show
End Sub
Sub ・・・
・・・
End Sub
・・・
・・・
[ユーザーフォーム]では、次のように書き込みます。
Private Sub UserForm_Initialize()
' ユーザーフォームに最大化・最小化ボタンを付加する処理
Dim ・・・
myHwnd = FindWindow(myClassName, Me.Caption)
lngNewLong = GetWindowLong(myHwnd, GWL_STYLE)
・・・
End Sub
↑と、このようになります。これを「・・・」を含めて全部書けば、
処理が可能なわけです。
しかし、自前で全部調べて作るとなると…気が遠くなります。
立ち読みできなかった件に付いて
他の書籍では、APIを話題に取り上げているのは
現在のところ、次の1冊だけと言っていいと思います。
(それ以外は、C言語用で参考になりません。
但し、Excel VBAの書籍で同じ話題を扱っているものがあれば、
使い回しができるはずです。)
『Excel VBAによるWin32 APIプログラミング入門』
著者:大村あつし
出版社:エーアイ出版
ISBN:4871938905
サイズ:単行本
発行年月: 2002年 04月
価格: 2680円+悪税
「第8章 ウィンドウの操作」の
「UserForm2 ユーザーフォームに最大化・最小化ボタンを付加し、
リサイズを可能にする」
私が本屋を見て歩いた限りでは、紹介した書籍は、
大型書籍店・電気店直営本屋で扱っています。
(勿論、どの本屋も取り寄せ購入は可能です。)
図書館で扱っていれば、立ち読みした上、合法的にコピーできますが、
どうも図書館では、電算分野の書籍はすぐに内容が古くなるためか
余り扱わないようです。
また、図書館によっては確固たる方針として
この分野の書籍を他館に完全に一任し、
自館に置かないとしている場合があります。
図書館に購入を請求できる場合もあるようですが、
出版社と水面下で係争中の模様で、総ての館でできるわけではありません。
(電算機の発達で紙媒体業者が衰退産業になってしまっている上、
図書館が新刊本を貸し出すため、本屋の売上が激減している現実があります。)
それにしても、僅か数頁を読むために、
厚い本を1冊丸ごと買うのは誠に勿体ない話で、
そのための掲示板なのですが…この板上ではお役に立てず残念です。
おっと! ここまで書いた所で、検索して見たら、
サイト上にコードを載せている方を発見しました。
まずは、一覧して下さい。
K窓 http://homepage2.nifty.com/kmado/
Excel技 マクロ編 http://homepage2.nifty.com/kmado/ke_m8.htm
『E00M074(Excel2000)
項目 UserFormのウィンドウスタイルを変更する
内容説明 UserFormのウィンドウスタイル(属性)を
変更する方法を示します。
その1)ユーザーフォームに最大化最小化ボタンを付け、
又サイズ変更可能にする』
|
|