● Access2000VBA・Excel2000VBA独学~今選択しているオブジェクトの、『階層構造を省略しないオブジェクト式』の書き方・目次とサマリーもどき

  
※まだ書きかけです。すみません。
※間違ってたらすみません。
※メモ書きなので、自分でも意味不明な箇所も多いです。ごめんなさい。
  
  
※全部が全部、100%できるわけではないかもですが、割と多くのオブジェクトに対応できると思います。
  
  

(01)目的

今選択しているオブジェクトのオブジェクト式を、できるだけ階層構造を省略せずに書けるように。そのために、ヘルプを少しでも読めるように。

=====================================

(02)理由

今選択しているオブジェクトのオブジェクト式を、できるだけ階層構造を省略せずに書けることが、VBAのオブジェクト操作での「基本中の基本中の基本」であるから。

そして、基本がしっかりしていれば次のようなメリットがあるから。
  
  
(a)ヘルプが読めるようになるので、エラーが出ても自力で解決できるようになる。
あるいは、ヘルプが読めることでエラー解決が早くなる。

(b)『マクロの記録機能でオブジェクトを調べても、必要なオブジェクト式の書き方がわからないとき』に、なんとか自力でオブジェクト式が書けるケースが増える。

(c)Webでオブジェクトのことを調べても自分の欲しい情報が無かった時に、自力でオブジェクト式が書けるケースが増える。

(d)「Web検索でヒットした情報は、そもそも、自分が探しているWeb情報なのか?」の判断がすごく早くなるので探す時間がすごく減る。
そもそも、何を検索したらいいかがすぐにわかる。検索の範囲も意図的に狭くできる。

(e)APIやSQL、DAO・ADO、なども多少使えるようになるため、共用部品を作る力がアップする。それによるコスパのアップがしやすくなる。

(e)「マクロの記録」で作ったプログラムを「汎用」に作り替えたり、それをアドインメニュー化したり、汎用部品・共用部品を作るヒントにすぐにできる。

(f)以上のようなシーンが増えるので、短期間のうちに、中級の中・以上の腕前になれやすい。

(g)結果、いろんな面でコスパが良くなる。

(h)例えば有料で習いに行ったとしても、講習費用をできるだけ短期間に回収できる・・・、くらいの腕前になれる。

=====================================

(03)オブジェクト式を書くための道具たち(重要度順)

(a)オブジェクトモデルの階層構図の全体図(オブジェクト所得・操作の羅針盤。最重要なツール。)
2000のものしかないけど役に立ちます。

この2000のヘルプの全体図は、ちょっと形が変わりますが、Webにもあります。
MSサイト→こちら /少し見やすく横につなげたもの→こちら /Excel2000の色付きの見やすいものを全部つなげたもの→こちら


  
  
(b)ヘルプ

参考記事
Access2000VBA・Excel2000VBA独学~XPやWin2000、あるいはその仮想マシンの中で、Office2000~2003でADOやDAOのヘルプをきちんと表示する方法と、2000系のヘルプと2007系の「”VBE”ヘルプ」の違い・良さ。
  
  
(c)VBE(Visual Basic Editor)の「オブジェクトブラウザ」
  
  
(d)VBEの「イミディエイトウィンドウ」
  
  
(e)「選択したオブジェクトの調査シート白地.xls」(当方自作の参考ツール)


  
  
(f)「TypeName関数」と「Parentプロパティ」と、VBEのイミディエイトウィンドウ
  
  
(g)「Stop」命令又は「ブレークポイント」と、VBEのローカルウィンドウで
  
  
(g-2)「TypeName関数」「Parentプロパティ」「Stop」命令を使った、「上位のオブジェクト階層構造を知る・取得する」ための自作関数

Access2000VBA・Excel2000VBA独学~「選択したオブジェクトの調査シート白地.xls」(当方自作の参考ツール)~3つの自作関数とともに。★ ~Current無省略オブジェクト式記述~
  
  
(h)Web情報・Web記事
  
  
(i)マクロの自動機能で自動作成されたコード(特に列挙体・列挙・定数を調べたいときに)

例えば、ワークシートに埋め込んだグラフの縦軸の色を赤に変える作業をマクロの記録機能で記録。

Sub test01()

' test01 Macro
'
ActiveSheet.ChartObjects("グラフ 1").Activate
ActiveChart.Axes(xlValue).Select

'「線のスタイル」タブ?の設定
With Selection.Format.Line
.Visible = msoTrue
.Weight = 3.5
End With

'「線の色」タブ?の設定
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
End With

End Sub

  
  
=====================================
  
  

(04)それらの「道具たち」を使いこなすために必要な知識(大雑把でOK)
  
  

(aa)プログラミングとは?VBAとは?(A図)
この図は、「オブジェクトとは?」を考える前の段階の、「プログラムを作るとは?」「VBAプログラミングとは?」ということについてまとめてあります。
基本、「この2つの図の中で意味がわからないことがあったら、VBAの上達は100%のぞめない」です。
なので、人によっては、こちらを先に理解するとよいかたもいます。特に、VBAの「超」初心者の方です。
そういう方がたにとってはこの図は「VBAプログラミング全体としての地図」とか、「プロシージャの中に書くものの地図」、「自分が今どの部分を学んでいるのかの地図」でもあります。ですので、ぜひ、(繰り返しになりますが)「この図の中で意味がわからないことがあったら、VBAの上達はのぞめない」という風に意識して頂いて、この図の中の「わからないところ」を潰す作業から入ってみてください。この図の中の「意味のわからないところ」を先生に聞きまくる、とか、Webで調べまくる、といった使い方をしてみてください。

一般的に、「プログラミング」とは、「変数」というものを思い通りに動かすことで「自動化を実現する」作業です。
そしてVBAプログラミングの場合、「変数」には大きくは「2種類」あります。
「一般的な変数」と「オブジェクト変数」の2つです。

※オブジェクトを動かすシーンでは、現実には「オブジェクト変数」のかわりに、「オブジェクト式」によるオブジェクト操作のほうが多くて、そちらが主流なのですが、「本来はオブジェクト変数を動かすほうがいい」と考えてしまうほうが「全体がすっきりする」と思います。
そのほうが「だからもっともっとオブジェクトに関する指導・教習をせねばならない。」となり、実際、初期の段階でもっとオブジェクト変数やオブジェクトやプロパティ・イベントの構造などつについてレクチャされたほうが、我々ド素人は、自分自身も、もっと能動的に成長を早められるし、挫折の回数もすごく減らせると思います。

そして本当に疑問なのが、どうして、ExcelVBAのプロの講師さんたちが、「VBAオブジェクト大図鑑」といった感じの本を出さないのかがさっぱりわかりません。
オブジェクトブラウザとヘルプの連携技、ヘルプの読み方、オブジェクトモデルの階層構造図の全体図、オブジェクトが保持する「プロパティ、メソッド、イベント、列挙」など、もっともっと初心者にわかりやすく説明してほしいです。

僕は、Excelのプロ講師さんたちが、まずExcelの画面やメニューの絵がまずあって、で、その横に、「このメニューや画面・機能・ダイアログはこのオブジェクト。そしてこのダイアログの中のこの設定はこのオブジェクト。設定項目はこの列挙。この操作はこのメソッド。そしてそれらでそういうことができる」という感じでいろんな説明がド素人にもわかるように書いてある、まさに、「オブジェクトとオブジェクト変数のことだけの」「ExcelVBAオブジェクト大図鑑」を書いてほしいと思います。

それを書かないってことは、もとから教える気が無いか、出し惜しみして「レベルの低いところでラクに儲けようと」、ラクして儲けようとしてるんじゃないか?と疑います。
ある意味、「一番肝心なことを”あえて”教えない、手抜き教習」。

Excelが出て20年もたったのに、そういう本がほとんどない(というか僕は一冊も知らない)、というのは、そういう、教える側・業界全体の怠慢ではないか・・・?と真面目にそう思います。

最近やっとExcelVBAに目覚めた、いち、ド素人のエンドユーザーの感想としましては。

20年もあったら、だれか一人くらいそういう本出すでしょ?ふつう。

それやらないから、低レベルなとこで、いまだにみんな挫折するのではないでしょうか?
いつまでたってもエラーが自力で解決できない・・・とか。
Q&Aサイトで聞いても結局意味が理解できず、絆創膏貼るだけの対応しかできない・・・。

もう日本の国際競争力のことやお若い方々の将来やプログラミングの一般教科化のことを真面目に考えたら、自分のホームページで無料Tips公開バンバンせずに、あいも変わらず低レベルなこと(例えば定型ビジネス集計とか)でお金とる人は「プロの教える人」とは呼べない時代になったのでは?ある意味ぼったくりに近いのでは?と思います。
  
  
(ab)プログラミングの操作対象:「変数」に対する簡単な理解(一般変数とオブジェクト変数の区分やそれぞれの役割、さらに細かい種類、など)
  
  
(ac)プログラミングの操作対象:「配列」について
  
  
(ad)プログラミングの操作対象:「定数」についてと、VBA定数(?列挙体?)のイメージについて
  
  
(ae)プログラミングの操作対象:「予約語」とユーザーが付けられる名前について
  
  
(af)「VBE(VisualBasic Editor)」の画面の簡単な説明
  
  
(ag)簡単なプログラムの書き方例とVBEとの関係
  
  
(ah)プロシージャの種類とVBEとの関係
(ai)モジュールとVBEとの関係
(ai-2)SubプロシージャやFunctionプロシージャの呼び出しについて
 (SubプロシージャやFunctionプロシージャの実行方法や実行できる場所について)

ここでの上記の3つの項目は、以下の2つのPDFをご参考にしてみてください。
VBA関連の書籍を読んでいるときに、自分がどの部分について読んでいるかを知るための「地図」のような感じでも使ってみてください。

VBE_プログラムを書く場所について.pdf
↑↓ Ctrlキーを押しながらマウスのホイールを回して、拡大して見てみてください。
文字がおおきくはっきりと見えてきます。

  
  
SubプロシージャやFunctionプロシージャの呼び出し可能方向(実行できる場所・方法)について.pdf
↑↓ Ctrlキーを押しながらマウスのホイールを回して、拡大して見てみてください。
文字がおおきくはっきりと見えてきます。

これらの2つの図は、SubプロシージャやFunctionプロシージャの呼び出しについて、「プロジェクトエクスプローラを直接用いた説明文書」が無いと思ったので作りました。(SubプロシージャやFunctionプロシージャの実行方法や実行できる場所について書いてあります。)
特に、SubプロシージャやFunctionプロシージャの呼び出しについては「どれだけ人間がサボってラクをするか」に関係が深いですし、中級に上がるとかヘルプやオブジェクトブラウザをちゃんと扱えるようになるには必須の知識ですので、必ずマスターする必要があります。
この2つのPDFに書かれていますことは、こちら のPDFとともに、VBAの基本中の基本の1つですので、分かる人に良く聞いて、すべてが理解できて僕のミス記述を指摘できるようになるまで、100回でも200回でも聞いて、マスターしてください。(至る所で間違いを犯していると思いますので)
でなければVBAをやる意味が無いので、最初からVBAなんかやらないで、誰か外注で安くやってくれる人を探したほうがいいです(学生さんとか)。イヤミではなく本当に「ムダ」で時間やお金がもったいないので、「”基本”をやる気や時間が無い」とか、「コスパを重視したい」という人・会社・お店さんは本当にそうしたほうがいいです。

この2つの図も、「オブジェクトとは?」を考える前の段階の、「プログラムを作るとは?」「VBAプログラミングとは?」ということの一環としてまとめてあります。
そのため、基本、「この図の中で意味がわからないことがあったら、VBAの上達は100%のぞめない」です。
なので、人によっては、こちらを先に理解するとよいかたもいます。特に、VBAの「超」初心者の方です。
そういう方がたにとってはこの図は「VBAプログラミング全体としての地図」とか、「プロシージャの中に書くものの地図」、「自分が今どの部分を学んでいるのかの地図」でもあります。ですので、ぜひ、(繰り返しになりますが)「この図の中で意味がわからないことがあったら、VBAの上達はのぞめない」という風に意識して頂いて、この図の中の「わからないところ」を潰す作業から入ってみてください。この図の中の「意味のわからないところ」を先生に聞きまくる、とか、Webで調べまくる、といった使い方をしてみてください。最初のうちは詳細までやる必要はないですから、でも、『 外郭、アウトライン、全体像が「常に絶対に頭の中にあって忘却しない・すぐに思い出す」』という状態を目指してください。

  
  
(aj)関数について(数値・文字・日付などの文字ベースの各種の値の操作、ファイル操作、オブジェクト操作、など)
ワークシート関数とVBA関数の違い
オブジェクトブラウザ上では、ワークシート関数は「WorksheetFunction オブジェクト」のメソッドとして、VBA関数は、「DateTimeモジュール」や「FileSystemモジュール」、「Financialモジュール」「Conversionモジュール」「Mathモジュール」「Stringsモジュール」等々のメソッドとして表示されます。
  
  
(ak)ステートメントについて
  
  
(bg)「関数」と「ステートメント」は一般変数やオブジェクト変数の外側に居て、外側からそれらを動かすイメージ。「プロパティ」「メソッド」「イベント」はオブジェクト変数の内側に居て、内側からそれらを動かすイメージです。
各種の命令たちが、「変数の外側に居ようが内側に居ようが」、変数を動かすことに変わりはないので結局は大したことではないんですけど、ただ、それでもVBAプログラミングの全体像の把握の一助になれば・・・。
  
  
(al)プログラミングの操作対象:「オブジェクト」の事例(実際の画面の各パーツやメニューとの関係)
  
  
(am)プログラミングの操作対象:「コントロール」について(ユーザーフォーム上とシート上)
AccessのフォームはExcelのユーザーフォームの操作と少し似ている
コントロールと呼ぶのは同じ。ただしAccessは表の上にコントロールは作れない。
Excelはシートの上にコントロールを作れます。
  
  
(an)プログラミングの操作対象:「コレクション(=コレクションオブジェクト)」について
  
  
(ao)プログラミングの操作対象:「Enum・列挙型・列挙体・列挙」と「定数」について
各種設定ダイアログの、各種設定項目のドロップダウンの中の各種値が列挙体の各値になっているっぽいです。
  
  
(ap)プログラミングの操作対象:オブジェクトモデルの階層構造の理解(コレクション→単一オブジェクト→プロパティ、メソッド、イベント、ユーザー入力値、階層構造)
WorksheetオブジェクトやRangeオブジェクト、Chartオブジェクト、Shapeオブジェクトなどを例に。
5つの機能も含めた細かいところまで。
Application→コレクション→単一オブジェクト→プロパティ、メソッド、イベント、ユーザー入力値、階層構造
  
  
(aq)プログラミングの操作対象:すべてのオブジェクトはその1つひとつが「5つの機能」を保持している。(プロパティ・メソッド・イベント・ユーザー入力値・階層構造、は、厳密な説明を理解するより、どれも、全部、”オブジェクトが保持する「機能」たち”、と大雑把にとらえるほうが色々と理解しやすい)
  
  
(ar)プログラミングの操作対象:「オブジェクトの取得」と「オブジェクト式」「部分オブジェクト式」について
  
  
(bf)プログラミングの操作対象:「オブジェクトの取得」=「オブジェクト式の作成」=「オブジェクト式を書く作業」は、主に、番号でやるか、名前でやるか、列挙型の定数でやるか、の3パターンが多い。
  
  
(be)プログラミングの操作対象:オブジェクト変数と「真に代入されるのは”参照”」の意味についてと、でも「代入された=5つの機能が使える」と理解するほうが面倒くさくない、ということについて
  
  
(as)「5つの機能」はオブジェクトの内部に居座りつつ、オブジェクトを動かせる。
A図

  
  
(at)「関数」や「ステートメント」はオブジェクトの外側からオブジェクを動かせる。
A図

  
  
