COM経由でインスタンス生成という話
UWSCからExcelを操作できる。その場合、UWSCのコードとして最初に下記を書き込む:

Excel = CreateOleObj("Excel.Application")

すでにExcelが開かれている場合なら

Excel = GetActiveOleObj("Excel.Application")

オマジナイとして書く


「そういうもの」として、オマジナイ的に書いている。

はたとこの意味は?と今日考えてみた。

ネットで引くとこの部分を「COM経由でインスタンス生成」と表現している人がいる。

Microsoft社の構想


COMとはMicrosoft社が開発したプログラム間通信環境のようだ。

今までOfficeの各アプリケーションは共通開発基盤のVBAがあるため「地下茎でつながっている」という印象を受けてきたが、VBAだけでなく、COMが実装されているからかもしれない。

たとえば、ExcelとAccessの間では、プログラムで相手アプリケーションを操作することもできる。はじめて知ったときMicrosoft社の構想は大きいと感動した。

たとえば、弥生会計からExcelがプログラムで操作できれば便利だな、なんてよく考えるが、弥生会計にそういう発想はないようだ。

弥生会計に限らず多くの独立系のアプリケーションソフトが単体使用を想定している。技術的な問題ではなく、政治的な問題だろうが、物足りない。

Microsoft社以外にも公開されているCOM


COMが提供する「地下茎でつながる」仕組みを利用すれば、Microsoft社以外のアプリケーションもExcelを外部から利用することができる。

UWSCでは下記構文を入れればExcelが利用できる。

Excel = CreateOleObj("Excel.Application")

オブジェクトをロードしてインスタンス生成


この構文の意味は、COMによって提供されているExcelオブジェクトをPCのメモリーにロードして、UWSCから使える状態にします → インスタンスの生成

と解釈した。

インスタンスとは、事例という意味なので、この場合、いろいろ使えるオブジェクトを具体的にUWSCで使える状態にしました、くらいの意味か。

この推理が正しいなら、("Excel.Application")はExcelオブジェクト(プログラム体)を意味するが、この場合、パスは指定しなくてもいいのだろうか?とか、オブジェクトは、ファイル名とは違うのか、などまだいろいろ疑問は残っている。

奥は深そうなので、深みにはまる前にこれくらいで。






  • (2012-04-29 06:46:34)
<< ブラウザ対決と言っている間に全プラウザ使用< | >(備忘録) Excel & Access vba >>

[▲page top]