[三流君(ken3.org)]/ [VBA(TOP)]/ [F1でヘルプを見る]/ [Debug.Printを使い値の確認]/ [ウォッチ式とSTOP]/ [デバッグ方法ほか]

プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う

Excelのマクロ記録 と F1のヘルプ表示 を使って、プロパティやメソッドを探ってみたいと思います。
近所や雑誌でよく聞く(ほんとか?)
マクロ記録で記録して、F1を押して、プロパティ、メソッドを探るそんな方法です。
まぁ、あまり深く考えないで、調べたいキーワードを選択して、F1を押してみてください。

/*
 * 1. プロパティ、メソッドって、なんとなくわかったけど、探し方は?
*/
プロパティは、
[No.36 オブジェクトのプロパティについて]を軽く説明。

メソッドは、
[No.37 オブジェクトのメソッドについて]を軽く説明。

したけど、なんかイマイチなんだよね。
実際、自分がやりたい処理を探すには、どうすればいいのか?わからないよ。

なんて声が聞こえたか、聞こえないかは置いといて、

/*
 * 2.基本編、マクロ記録でプログラムを作る
*/

よくプログラムはじめてなんですけど
って質問すると、
マクロ記録で記録してみたら?

なんて、会話を耳にしたり、雑誌で読んだりしてますよね?

この方法って、単体の機能を調べるにはとても有効だと思います

まずは、エクセル・ツールバーの
VisualBasicをオンにしておきます。
操作方法は簡単で、
表示 -- ツールバー -- Visual Basic
を選択してONにします。


シートの上に表示が浮かんでるとイヤなので(私だけかなぁ?)
メニューの下か上にドッキングさせます(別にこれはやらなくてもOKです)



ツールバーをみると、左から、
マクロ実行、マクロ記録、継続実行....となってます。

左から2番目の●マクロ記録をクリックします。


すると、
マクロの名前を入れろとダイアログが出るけど、気にしないでOKを押す。
(えっ、気にしなくていいの?)


あとは、目的の操作を行ってください。

私は行の削除を調べたかったので、
行削除を行います。


目的の操作が終わったら、記録終了のボタンを押します。


VBAの編集画面に行くと、

Sub Macro1()

    Rows("6:6").Select
    Selection.Delete Shift:=xlUp

End Sub

と操作に対応したオブジェクト、メソッドが記述されてます。


/*
 * 3.カーソルをオブジェクトやメソッドに合わせてからF1を押す
*/

無事に記録できたら、ヘルプでオブジェクトやプロパティ・メソッドを見てみます。
方法は簡単で、

Rows("6:6").Select
 ↑調べたい単語をダブルクリックしてから(反転選択される)、F1キーを押すか、
  カーソルを単語内に持ってきて(1クリック)、F1キーを押します。


すると、ヘルプが表示されます。
関連項目、使用例などをみます。


偶然にも、
この使用例は、Sheet1 の行 3 を削除します。
Worksheets("Sheet1").Rows(3).Delete
なんて書いてあるので、指定行を削除するのは、
Rows(行).Delete でいいのか、と知ることが出来ました。
*おいおい、出来過ぎでしょこの例は、
 ですよね、、、

/*
 * 4.ピリオド.を打ちこんだ後の自動表示で探る
*/

オブジェクトを打ちこんだ後、
.を入力すると、入力支援機能が働いて、
プロパティやメソッドがリストボックスで表示されます。

これを利用して(表示された英単語で想像して)、
探ってみます。

例えば、msgbox thisworkbook.と入力したら、
リストボックスにたくさんのプロパティ、メソッドが表示されます。
*こんなの全部覚えられないよね...
 (と思う、、が世の中には六法全書を覚える人が居るんだから不可能じゃない?)


あとは、同様にF1を押して、動作や内容を探ります。

/*
 * 5.日没前に(笑)
*/

そんな調べ方してたら、日が暮れるよね。
そんなご意見のアナタへ送る方法が、
Sub test()
   Dim a
   a = a + 1
End Sub
と、何か書きます。
a = a + 1の場所にカーソルを移動させ右クリック。
メニューの中の
設定解除 -- ブレークポイント
を選択します。
これで、プログラムを止める位置を設定しました。


あとは、同様にプログラムを実行すると、
プログラムが指定した位置で止まります。


またまた再度右ボタンを押して、
ウォッチ式の追加を選択します。


ここで、thisworkbookと探りたいオブジェクトを選択します。


ThisWorkBookと式が追加されるたら、
横の+ボタンを押してみます。


すると、オブジェクトの構造がツリー状で表示されます。


なんて、あまり使わないやり方もあります。
*かなり外しましたね、う〜ん。
 (ウオッチ式は、デバックの変数で使ったほうがいいですね)

/*
 * 6.終わりの挨拶
*/

今回は、
・プロパティ、メソッドの探り方
でした。

基本は、F1を押して、関連項目や使用例で探るのがいいと思います。
よく、ヘルプで調べろ、、と偉い人が掲示板で言ってる意味がわかるような、
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
わからないような今日この頃、
ヘルプで調べる方法の参考となればうれしいです。

掲示板のお偉いさんの調べ方、調査方法が知りたいとフト思いました。
お奨めの調査方法あったら、掲示板に書いてくれるとうれしいです。

拾い読みして、
1つでも何かの参考となれば幸いです。

Excel/Access大好き、三流プログラマーKen3でした。

探り方の動画?

マクロから、ディレクトリ・フォルダーを作成したくて、マクロ記録を使った、そんなお話です。

※マクロ記録で記録して、chdir関数が見つかり、chDir関数の関連項目で、 MkDir関数 に たどり着く、、、そんなお話です。
なれてくると、関連項目からも探せるようになるのかなぁ・・・

マクロ記録 で ブックのOPEN シートのCOPY シートの貼り付け ブックのCLOSE を 探った。

※Excel ファイルを開いて シートをコピー 貼り付け コピー元を閉じる
マクロ記録で処理を記録して、固定値を変数に直してみました。
ソースと解説は[出欠管理 と 督促メールの送信 を ExcelとOutlookで行う]をみてください

マクロ記録でグラフのコピー方法を探った。

※マクロ記録して、カットしたり、肉付け(追加)して、プログラムを修正した、そんなお話です。
ソースと解説は[VBA Outlook リッチテキスト形式のメール で グラフを送る]をみてください


質問や要望、クレームを送る(三流君に連絡する 連絡方法)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい

(感想や質問・要望・苦情はHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。


#IE IE Web Browser のプロパティ・メソッドを調べる

番外編 IE関係のプロパティ・メソッドは MSDNを使って調べる

IEのオブジェクトを探すときなど、大好きなF1のヘルプが効かないときは、
MSDNから探ってみるのも手です、(が、目的のページが英語だとつらいんだけど・・・)
あまり使わないと思いますが、番外編で載せます

IEのオブジェクト関係をMSDNから探る

英語だけどMSDNの下記の項目を見るとオブジェクトの階層構造がわかりやすいと思います。
MSDN Library - http://msdn.microsoft.com/en-us/library/ms123401.aspx
□□□|--- Internet Explorer Development http://msdn.microsoft.com/en-us/library/aa155133.aspx
深いので省略(オイオイ、意味無いだろTOPからたどらせないと)
□□□□□□□|--- WebBrowser Control http://msdn.microsoft.com/en-us/library/aa752040.aspx

IE Reference for Visual Basic Developers ↓に深く埋まってます(英語ですが)
[http://msdn2.microsoft.com/en-us/library/aa752043.aspx] が 一覧で、その 下に、
InternetExplorer Object [http://msdn.microsoft.com/en-us/library/aa752084.aspx] をクリック
document Object [http://msdn.microsoft.com/en-us/library/ms531073.aspx] をクリック
Collections の 中の all [http://msdn.microsoft.com/en-us/library/ms537434.aspx] をクリック
などして、さまよいながら・・・探したりしてます。(三流ガイドの私も迷ってます)
MSDNの英語ってツライですよね。
読者の心の声:だったらテメエがわかりやすく翻訳したり説明しろよボケ
[後輩に追い越される三流な先輩]←こんな感じで後から来た皆さんに追い越されれると思いつつ(笑)三流的な調査方法を載せました。
※ここ見ろ と 三流君被害者の会 会員さんから教えてもらいました(2008/05/16)
[NET Framework クラス ライブラリ WebBrowser メソッド]
↑あれれ、よく見る日本語だぁ(笑)VBAでも応用して使える部分があると思います。※いままでの苦労は、、なんだったんだ(オイオイ)※※また三流情報で被害者を増やしちゃったよ(かなり反省)三流君被害者の会 会員がこれ以上増えないことを願いつつ、、

下記 MSDNでdocument Objectを探った動画、↓下見して作ったつもりが迷いまくってグダグダ(笑)な動画です。

↑MSDNを探るヒントになればいいのですが・・・

MSDN の Dynamic HTML 資料から プロパティやメソッドを探るのもアリ?

英語のページはニガテ、できたら日本語のページ無いの?三流君は回答が遅いので自分で調べたい・・・と、よくメールや電話で質問されます。
やはり日本語の資料が見たいよなぁ・・・いつもの適当な案ですが、
IEの操作と言ってますが、実際は目的のサイト運営者様がHTMLなどで表現した文章(オブジェクト)なので、その作成元となるHTMLやDynamic HTML の 資料から プロパティやメソッドを探り、そこからIEのプロパティやメソッドを検索する、そんな方法もアリかなぁと思います

で、実際の検索場所は、※ここも深いけど日本語なので やる気が出てくると思います
Internet SDK: プラットフォーム SDK
http://msdn.microsoft.com/ja-jp/library/cc364514.aspx
から
Dynamic HTML : http://msdn.microsoft.com/ja-jp/library/cc409712.aspx
の先の(オイオイ、まだ深いの?)

ドキュメントオブジェクトモデル : http://msdn.microsoft.com/ja-jp/library/cc392328.aspx
とか、同じ階層の(左側のメニュー)より
DHTMLリファレンス : http://msdn.microsoft.com/ja-jp/library/cc409720.aspx
が、日本語でHTMLの感じをつかむにはいいのかなぁ。

↓こんな感じでイロイロとDHTMLの表現方法が載ってます
オブジェクト http://msdn.microsoft.com/ja-jp/library/cc427917.aspx
プロパティ   http://msdn.microsoft.com/ja-jp/library/cc409928.aspx
メソッド     http://msdn.microsoft.com/ja-jp/library/cc428092.aspx
イベント     http://msdn.microsoft.com/ja-jp/library/cc392219.aspx
コレクション http://msdn.microsoft.com/ja-jp/library/cc410331.aspx
↑上記の日本語DHTMLリファレンスページでFormやLink , Documentの.allなど
HTMLのドキュメントオブジェクトの感じをつかんでから、
再度MSDNのIE英語ページへアタックしてみるのも1つの手かも。
※DHTMLに対応した操作がIEでも可能と仮定して、DHTMLから探り、同じプロパティ・メソッドを探す、そんな狙いです。

デバッグで止めて、現物の変数objIEを見る

資料探しに飽きたら現物を動かしながら見る、そんな方法もあります。デバックで止める、ウォッチで中身を見るがポイントです。※一度くらいは資料だけじゃなくて現物をさわってみては?

あんまり好きじゃないけど、
ブレークポイントを設定し、デバックで止めて、変数の中身・オブジェクトを見てみます。
~~~~~~~~~~~~~~~~

Sub xxxxx()
    Dim objIE    As Object  'IEオブジェクト参照用
    'インターネットエクスプローラーのオブジェクトを作る
    Set objIE = CreateObject("InternetExplorer.application")
    objIE.Visible = True '見えるようにする(お約束)
    '文字列で指定したURLに飛ぶ
    objIE.Navigate "http://xxxx.xxxx.xxx/yyy.html"
    'デバックで止める
    MsgBox "OK?"
End Sub
右クリック、設定・解除 -- ブレークポイントを選択し、設定します。
←参考画面
※左側の余白を押してONとOFFを切り替えてもOKです。

次にobjIE変数のオブジェクトの中身を見たいのでウォッチ式を追加します。
追加方法は、どこでもいいので、ソースの画面で
objIEをドラックして反転表示の選択後、右クリックしてウォッチ式の追加を選択します。
←参考画面

実行して、オブジェクトの中身を探る
ブレークポイントの設定
変数objIEをウォッチする準備が整ったので、
実行して、変数の中身を探ってみます。

実行すると、ブレークポイントの場所で止まります。
当たり前だろ、そのために設定したんでしょアナタが。
そうでしたね。

ブレークポイントで止まってからは、
飲み会に誘った女の子みたいに逃げないので
落ち着いて中身をチェックしましょう。
(飲み会で女性陣に逃げられてるみたいだなぁ、この書き方だと(笑))

ウォッチウインドウの変数名の横+をクリックして中身を探って行きます。
←参考画面
それにしても、階層が深いです。
テーブル系のオブジェクトを探すが、なかなか見つからない(笑)
(女の子じゃなくって、IEの心の中は複雑なのね、、、)

中身を確認するために、となりのイミディエイトウインドウで、
←参考画面
? objIE.document.body.innerText
とか、中身を聞いてみた(アクセスすることもできます)

ここだけは静止画よりも動画操作イメージの方がいいのかなぁ?
STOPやデバッグで止め
イミディエイトやウォッチ式でオブジェクトを確認

こんな感じで、プロパティやメソッドを探すって、意外と大変なんですよ。
続きに興味があったら [三流君 VBAでIEを操作]を見て笑ってください
※いろいろな応用を考えないとなぁ・・・


分類別に記事を紹介

分類別といっても、あまり分類別にまとまっていないのですが、、、↓

よく使う操作方法

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[プロパティ、メソッドを探る方法]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、あわてないでデバックを押す]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOP]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話
[サンプル 実行方法]・・・Alt+F11 や ツール--マクロ から VBAの編集画面を開き F5で実行?

仕様書のお話(XXX設計書)

イロイロな仕様書・設計書を各工程で使っていくのですが、その一部を書きました。
[基本設計書/仕様書のお話]・・・仕様書・設計書を書いてますか?簡単な流れを書きました。
[テスト仕様書のお話]・・・テストデータ XXXXを入力したら、YYYYになる ほか
[バグの連絡票とテストケース]・・・バグ・不具合の連絡を受けたら 原因を書き 処置する。
[関数仕様書のお話]・・・仕様書は頭の中にありますでいいの?かよ?
[作業の流れ 入力・処理・出力ほか]・・・フォルダー選択を例に仕様書と流れを解説

プログラムのお話

[作成時 Ctrl+C Ctrl+Vの前によく考えよう]・・・コピープログラムの落とし穴?
[関数に汎用性を持たせる、共通に使える関数作り]・・・共通に使える関数(財産)を作りましょう

Access関係:アクセス側からのアプローチ

[AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
[Accessのレポートを操作]・・・レポートを操作してみました
[Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

Excel関係:エクセル側からのアプローチ

[Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

その他:VBAの共通関数やテキストファイルの操作など

[VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

blog:あまり更新していない作業日記 → [三流君の作業日記] と [通販商品の足跡] も よろしくお願いします。



[三流君(Ken3.org)] / [VBAで楽しく] / [VBA バックナンバー]