Gilja's logs of the struggles with programming

シン母駆け出しエンジニアの奮闘記

VBScript学習_WshNetworkオブジェクト

学習の方法を変更

こんにちは

誰かに発信している テイ で (テイというときに芸人さんの「たくろう」のネタを思い出すwww)

学習アウトプットを目的とした記事を書いておりますが

自分でほとんど見返さない 記憶に残っているのは、使ったコードだけ 学習スピードが遅い

という観点から、 まとめて表にしたり ただただサイトの文字をうつしたりするのをやめます

たまたま閲覧された方にはありがたくも申し訳ないのですが

読者は存在しないものとしてのブログなのでスルーして欲しいです

それでは学習始めます=3

参考:

atmarkit.itmedia.co.jp

WshNetworkオブジェクト

ProgID: WScript.Network

'//MS-DOSベースプリンタ接続
objWshNetwork.AddPrinterConnection strLocalName, strRemoteName[,bUpdateProfile][,strUser][,strPassword]
'★[bUpdateProfile]:マッピング情報をプロファイルに保存するかどうかのブール値(default:False)

'//ネットワークベースプリンタ接続
objWshNetwork.AddWindowsPrinterConnection strPrinterPath, [strDriverName[,strPort]]
'★[strPrinterPath]:リモート・プリンタのUNCパス

'//ネットワークプリンタ接続切断
objWshNetwork.RemovePrinterConnection strName, [bForce],[bUpdateProfile]
'★[strName]:ポート名、UNCパス
'★[bForce]:強制終了ブール値(default:False)

'//デフォルト・プリンタ設定
objWshNetwork.SetDefaultPrinter strPrinterName
'★[strPrinterName]:UNCパス

WshShellオブジェクトについて

Theme

VBScriptの学習続き

参考:

atmarkit.itmedia.co.jp


WshShellオブジェクト

WSHの内部オブジェクト

ProgID: "WScript.Shell"

一覧
WshShellオブジェクト

メソッド

  • AppActivate
  • SendKeys
  • ExpandEnvironmentStrings
  • LogEvent
  • Popup
  • RegRead
  • RegWrite
  • RegDelete
  • Run
  • Exec ---> WshScriptExecオブジェクト
  • CreateShortcut ---> WshShortcut/WshUrlShortcutオブジェクト

プロパティ

  • CurrentDirectory
  • Environment ---> WshEnvironmentオブジェクト
  • SpecialFolders ---> WshSpecialFoldersオブジェクト
WshScriptExecオブジェクト

★WshShell Execメソッドから派生

メソッド

  • Terminate

プロパティ

  • ExitCode
  • ProcessID
  • Status
  • StdIn
  • StdOut
  • StdErr
WshShortcutオブジェクト

★WshShell CreateShortcutメソッドから派生

メソッド

  • Save

プロパティ

  • Arguments
  • Description
  • FullName
  • HotKey
  • IconLocation
  • RelativePath
  • TargetPath
  • WindowStyle
  • WorkingDirectory
WshUrlShortcutオブジェクト

★WshShell CreateShortcutメソッドから派生

メソッド

  • Save

プロパティ

  • FullName
  • TargetPath
WshEnvironmentオブジェクト

★WshShell Environmentプロパティから派生

メソッド

  • Count
  • Remove

プロパティ

WshSpecialFoldersオブジェクト

★WshShell SpecialFoldersプロパティから派生

メソッド

  • Count

プロパティ

  • Length
  • Item("特殊フォルダ名")

各メンバ解説

Runメソッド

WSHからアプリケーションを起動できる

実行時にウィンドウスタイル等指定可能

cf) Execメソッド:起動・実行中アプリと通信可能

記法

object.Run ファイルパス(, ウィンドウスタイル)(, 同期処理設定)

Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")

'▼第1引数について▼
'例)メモ帳起動
objWshShell.Run "C:\Windows\System32\notepad.exe" '通常フルパス
'objWshShell.Run "%windir%\System32\notepad.exe" '環境変数使用可能
'objWshShell.Run "notepad.exe" '環境変数PATHに通っているフォルダ内ならファイル名のみでOK
'カレントディレクトリ内でもファイル名のみでOK

'objWshShell.Run """C:\Program Files\Internet Explorer\iexplore.exe""" 'パス内に空白ある場合は3つの「"」で囲む

