トップページに戻る    05-001 Chromeの設定などのメモ    04-001 サクラエディタの設定などのメモ

04-002 サクラエディタのマクロ集


目次

001. ファイルの情報を取得
002. 開いてるファイルのフォルダをエクスプローラで開く
003. 固定の正規表現で検索その1
004. 固定の正規表現で検索その2
005. 固定の正規表現で検索その3
006. コメントの追加
007. コメントの削除
008. 追加コピー
009. EmEditorで開く
010. EmEditorで読取専用で開く
011. F02_CreateWinScpPutCommandを起動
012. F03_ExtractFullPathListを起動
999. WPFのマクロセレクタを起動

英語名称の一覧
001 GetAnyInfo
002 OpenExploer
003 ExecSearch1
004 ExecSearch2
005 ExecSearch3
006 CommentAdd
007 CommentRemove
008 AddCopy
009 OpenEmEditor
010 OpenEmEditorReadOnly
011 CreateWinScpPutCommand
012 ExtractFullPathList
999 ExecMacroSelector


001 ファイルの情報を取得

Option Explicit

'ファイルの拡張子
Dim ObjFSO : Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim ExtStr : ExtStr = ObjFSO.GetExtensionName(GetFileName())

'カレント行とカレント桁
Dim CurrY : CurrY = ExpandParameter("$y")
Dim CurrX : CurrX = ExpandParameter("$x")

Dim StrMsg : StrMsg = ""
StrMsg = StrMsg & "ファイルパス=" & GetFileName() & vbCrLf
StrMsg = StrMsg & "ファイル拡張子=" & ExtStr & vbCrLf
StrMsg = StrMsg & "カレント行=" & CurrY & vbCrLf
StrMsg = StrMsg & "カレント桁=" & CurrX & vbCrLf
StrMsg = StrMsg & "テキスト選択有無=" & IsTextSelected & vbCrLf
StrMsg = StrMsg & "選択開始行=" & GetSelectLineFrom & vbCrLf
StrMsg = StrMsg & "選択終了行=" & GetSelectLineTo & vbCrLf
MsgBox StrMsg


002 開いてるファイルのフォルダをエクスプローラで開く

Option Explicit

Dim ObjFSO : Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim FolderPath : FolderPath = ObjFSO.getParentFolderName(GetFileName())

Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")
'Runメソッドの第2引数の 3 は最大化表示
ObjShell.Run "explorer.exe """ & FolderPath & """" , 3


003 固定の正規表現で検索その1

Option Explicit

const Pattern = "(\t| )+$"
' SearchNext関数の第2引数の &H04 は 正規表現で検索
SearchNext Pattern , &H04


004 固定の正規表現で検索その2

Option Explicit

const Pattern = "^([^,]*,){10}"
' SearchNext関数の第2引数の &H04 は 正規表現で検索
SearchNext Pattern , &H04


005 固定の正規表現で検索その3

Option Explicit

const Pattern = ",$"
' SearchNext関数の第2引数の &H04 は 正規表現で検索
SearchNext Pattern , &H04


006 コメントの追加

Option Explicit

'ファイルの拡張子
Dim ObjFSO : Set ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim ExtStr : ExtStr = ObjFSO.GetExtensionName(GetFileName())

'カレント行とカレント桁
Dim CurrY : CurrY = ExpandParameter("$y")
Dim CurrX : CurrX = ExpandParameter("$x")

Dim CommentStart : CommentStart = ""
Dim CommentEnd : CommentEnd = ""

If ExtStr = "html" Then
    CommentStart = "<!-- SakuraMacro "
    CommentEnd = " SakuraMacro -->"
End If
If ExtStr = "js" Then CommentStart = "// SakuraMacro "
If ExtStr = "php" Then CommentStart = "// SakuraMacro "
If ExtStr = "sql" Then CommentStart = "-- SakuraMacro "

If CommentStart <> "" Then
    Dim LineStart
    Dim LineEnd
    If IsTextSelected = 0 Then
        LineStart = CurrY
        LineEnd = CurrY
    Else
        LineStart = GetSelectLineFrom
        LineEnd = GetSelectLineTo - 1
    End If

    'VSを意識して、範囲内で
    '行頭空白の最小位置を求める
    Dim MinSpaceCnt : MinSpaceCnt = 10
    Dim LoopInd
    For LoopInd = LineStart To LineEnd
        Dim LineStr
        LineStr = GetLineStr(LoopInd)
        If LineStr <> "" Then
            Dim J
            For J = 1 To Len(LineStr)
                If Mid(LineStr , J , 1) <> " " Then
                    If J < MinSpaceCnt Then
                        MinSpaceCnt = J
                    End If
                    Exit For
                End If
            Next
        End If
    Next

    AddRefUndoBuffer()
    'コメントの追加
    For LoopInd = LineStart To LineEnd
        MoveCursor LoopInd , MinSpaceCnt , 0
        If ExtStr = "html" Then
            '行末に移動して、CommentEndを挿入する必要あり
        End If
        InsText CommentStart
    Next
    MoveCursor CurrY , CurrX , 0
    SetUndoBuffer()
End If


007 コメントの削除

コメント追加を参考にして作成する。
選択範囲を正規表現で置換すれば、よい


008 追加コピー

Option Explicit

Dim ClipStr : ClipStr = GetClipboard(0)
Dim SelectedString : SelectedString = GetSelectedString(0)

SetClipboard &H00 , ClipStr & SelectedString


009 EmEditorで開く

Option Explicit

Const EmEditorPath = "C:\Program Files\EmEditor\EmEditor.exe"
Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")
'Runメソッドの第2引数の 3 は最大化表示

ObjShell.Run """" & EmEditorPath & """ """ & GetFileName() & """" , 3


