8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

(参照設定なし)VBA/VBSでCOMオブジェクトのメソッド・プロパティ一覧を確認する方法

Last updated at Posted at 2020-05-16

#概要
 VBAやVBSでCOM連携のコードを書いていて、ふとメソッド・プロパティの一覧が見たくなることがあります。
 あれ、ウインドウ取得のWindowsメソッドってShell.applicationだっけ、Wscript.Shellだっけ、メンバー見れたら分かるのになとか、僕はよくあります。
 いや、VBAなら参照設定すればインテリセンス効くじゃんって話ですけど、結局最後は配布用にCreateObjectに書き換えるのに、いちいち参照設定するのは面倒だし、書き換え漏れをなくすためにも最初からCreateObjectで書いていくこと、ありませんか?
 ネット見たくても周りの目があって見れない、そんなときに使ってください。
#方法 
 VBAでもVBScriptでも、以下のコードを実行すればメソッド・プロパティが表示されます。

VBA/VBScript共通
Dim wShell
Set wShell = CreateObject("Wscript.Shell")
wShell.Run "PowerShell -NoProfile -NoExit -Command $com = New-Object -ComObject ●ComObject名●;$com|Get-Member"

####実行例/ExcelVBA
2020-05-17.png
2020-05-17 (3).png

####実行例/VBScript
2020-05-17 (4).png
2020-05-17 (5).png

 PowerShellを使います。PowerShellでは、標準でCOMオブジェクトのインテリセンスも効きますし、メンバーも取得できます。
 もちろん、PowerShellから

PowerShell
$com = New-Object -ComObject ComObject名●
$com|Get-Member

でもOKです。
#おまけ
 メソッド・プロパティの値の取得もできます。VBAならローカルウインドウでできますが。
 PowerShellはメソッドの後ろに()が必要なので気をつけてください。

VBA/VBScript共通
Dim wShell
Set wShell = CreateObject("Wscript.Shell")
wShell.Run "PowerShell -NoProfile -NoExit -Command $com = New-Object -ComObject ●CreateObjectの名前●;$com.●メソッド()又はプロパティ●|Select-Object *"
 
2020-05-17 (7).png 2020-05-17 (6).png

こちらもPowerShellで直接書いた方がシンプルです。

PowerShell
$com = New-Object -ComObject CreateObjectの名前●
$com.●メソッド()又はプロパティ●|Select-Object *

 個人的に、閉鎖的な環境で開発しているためか、VBA/VBScriptで困るとPowerShellに頼ることがよくあります。
 次回はVBA/VBScriptでWebスクレイピングする際のPowerShell併用法について書こうと思います。
 PowerShell,いいですよ!

追記
Nortonでスクリプトの実行として弾かれることがあるようです。
その場合はNorton側でEXCEL等のスクリプト実行の設定を許可してください

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?