Set objWshShell = Nothing

第2引数(省略可)

数値 ウィンドウ・スタイル アクティブウィンドウ
0 非表示 そのまま(変化なし)
1 ★規定値 通常サイズ 起動したアプリ
2 最小化 起動したアプリ
3 最大化 起動したアプリ
4 通常サイズ そのまま(変化なし)
5 そのまま 起動したアプリ
7 最小化 そのまま(変化なし)

第3引数(省略可)

起動アプリの終了を待つか否かBoolean値で設定

  • True:同期処理(待機する)
  • False:非同期処理(待機しない)★既定値

環境変数 確認画面

  1. [Windows] + [pause] : 設定 - [システム] - [バージョン] 画面起動
  2. [システムの詳細設定]リンククリック
  3. [システムのプロパティ]画面開く
  4. [詳細設定]タブ - [環境変数]ボタン

キオスクモード(全画面表示)

キオスクモードは-kオプションを最後につける

キオスクモードで開いたウィンドウは[Alt] + [F4]で閉じることができる

AppActivateメソッド

任意のウィンドウをアクティブにできる(アクティブ化の成功をTrue/Falseで返す)

任意のウィンドウ指定方法

  • ウィンドウタイトルの完全一致/前方一致/後方一致

  • Execメソッド使用時のProcessID

SendKeysメソッド

アクティブなウィンドウにキーコードを送るメソッド

キーボードにABCと入力する → "ABC"

key code
プラス記号+ {+}
キャレット^ {^}
パーセント記号% {%}
チルダ~ {~}
かっこ() {(}{)}
BackSpace {BACKSPACE}、{BS}、{BKSP}
Break {Break}
CapsLock {CAPSLOCK}
Del Delete {DELETE}、{DEL}
{DOWN}
終了 {END}
Enter {ENTER}、~
Esc {ESC}
HELP {HELP}
ホーム {HOME}
Ins、Insert {INSERT}、{INS}
{LEFT}
NumsLock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
PrintScreen {PRTSC}
{RIGHT}
ScrollLock {SCROLLOCK}
Tab {TAB}
{UP}
F1 ~ F16 {F1} ~ {F16}
Shift +
Ctrl ^
Alt %
  • +(EC) : Shift + E + C

  • ^C : Ctrl + C

{key number}形式で繰り返し

  • {LEFT 42} : ←キーを42回

  • {h 10} : Hキーを10回

注意

AppActivate&SendKeysの誤爆の可能性を念頭において最終手段として使用する

RegRead/RegWrite/RegDeleteメソッド

レジストリの値を読み込む/書き込む/削除するメソッド

注意 レジストリの操作はシステムや設定を破壊してしまう危険があるので実行の際は要注意

# レジストリ構造

ファイルシステムと同様の構造※例外あり

ルート・キー名 省略名 内容
HKEY_CLASSES_ROOT HKCR ファイル・タイプやクラスIDの設定
HKEY_CURRENT_USER HKCU 現在のユーザーに適用される設定
HKEY_LOCAL_MACHINE HKLM すべてのユーザーに適用される設定
HKEY_USERS - HKCUの初期設定とすべてのユーザーの設定(各ユーザーのHKCU)
HKEY_CURRENT_CONFIG - 現在の構成に関する設定

エントリの名前エントリの種類エントリのデータ

エントリの種類 意味 VBScriptでの型
REG_SZ 文字列 String
REG_DWORD 数値 Long
REG_BINARY バイナリ値(2進数の値) Byteの配列
REG_EXPAND_SZ 展開可能な文字列 String
REG_MULTI_SZ 文字列の配列 Stringの配列

ファイルシステムとの相違点

キーに値が存在する

エントリの名前が「(既定)」と表示されているものは、

エントリの名前が(既定)なのではなく、キーの値を示すものである

RegReadメソッド

引数にキー\エントリの名前

既定値を読む際はキー\

例えば、HKEY_CLASSES_ROOT\.<拡張子>キーには、そのファイルタイプを示す値が格納されている

Point

  • REG_BINARYはByte型の配列と返されるので各要素を取得するにはForEach~Next文やJoin関数を、Byte型数値を16進数で表示したい場合はHex関数を使用

  • RegReadメソッドで引数に設定したキーやエントリの存在有無をチェックする方法

'変数strRegEntryにチェックしたいキー・エントリを設定 
On Error Resume Next
    objWshShell.RegRead strRegEntry
    If Err.Number = -2147024894 Then '//存在しないときにこのエラーが出る
        Msgbox strRegEntry & "はありません"
    ElseIf Err.Number = 0 Then
        Msgbox strRegEntry & "はあります"
    End If
    Err.Clear
On Error Goto 0

RegWriteメソッド

objWshShell.RegWrite 書き込むエントリ, 書き込むエントリのデータ, 書き込むエントリの種類

※書き込むエントリにキー値(例:"HKEY_CURRENT_USER\Software\WSH Lesson\")を設定するとキーに値を書き込む

RegDeleteメソッド

エントリやキーを引数に指定して削除

キーの中のエントリを削除せずとも、キーを削除することで一括で削除できる


Popupメソッド

intButton = objWshShell.Popup(strText, [nSecondsToWait],[strTitle],[nType])

自動的に閉じた場合、-1を返り値とする

LogEventメソッド

objWshShell.LogEvent intType,strMessage[,strTarget]

intTypeは以下の通り

intType 意味
0 SUCCESS(成功)
1 ERROR(エラー)
2 WARNING(警告)
4 INFORMATION(情報)
8 AUDIT_SUCCESS(成功の監査)
16 AUDIT_FAILURE(失敗の監査)

strTarget:コンピュータ名を指定

★ローカル・コンピュータ デフォルト値

ExpandEnvironmentStringsメソッド

環境変数を展開するためのメソッド

CurrentDirectoryプロパティ

カレント・ディレクトリを取得または設定するためのプロパティ


Execメソッド
  • プロセス・IDを取得してアプリケーション・ウィンドウをアクティブ化や操作できる

  • Terminateメソッドを使用してアプリケーション終了ができる

  • StdIn,StdOut, StdErrプロパティがが使用できる

IPアドレス正規表現

RegExpオブジェクト\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

CreateShortcutメソッド/WshShortcutオブジェクト/WshUrlShortcutオブジェクト
  • 引数のパスの拡張子次第で作成するオブジェクトが変わる

拡張子

  • .lnk => WshShortcutオブジェクト
プロパティ 意味
Arguments ショートカットの引数
Description コメント
FullName ショートカット(*.lnk)の絶対パス(読み取り専用)
HotKey ショートカット・キー
IconLocation アイコン・ファイルのパスとアイコン・インデックス
RelativePath ショートカットの相対パス(未実装のため呼び出してもエラーになる)
TargetPath ショートカットのリンク先パス
WindowStyle 実行時のウィンドウ・スタイル:1=通常、2=最大化、7=最小化
WorkingDirectory 作業フォルダ
  • .url => WshUrlShortcutオブジェクト
プロパティ 意味
FullName ショートカット(*.url)の絶対パス(読み取り専用)
TargetPath ショートカットのリンク先パス
SpecialFoldersプロパティ/WshSpecialFoldersオブジェクト
特殊フォルダ名 特殊フォルダの説明
AllUsersDesktop すべてのユーザーのデスクトップ
AllUsersStartMenu すべてのユーザーのスタート・メニュー
AllUsersPrograms すべてのユーザーのスタートメニュー配下のプログラム
AllUsersStartup すべてのユーザーのスタートアップ
Desktop 現在のユーザーのデスクトップ
Favorites 現在のユーザーのお気に入り
Fonts フォント
MyDocuments 現在のユーザーのマイ・ドキュメント
NetHood 現在のユーザーのネットフォルダ
PrintHood 現在のユーザーのプリンタ・フォルダ
Programas 現在のユーザーのスタートメニュー配下のプログラム
Recent 現在のユーザーの最近使ったファイル
SendTo 現在のユーザーの送る
StartMenu 現在のユーザーのスタート・メニュー
Startup 現在のユーザーのスタートアップ
Templates 現在のユーザーのテンプレート
AppData 現在のユーザーのアプリケーションのデータ
Environmentプロパティ/WshEnvironmentオブジェクト
引数 環境変数 説明
System システム環境変数 すべてのユーザーに適用される
User ユーザー環境変数 ユーザーごとに設定可能
Volatile 揮発性環境変数 ログオフとともにクリアされる
Process プロセス環境変数 現在読み込まれているすべての環境変数。読み込み専用

引数省略時の設定はOSのバージョンで異なる

WScriptの活用2

Theme

引き続き、VBScriptの学習です


COMオブジェクト

COMオブジェクトとは

COMコンポーネントが提供するオブジェクト

COMコンポーネントはDLLファイル(またはOCXファイル等)としてシステムにインストールされている

アプリケーションやOSの機能を呼び出せるもの

レジストリにProgIDと呼ばれる一意に識別されるコンポーネント名が登録されている

タイプ・ライブラリが存在するCOMコンポーネントが、WSHから使用できる

タイプ・ライブラリとは、オブジェクトにどんなメソッドやプロパティ等があり、どういう動作をするかを説明するもの


CreateObjectについて

記法: WScript.CreateObject(ProgID, (接頭辞))

Point 接頭辞とは、イベントを監視するためのプリフィックス

イベント=オブジェクトが何らかのアクションを起こした際にホスト(WSH)に送られるメッセージ

VBScriptにも同様の機能のあるCreateObjectメソッドが存在するが、第2引数の設定可能なのが異なる点である

ProgID

  • IE: InternetExplorer.Application

IEタイプ・ライブラリ

  • Word: Word.Application
ConnectObject/DisconnectObjectについて

記法: WScript.ConnectObject obj1, (接頭辞))

Point 接続したオブジェクトのイベントを補強するために使用

また、DisconnectObjectメソッドは、引数に監視中のオブジェクト変数を指定し、イベント監視を解除する

(※イベント発生中に実行されるとエラー)

GetObjectについて

記法: ```WScript.GetObject(ファイルパス/モニカ)

モニカとは:実行中のオブジェクトの種類を示す文字列

Point 存在するオブジェクトを取得し、機能を呼び出す

サンプルコード(list_cpu.vbs)ではCPUの種類を表示するvbsファイルを作成

使用オブジェクト:WMI(WindowsManagementInstrumentation)


タイプライブラリの閲覧方法について

Officeアプリから閲覧する方法

  1. アプリ起動

  2. [Alt] + [F11] Visual Basic Editorを開く

  3. メニュー [表示] - [オブジェクト ブラウザ] / [F2]キー

  4. 右クリック - [参照設定]

  5. 調べたいオブジェクトのライブラリのチェックボックスをON → [OK]

  6. 上部ドロップダウンから、5で選択したライブラリファイル名を選択

  7. 表示

  8. クラスリストビュー:オブジェクト

  9. リストビュー:オブジェクトのメンバ(プロパティ/メソッド/イベント等)

WScriptオブジェクトの利用

Theme

前回同様、VBScriptの学習を進めます

参考:

atmarkit.itmedia.co.jp

WScriptオブジェクトとは

WScriptオブジェクト

 cf.Errオブジェクト:VBScriptのオブジェクト

 VBScriptのオブジェクトは、IE上でも使用できる

  • DimやSetでオブジェクト宣言・代入は不要

  • WScript.<プロパティ/メソッド>の構文で使用

主なメソッド/プロパティ

プロパティ
情報グループ プロパティ 内容
WSH実行ファイルの情報 Name WSHの実行ファイル名
^ Path WSHの実行ファイルのあるフォルダ・パス
^ FullName Wshの実行ファイルパス
^ Version WSHのバージョン
スクリプトの情報 ScriptName スクリプトのファイル名
^ ScriptFullName スクリプトのフルパス
^ Interactive バッチモードorインタラクティブモード
^ TimeOut タイムアウトの秒数
^ Arguments コマンドライン引数の情報
標準入出力 StdIn 標準入力
^ StdOut 標準出力
^ StdErr 標準エラー出力
メソッド
処理グループ メソッド 内容
メッセージ表示 Echo メッセージを表示
スクリプト実行制御 Quit スクリプトの終了
^ Sleep スクリプトの一時停止
オブジェクトの取り扱い CreateObject オブジェクトの作成
^ ConnectObject オブジェクトに接続
^ DisconnectObject オブジェクトを切断
^ GetObject オブジェクトの取得

使用方法

VBScriptファイルの実行方法
  • GUI:wscript.exe ←既定

  • CUI:cscript.exe

★既定exeを変える方法

コマンド・プロンプト上

'既定をcscript.exeにする
cscript.exe //H:CScript

'既定をwscript.exeにする
cscript.exe //H:WScript

★コンソール出力する際の以下の文字列を表示しない方法

'出力したくない文字列
Microsoft(R) Windows Script Host Version 5.6
Copyright(C) Microsoft Corporation 1996-2001. All rights reserved.

'方法
cscript.exe //NoLogoオブション付与

Echoメソッドについて
wscript.exeで実行した場合(wscript.exe 〇〇.vbs)

Point VBScript の MsgBox と似た動作

  • メッセージウィンドウ表示
WScript.Echo "hoge"

hoge

  • 改行連結
WScript.Echo "hoge" & vbcrlf & "fuga"

hoge

fuga

  • 空白連結
WScript.Echo "hoge", "fuga"

hoge fuga

cscript.exeで実行した場合(cscript.exe 〇〇.vbs)

Point Debug.Print と似た動作

  • コンソール表示
WScript.Echo "hoge"

hoge
  • 自動で改行コード付与
'①②は同様の表示

'①
WScript.Echo "hoge" & vbcrlf & "fuga"
'②
WScript.Echo "hoge"
WScript.Echo "fuga"

hoge
fuga

Interactiveプロパティについて

スクリプトの実行モード

  • 対話モード:True ← デフォルト

  • バッチモード:False

★バッチモード(スクリプト実行中にエラーやEchoメソッドの表示がされないモード )で実行

cscript.exe //B <スクリプト・ファイル名>

TimOutプロパティについて

スクリプト実行できる最大時間(秒数)

既定値 0

'スクリプト実行が30秒を過ぎると停止(ダイアログも閉じる)
cscript.exe //T:30 <スクリプト・ファイル名>

Argumentsプロパティについて

WshArgumentsクラスのオブジェクトを返す

WshArgumentsオブジェクト(コレクション)に含まれる要素は

コマンドライン引数全体を空白記号で分割した文字列(String型)

WshArgumentsのプロパティ
  • Count : コマンドライン引数の数 //0=引数なし、1=引数1つ...

  • Item:既定なので省略化★For Each~Next 列挙可能

Point コマンドライン引数にはファイル自体も可能

GUI操作でExporler上でvbsファイルにtxtファイル等をドラッグアンドドロップし実行するとwscript.exeで実行される

  • Named/Unnamed:名前付き/名前なしの引数(コレクション)を返す

Point 名前付き/名前なしとは

Named→WshNamedコレクション

Unnamed→WshUnnamedコレクション

cscript.exe ShowParameter2.vbs /param1 /param2:value2 param3

'/param1 → 名前付き引数(値なし)
'/param2:value2 → 名前付き引数(値あり)
'/param3 → 名前なし引数
Option Explicit

'オブジェクト変数の宣言と代入
Dim objWshNamed, objWshUnnamed
Set objWshNamed = WScript.Arguments.Named
Set objWshUnnamed = WScript.Arguments.Unnamed

'名前付き引数の存在有無を確認
If objWshNamed.Exists("param1") Then
    WScript.Echo "名前付き引数/param1が指定されました。"
End If

'名前付き引数の存在有無を確認し、その値を表示
If objWshNamed.Exists("param2") Then
    WScript.Echo "名前付き引数/param2が指定されました。", _
                "その値は" & objWshNamed.Item("param2") & "です。"
End If

'名前なし引数の列挙
Dim intIndex
If objWshUnnamed.Count > 0 Then
    For intIndex = 0 To objWshUnnamed.Count - 1
        WScript.Echo "引数なし引数" & objWshUnnamed.Item(intIndex) & "が指定されました。"
    Next
End If

'オブジェクトの破棄
Set objWshNamed = Nothing
set objWshUnnamed = Nothing

Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

名前付き引数/param1が指定されました。
名前付き引数/param2が指定されました。 その値はvalue2です。
引数なし引数param3が指定されました。
PS C:\Users\***\***>

StdIn/StdOut/StdErrプロパティについて
概要
  • 標準入出力と標準エラー出力を表すTextStreamオブジェクトを返すプロパティ

  • ※cscript.exe(CUIWSH)でしか動作しない

使用用途

StdIn

  • InputBox関数を使わずにユーザに文字列を入力させたいとき

  • 入力値の文字数を指定数だけ取得 strFromStdIn = objStdIn.Read(5)

StdOut

  • コンソールにユーザのための情報を表示させるときに便利

  • cscript.exeで実行を強制させたいときに使用するとよい(wscript.exeではStdOutプロパティを参照しようとするとエラー)

  • Writeメソッドを用いると、改行を加えず文字列を表示する→プログレスバーを作成できる

その他

他のコンソールアプリケーションやファイル、デバイスと連携ができる(「リダイレクト」「パイプ」で検索してみよう)


Sleep/Quitメソッドについて
概要

スクリプトの実行制御をおこなう

Sleepの使用

WScript.Sleep 10000 10秒(ミリ秒単位)

待機の間、CPUを占有しない

待機の間、ほかのオブジェクトでイベントが発生した場合、そちらに処理が移る

イベント発生の待機として空ループを回すときに使用できる

Quitの使用

WScript.Quit() (数値)引数=エラーコード 省略時は0:正常終了

スクリプトを終了する


COMオブジェクトを扱うメソッドについて
メソッド
  • CreateObject 作成

  • ConnectObject 接続

  • DisconnectObject 切断

  • GetObject 取得

・・・続きは次回

Classの書き方

ClassのProperty設定

Option Explicit

'クラスSampleの定義
Class Sample
  'Caption プロパティ
  Public Caption
End Class

'オブジェクト変数
Dim objSample1
Set objSample1 = New Sample
objSample1.Caption = "hoge"

MsgBox objSample1.Caption '//ここで「hoge」と表示する

Set objSample = Nothing

Property設定時に処理したい/Propertyに初期設定したものを取得したい

'まず、Privateのときは変数にm_と付けるのが慣習らしいのでそれに習う

Class Sample
  '変数設定
  Private m_strCaption

  'Captionプロパティの値を設定
  Public Property Let Caption(Value) '//インスタンスのプロパティに値が代入される際実行
    m_strCaption = Value '//この中で値をこねくりまわせる!!
  End Property

  'Captionプロパティの値を取得
  Public Property Get Caption '//インスタンスのプロパティが参照される際実行
    Caption = m_strCaption
  End Property

  'Public Default Property Get Captionとすると、「.Caption」とせずとも読み込める(規定のプロパティになる)

End Class
Class Sample
  'プロパティに規定値をClass内に設定したいとき
  Private m_strCaption

  Private Sub Class_Initialize() '//Initializeイベント(コンストラクタとも呼ぶ)
    m_strCaption = "hoge" '//インスタンス生成される度に実行される(規定値を設定しておく)
  End Sub

  Public Property Get Caption
    Caption = m_strCaption
  End Property

End Class

Dim objSample1
Set objSample1 = New Sample
MsgBox objSample1.Caption '// 「hoge」と表示される
Set objSample1 = Nothing

インスタンスメソッド

Class Sample
  Public Caption

  Public Sub Show() '//メソッドの書き方
    MsgBox Me.Caption '//Me とはインスタンスオブジェクト
  End Sub
End Class

Dim objSample1
Set objSample1 = New Sample
objSample1.Caption = "hoge"

objSample1.Show '//インスタンスメソッド呼び出し 今回のケースでは、「hoge」と表示される処理

Set objSample1 = Nothing

デフォルトクラス

RegExp 正規表現のクラスはデフォルトで使用できるのだ!

最後に問題を解こう

Option Explicit

Class Circle

  Private m_intRadius
  Private m_intDiameter
  Private m_dblArea

  Public Property Let Radius(value)
    m_intRadius = value
    m_intDiameter = m_intRadius * 2
    m_dblArea = m_intRadius ^ 2 * 3.14
  End Property

  Public Property Get Radius
    Radius = m_intRadius
  End Property
  Public Property Get Diameter
    Diameter = m_intDiameter
  End Property
  Public Property Get Area
    Area = m_dblArea
  End Property

  Public Sub ShowDetail(key)
    Private strMsg

    Select Case key
      Case "半径"
        strMsg = "半径:" & Me.Radius
      Case "直径"
        strMsg = "直径:" & Me.Diameter
      Case "面積"
        strMsg = "面積:" & Me.Area
      Case "全部"
        strMsg = "半径:" & Me.Radius & vbCrLf & _
                         "直径:" & Me.Diameter & vbCrLf & _
                         "面積:" & Me.Area & vbCrLf & _
    End Select

    MsgBox strMsg
  End Sub

End Class

Dim objCircle1
Set objCircle1 = New Circle
Dim intInput
intInput = InputBox("何の要素を取得したいですか?数字で選択してください。" & vbCrlf & _ 
                                   "1:半径、2:直径、3:面積、4:全部")
If Not (intInput = 1 Or intInput = 2 Or intInput = 3 Or intInput = 4) Then
  Msgbox "不正です"
Else
  objCircle1.Radius = 3
  If intInput = 1 Then
    strInput = "半径"
  ElseIf intInput = 2 Then
    strInput = "直径"
  ElseIf intInput = 3 Then
    strInput = "面積"
  Else
    strInput = "全部"
  End If

    objCircle.ShowDetail(strInput)

End If

Set objCircle = Nothing

答え合わせは明日しましょー

WSHの基本オブジェクト

COMオブジェクト

WSH(VBScript)から呼び出せるオブジェクトのことを、COMオブジェクトとよぶ

COMオブジェクトは3つに分類される

WSH基本オブジェクト

Windows OSに標準添付されているオブジェクト

・別途インストールが必要なオブジェクト

WSH基本オブジェクト

標準搭載オブジェクト

オブジェクト名 用途
WScript ほかのオブジェクトを呼び出す
標準入出力を扱う
スクリプト実行を制御する
コマンドライン引数を読み込む
※トップレベルオブジェクト
FileSystemObject ファイルやフォルダのコピー、移動、削除を行う
サイズや更新日時などのプロパティの値取得も可能
テキストファイルに文字列を書き込んだり、読み出したりすることができる
WshShell アプリケーション起動・終了
実行中のアプリケーションに対し、キーボード操作を自動化できる
コンソールアプリケーションでは、出力内容を取得できる
レジストリの操作
ショートカットの作成
WshNetwork ネットワーク・ドライブやネットワーク・プリンタをリストアップ・作成・削除
WshController ネットワーク上のほかのPC上でスクリプト実行ができる

Windows OSに標準添付されているオブジェクト

WSHの機能ではない

Windows OSに標準添付されているオブジェクト

オブジェクト名 用途
ADODB.Connection SQL ServerAccessファイルなどのデータベースにアクセス
レコードの読み書き
ADODB.Stream バイナリ・ファイルを読み書きするためのオブジェクト
さまざまな文字コードのテキストファイルを扱える
(Windows 98では別途インストールが必要)
XMLHTTP Webサーバからファイルを取得
HTTPのPOSTを行う等
CDO.Message SMTPサービスを用いたメールを送信するためのオブジェクト
(Windows 2000/Windows XP/Windows Server 2003でのみ利用可能)
InternetExplorer.Application IEを操作するためのオブジェクト
IE起動・終了・ドキュメント内容読み取り・書き換え
WSHGUIがほしいときに併用することが多い
Shell.Application エクスプローラを操作するためのオブジェクト
ウィンドウを並べて表示
「ファイル名を指定して実行」ダイアログを表示
フォルダ内の情報取得
ADSI
(Active Directory Service Interfaces)
Active Directoryなどのディレクトリ・サービスを操作するためのオブジェクト
ドメインにユーザ追加等
(Windows 2000/Windows XP/Windows Server 2003でのみ利用可能)
WMI
(Windows Management Instrumentation)
ソフトウェアやハードウェア、ネットワークなどのシステム情報を統一的に取り扱うオブジェクト
実行中のプロセス列挙
マザーボードの情報取得
TCP/IPポート追加
(Windows 98/Meでは別途インストールが必要)

別途インストールが必要なオブジェクト

例) Officeアプリケーションをインストールすることにより、WSHから自在に操作可能

アプリケーションをWSHなど外部から操作することをオートメーションという

Office以外のWindows Media Player や Virtual Server等Microsoft製品や、 一太郎等のサードパーティ製アプリケーションに可能なオブジェクトがある

BASP21:WSHなどから使用されることを想定したオブジェクト。メールの送受信やソケットの操作が可能

合格したのでお次は...

みなさんお元気でしょうか

ExcelVBAエキスパート スタンダード試験ですが、

サクッと合格だったので、やりがいがなかったといえばなかったですw

日頃WinActorというRPAを触っているので、

次はしっかりVBScriptを学習したいなと思い、

夏休み、家事をサボれるいい時間を有効に使うべく

学習をすすめて参ります

良いサイトにも出会った! 良かった!

atmarkit.itmedia.co.jp