(au)プログラミングの操作対象:「オブジェクト式」と、オブジェクト式を代入したオブジェクト変数」の関係について(イコール関係・その他の視点について)
  
  
(av)プログラミングの操作対象:「一般的な”コンテナ”の意味」、「ヘルプに書かれた”オブジェクト”としてのコンテナ(埋込オブジェクト:ガワ、の意味」について
  
  
(aw)プログラミングの操作対象:ワークシートに埋め込まれたグラフの扱いとコンテナとVBEについて
  
  
(ax)イベントプロシージャの簡単な作成事例とVBEについて
  
  
(ay)ユーザーフォームの簡単な作成事例とVBEについて
  
  
(az)「標準モジュール」の使い方
消し方、解放、インポート・エクスポート(バックアップ)
  
  
(ba)「ワークシート関数」と「VBA関数」について
  
  
(bb)「値を返す関数」とその自作について(オブジェクトブラウザの操作の理解に必須)
  
  
(bc)「オブジェクトを返す関数」とその自作について(オブジェクトブラウザ操作の理解に必須)
  
  
(bd)目的のオブジェクトのインデックス番号がわからないときのあたりの付け方
  
  

=====================================
★ ヒント:「部分オブジェクトの取得」の基本は、まずは3パターンくらいから。

=====================================

(05)今選択されているオブジェクトの、「階層構造を省略しないオブジェクト式」の作り方・書き方

(a)使うもの
「選択したオブジェクトの調査シート白地.xls」(当方自作の参考ツール)
・ヘルプ(主に、オブジェクトを特定するための構文を。)
・オブジェクトブラウザ
 (いろいろ。オブジェクトの上下の階層構造や下位オブジェクトのことなどを。)
・VBE(Visual Basic Editor)のイミディエイトウィンドウ
・Stop命令とVBEのローカルウィンドウ
 (主にプロパティの値やオブジェクトの上下の階層構造、列挙の設定値などを。)
・3つの自作関数(→こちらの3つ
・「TypeName関数」と「Parentプロパティ」
・その他の関数、ほか
  
  
(b)「オブジェクト式」とは?:「オブジェクト式」と「部分オブジェクト式」
  
  
(c)大まかな流れ(概要・ポイントのみ。何を使うかなど。)

    (03)のオブジェクト式を書くための道具たち(重要度順)
    「選択したオブジェクトの調査シート白地.xlsx」(当方自作の参考ツール)
  
  
(d)イミディエイトウィンドウで使う自作関数(ちょっとした省力化)

  イミディエイトウィンドウで使う自作関数

 ・すべての上位のオブジェクト名を一覧表示(「Obchk03Type」という自作関数)
 ・すべての上位のオブジェクトの名前を一覧表示(「Obchk04Name」という自作関数)
 ・すべての上位のオブジェクトのインデックス番号を一覧表示
        (「Obchk05Index」という自作関数)
 ・色の数値を「赤・緑・青」の数値に変換する(「GetIntByRGB」という自作関数)
  
  
(e)実例01:グラフシートのオブジェクト01~棒グラフの「目盛線」~
  
  
(f)実例02:グラフシートのオブジェクト02~棒グラフの「縦の数値軸(X軸)」~
  
  
(g)実例03:ワークシートの埋込グラフのオブジェクト01~棒グラフの「棒グラフの「系列」の1つ」~
  
  
(h)実例04:ワークシートの埋込グラフのオブジェクト02~棒グラフの「棒グラフの棒の1つ」~
  
  

=====================================

(06)ヘルプの読み方(ヘルプ用語:その他)

(a)2000系のヘルプと2007系のヘルプの違い(どちらも優秀なのでできれば両方欲しいです)
Access2000VBA・Excel2000VBA独学~XPやWin2000、あるいはその仮想マシンの中で、Office2000~2003でADOやDAOのヘルプをきちんと表示する方法と、2000系のヘルプと2007系のヘルプの違い・良さ。

(b)ヘルプおきまりの言い回しなどについて

(c)プログラミング用語とヘルプ

  
  
=====================================
  
  

(07)オブジェクトブラウザの使い方

(a)オブジェクトブラウザで今のオブジェクトの下位のオブジェクトやプロパティを探し、何が使えるかを調べる

(b)同時にヘルプのメンバーの一覧でも調べる(2010での見方、Web検索の仕方)

(c)F1でのヘルプとの連携

  
  
=====================================

(08)ローカルウィンドウの使い方

(a)Stop関数との併用で瞬間瞬間?のオブジェクトのプロパティの値を調べる
  
  

=====================================

  
  

(09)「VBE(VisualBasic Editor)」の操作の基礎

(a)最小限の基礎

(b)その他の使い方

  
  

=====================================

  
  

(10) 「API」について

  
  

=====================================

  
  

(11) 「SQL」について

  
  

=====================================
  
  

(12) 「ADO・DAO(ミドルウェア)」について