010 EmEditorで読取専用で開く

Option Explicit

Const EmEditorPath = "C:\Program Files\EmEditor\EmEditor.exe"
Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")
'Runメソッドの第2引数の 3 は最大化表示

'読取専用の場合は/rの起動オプションを付ける
ObjShell.Run """" & EmEditorPath & """ /r """ & GetFileName() & """" , 3


011 F02_CreateWinScpPutCommandを起動

Option Explicit

Const F02_ExePath = "_F02-CreateWinScpPutCommand.exeのフルパス"
Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")
'Runメソッドの第2引数の 3 は最大化表示

ObjShell.Run """" & F02_ExePath , 3


012 F03_ExtractFullPathListを起動

Option Explicit

Const F03_ExePath = "_F03-ExtractFullPathList.exeのフルパス"
Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")
'Runメソッドの第2引数の 3 は最大化表示

ObjShell.Run """" & F03_ExePath & """ """ & GetFileName() & """" , 3


999 WPFのマクロセレクタを起動

Option Explicit

Const WpfExePath = "D:\sakura_editor_macro\_G01-SakuraMacroSelector.exe"
Dim ObjShell : Set ObjShell = CreateObject("WScript.Shell")

Dim IntReturn
'Runメソッドの第2引数の 3 は最大化表示
IntReturn = ObjShell.Run("""" & WpfExePath & """" , 3 , true)

If CStr(IntReturn) = "2"  Then ExecExternalMacro("D:\sakura_editor_macro\002-OpenExploer.vbs")
If CStr(IntReturn) = "3"  Then ExecExternalMacro("D:\sakura_editor_macro\003-ExecSearch1.vbs")
If CStr(IntReturn) = "4"  Then ExecExternalMacro("D:\sakura_editor_macro\004-ExecSearch2.vbs")
If CStr(IntReturn) = "5"  Then ExecExternalMacro("D:\sakura_editor_macro\005-ExecSearch3.vbs")
If CStr(IntReturn) = "9"  Then ExecExternalMacro("D:\sakura_editor_macro\009-EmEditor.vbs")
If CStr(IntReturn) = "10" Then ExecExternalMacro("D:\sakura_editor_macro\010-EmEditorReadOnly.vbs")
If CStr(IntReturn) = "11" Then ExecExternalMacro("D:\sakura_editor_macro\011-CreateWinScpPutCommand.vbs")
If CStr(IntReturn) = "12" Then ExecExternalMacro("D:\sakura_editor_macro\012-ExtractFullPathList.vbs")