0
1

More than 3 years have passed since last update.

さくらエディタの複数マクロのロジックを一つのファイルにまとめる方法

Last updated at Posted at 2020-06-05

vbsファイルの引数でマクロの挙動を分岐させます

サンプル

Test.vbs
Option Explicit
Select Case Wscript.Arguments(0)
Case "1"
    Call Test1
Case "2"
    Call Test2
End Select
Call MsgBox("パターン1を終了します")

'または以下でもOK
Dim Func
Set Func = GetRef("Test" & Wscript.Arguments(0))
Call Func
Call MsgBox("パターン2を終了します")

Sub Test1()
    Call MsgBox("Test1が実行されました")
End Sub

Sub Test2()
    Call MsgBox("Test2が実行されました")
End Sub

ダメな例

マクロの登録画面で直接引数を指定
image.png

実行時はエラーになります
image.png
※もう1つの問題として、Test.vbsが実行できたとしてもWscriptオブジェクトが参照できません。
image.png

実行可能な例

ラッパー用のvbsファイルを作成します

Test1.vbs
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.CurrentDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(Editor.ExpandParameter("$M"))
Call objShell.Run("Test.vbs 1",,True)
Test2.vbs
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.CurrentDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(Editor.ExpandParameter("$M"))
Call objShell.Run("Test.vbs 2",,True)

上記のファイルをマクロに登録します
image.png

問題点

Test.vbsファイル内では、Editorオブジェクトにアクセスできないため、使用はかなり限定されます
※この問題を解決する別の方法を考えました
さくらエディタの複数マクロのロジックを一つのファイルにまとめる方法  その2

0
1
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
0
1