Last active
March 25, 2023 17:10
-
-
Save KotorinChunChun/33c318c62ec9948371492e04b132fc12 to your computer and use it in GitHub Desktop.
VBEでVBSを編集するための偽WScriptクラス
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Rem | |
Rem VBEでVBSを編集するための偽WScriptクラス | |
Rem | |
Rem 開発 : @KotorinChunChun | |
Rem | |
Option Explicit | |
Rem WScript オブジェクトのプロパティとメソッド | |
Rem https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364456(v=msdn.10) | |
Rem | |
Rem プロパティ | |
Rem Arguments プロパティ | |
Rem FullName プロパティ | |
Rem Name プロパティ | |
Rem Path プロパティ | |
Rem ScriptFullName プロパティ | |
Rem ScriptName プロパティ | |
Rem StdErr プロパティ | |
Rem StdIn プロパティ | |
Rem StdOut プロパティ | |
Rem Version プロパティ | |
Rem | |
Rem メソッド | |
Rem CreateObject メソッド | |
Rem ConnectObject メソッド | |
Rem DisconnectObject メソッド | |
Rem Echo メソッド | |
Rem GetObject メソッド | |
Rem Quit メソッド | |
Rem Sleep メソッド | |
Rem 参考 : VBScriptをお手軽にデバッグして開発する方法 | |
Rem https://qiita.com/saeki4n/items/fc1e19c8b2348230d6b6 | |
Rem https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc392401(v=msdn.10) | |
Rem VBA の機能で VBScript に含まれていない機能 | |
Rem 2009/08/28 | |
Rem 次の表は、 VBScript に含まれていない VBA (Visual Basic for Applications) 機能の一覧です。 | |
Rem | |
Rem 種類 含まれていない機能 / キーワード | |
Rem Select Case ステートメント キーワード Is または比較演算子が含まれる式 | |
Rem キーワード To を使う値の範囲の指定が含まれる式 | |
Rem エラー処理 Erl 関数 | |
Rem Error ステートメント | |
Rem Resume ステートメント、Resume Next ステートメント | |
Rem 演算子 Like 演算子 | |
Rem オブジェクト Clipboard オブジェクト | |
Rem Collection オブジェクト | |
Rem オブジェクトの使用 演算子を使用したコレクションへの参照 | |
Rem オブジェクト操作 キーワード TypeOf | |
Rem コレクション Add メソッド、Count プロパティ、Item メソッド、Remove メソッド | |
Rem ! 演算子を使用したコレクションへの参照 | |
Rem 財務処理 すべての財務処理関数 | |
Rem 条件分岐 #Const ディレクティブ | |
Rem #If...Then...#Else ディレクティブ | |
Rem 制御構造 DoEvents 関数 | |
Rem GoSub...Return ステートメント、GoTo ステートメント | |
Rem On Error GoTo ステートメント | |
Rem On...GoSub ステートメント、On...GoTo ステートメント | |
Rem 行番号、行ラベル | |
Rem 宣言 Declare ステートメント (DLL 参照のための宣言) | |
Rem キーワード Optional | |
Rem キーワード ParamArray | |
Rem Static ステートメント | |
Rem ダイナミック データ エクスチェンジ (DDE) LinkExecute メソッド、LinkPoke メソッド、LinkRequest メソッド、LinkSend メソッド | |
Rem データ型 バリアント型 (Variant) を除くすべての組み込みデータ型 | |
Rem Type...End Type ステートメント | |
Rem デバッグ Debug.Print | |
Rem End ステートメント、Stop ステートメント | |
Rem 配列 Option Base ステートメント | |
Rem 0 以外のインデックスの最小値を指定した配列の宣言 | |
Rem 日付と時刻 Date ステートメント、Time ステートメント | |
Rem その他 Deftype ステートメント | |
Rem Option Base ステートメント | |
Rem Option Compare ステートメント | |
Rem Option Private Module ステートメント | |
Rem ファイル入出力 すべてのファイルの入出力機能 | |
Rem 変換 CVar 関数、CVDate 関数 | |
Rem Str 関数、Val 関数 | |
Rem 文字列 固定長文字列 | |
Rem LSet ステートメント、RSet ステートメント | |
Rem Mid ステートメント | |
Rem StrConv 関数 | |
Rem https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc392354(v=msdn.10) | |
Rem VBScript の機能で VBA に含まれていない機能 | |
Rem 2009/08/28 | |
Rem 次の表は、VBA (Visual Basic for Applications) に含まれていない VBScript 機能の一覧です。 | |
Rem | |
Rem 種類 機能 / キーワード | |
Rem オブジェクト RegExp | |
Rem スクリプト エンジン ID ScriptEngine | |
Rem ScriptEngineBuildVersion | |
Rem ScriptEngineMajorVersion | |
Rem ScriptEngineMinorVersion | |
Rem 宣言 Class | |
Rem その他 Eval | |
Rem Execute | |
Rem 2017-05-13 | |
Rem VBAからVBScriptへマクロを移植する方法 | |
Rem https://thom.hateblo.jp/entry/2017/05/13/070441 | |
Rem Rem 下で定義するDebugPrintクラスをもとに変数Debugを準備 | |
Rem Dim Debug: Set Debug = New DebugPrint | |
Rem | |
Rem Call Main | |
Rem | |
Rem Sub Main() | |
Rem Debug.Print "こんにちは" | |
Rem Debug.Print "さようなら" | |
Rem Debug.Flush Rem FlushしてはじめてPrintした内容がMsgBoxで表示される。 | |
Rem End Sub | |
Rem | |
Rem Rem 以下にDebugPrintクラスを定義 | |
Rem Class DebugPrint | |
Rem Private message | |
Rem | |
Rem Public Sub Print(msg) | |
Rem message = message & msg & vbNewLine | |
Rem End Sub | |
Rem | |
Rem Public Sub Flush() | |
Rem MsgBox message | |
Rem Call Clear | |
Rem End Sub | |
Rem | |
Rem Public Sub Clear() | |
Rem message = "" | |
Rem End Sub | |
Rem End Class | |
Rem テスト用の保持値 | |
Private Arguments_ As Collection | |
Private ScriptFullName_ As String | |
Private ScriptName_ As String | |
Private Interactive_ As Boolean | |
Rem テスト用の実行時パラメータをセットする | |
Public Sub DebugSetArguments(ParamArray Args() As Variant) | |
Dim item As Variant | |
Set Arguments_ = New Collection | |
For Each item In Args | |
Arguments_.Add item | |
Next | |
End Sub | |
Rem テスト用のスクリプトパスをセットする(未指定時ThisWorkbook) | |
Public Sub DebugSetScriptFullName(ssFullName As String) | |
ScriptFullName_ = ssFullName | |
ScriptName_ = Mid(ssFullName, InStrRev(ssFullName, "\") + 1) | |
End Sub | |
Rem -------------------------------------------------- | |
Rem プロパティ | |
Rem WshArguments オブジェクト (引数のコレクション) を返します。 | |
Property Get Arguments() As Collection | |
If Arguments_ Is Nothing Then | |
Set Arguments = New Collection | |
Else | |
Set Arguments = Arguments_ | |
End If | |
End Property | |
Rem 実行中のスクリプトへの絶対パスを提供します。 | |
Public Function ScriptFullName() | |
ScriptFullName = IIf(ScriptFullName_ = "", ThisWorkbook.FullName, ScriptFullName_) | |
End Function | |
Rem 実行中のスクリプトのファイル名を提供します。 | |
Public Function ScriptName() | |
ScriptName = IIf(ScriptName_ = "", ThisWorkbook.Name, ScriptName_) | |
End Function | |
Rem ホストの実行可能ファイル (CScript.exe または WScript.exe) への絶対パスを返します。 | |
Function FullName() | |
FullName = "C:\Windows\System32\cscript.exe" | |
FullName = "C:\Windows\System32\wscript.exe" | |
Stop | |
End Function | |
Rem スクリプトのモードを設定または識別します。 | |
Rem インタラクティブモードに設定 | |
Rem WScript.Interactive = True | |
Rem バッチモードに設定 | |
Rem WScript.Interactive = False | |
Property Set Interactive(isIntaractiveMode As Boolean) | |
Interactive_ = isIntaractiveMode | |
End Property | |
Property Get Interactive() As Boolean | |
Interactive = Interactive_ | |
End Property | |
Rem WScript オブジェクト (ホスト実行可能ファイル) の名前を返します。 | |
Function Name() | |
Name = "cscript.exe" | |
Name = "wscript.exe" | |
End Function | |
Rem ホスト実行可能ファイル (CScript.exe または WScript.exe) の格納先ディレクトリの名前を返します。 | |
Function Path() | |
Path = "C:\Windows\System32" | |
End Function | |
Rem 現在のスクリプトで使用する書き込み専用のエラー出力ストリームを公開します。 | |
Function StdErr() | |
Stop | |
End Function | |
Rem 現在のスクリプトで使用する読み取り専用の入力ストリームを公開します。 | |
Function StdIn() As Object | |
Stop | |
End Function | |
Rem 現在のスクリプトで使用する書き込み専用の出力ストリームを公開します。 | |
Function StdOut() As Object | |
Stop | |
End Function | |
Rem Windows Script Host のバージョンを返します。 | |
Property Get Version() | |
Debug.Print "VBS Version" | |
End Property | |
Rem -------------------------------------------------- | |
Rem メソッド | |
Rem COM オブジェクトを作成します。 | |
Property Get CreateObject(ssProgID As String, Optional ssPrefix As String) As Object | |
Rem VBAの1つめはClass。VBSではProgID | |
Rem VBAの2つめはServerName。VBSではPrefix | |
Set CreateObject = VBA.CreateObject(ssProgID, ssPrefix) | |
End Property | |
Rem 所定のプリフィックスを持つ関数にオブジェクトのイベント ソースを接続します。 | |
Function ConnectObject(obj As Object, strPrefix As String) | |
Debug.Print "VBAにはConnectObjectがありません", strPrefix | |
Stop | |
End Function | |
Rem オブジェクトのイベント ソースへの接続を解除します。 | |
Function DisconnectObject(obj As Object) | |
Stop | |
End Function | |
Rem ダイアログ ボックスまたはコンソールに出力を送ります。 | |
Function Echo(ss) | |
Debug.Print "Echo", ss | |
End Function | |
Rem 指定された ProgID を持つ既存のオブジェクトを取得するか、ファイルを読み込んで新しいオブジェクトを作成します。 | |
Function GetObject(ssPathName As String, Optional ssProgID As String, Optional ssPrefix As String) As Object | |
Rem VBAの2つめはClass。VBSではProgID | |
Set GetObject = VBA.GetObject(ssPathName, ssProgID) | |
End Function | |
Rem 指定されたエラー コードで実行を終了します。 | |
Rem errcodeを省略すると、エラーコードは 0 を返します。 | |
Sub Quit(Optional nnErrcode) | |
Debug.Print "VBS Quit" | |
MsgBox "WScriptなら終了。VBAなので生きる" | |
End Sub | |
Rem スクリプトの待機時間を、ミリ秒単位で指定します。 | |
Public Sub Sleep(ByVal time) | |
Dim tempDate As Date | |
time = time / 1000 | |
tempDate = DateAdd("s", time, Now) | |
Do | |
DoEvents | |
Loop While Now < tempDate | |
Rem または | |
' Application.Wait [Now() + "00:00:00.1"] | |
End Sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment