<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PebblePot</id>
	<title>MeryWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://www.haijin-boys.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PebblePot"/>
	<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/PebblePot"/>
	<updated>2026-05-18T17:20:28Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF_(%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1)_%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE&amp;diff=3783</id>
		<title>ファイルロック (排他制御) 的なもの</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF_(%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1)_%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE&amp;diff=3783"/>
		<updated>2019-03-09T06:00:45Z</updated>

		<summary type="html">&lt;p&gt;PebblePot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で開いた文書を、&lt;br /&gt;
無理やり(!?) ファイルロック するマクロです。&lt;br /&gt;
&lt;br /&gt;
ようは、Mery で文書を開いている間、&lt;br /&gt;
その文書を、他から弄られないようにします。&lt;br /&gt;
&lt;br /&gt;
== 欠点 ==&lt;br /&gt;
*マクロにて、文書を閉じる (Document.Close) 処理を行っている場合、そのマクロに手を加える必要がある&lt;br /&gt;
:　Utility\FileLock.vbs を非同期で呼び出し、少し待機する という処理を追加&lt;br /&gt;
*ファイルロック処理が、常にフラグ用ファイル有無を確認するという処理なので、文書をたくさん開くと、フォルダへのアクセスが頻発する。。&lt;br /&gt;
:　フォルダへのアクセスを抑えたバージョンは、現状 非公開 (コードが長ったらしいので..)&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
:Mery\Macros&lt;br /&gt;
:│&lt;br /&gt;
:｜　　　　　【 必須 】&lt;br /&gt;
:├─ Utility&lt;br /&gt;
:│　　└ FileLock.vbs&lt;br /&gt;
:│　　→ マクロへの追加は不要&lt;br /&gt;
:│&lt;br /&gt;
:├─ FileLock｜Lock.vbs&lt;br /&gt;
:│　　→ イベント [ファイルを開いた時] [ファイルを保存した時] に登録を&lt;br /&gt;
:├─ FileLock｜Unlock.vbs&lt;br /&gt;
:│　　→ イベント [文書を閉じた時] [ファイルを保存する前] に登録を&lt;br /&gt;
:├─ FileLock｜Unlock all.vbs&lt;br /&gt;
:｜　　→ 文書を全アンロック (非常時用)&lt;br /&gt;
:│&lt;br /&gt;
:│　　　　　【 おまけ (サンプル) 】&lt;br /&gt;
:├─ Close｜Documents.vbs&lt;br /&gt;
:│　　→ すべての文書を閉じる (新規文書１つは残す)&lt;br /&gt;
:└─ Open｜Again.vbs&lt;br /&gt;
:　　　→ 自動選択で読み直し&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock.vbs&#039;&#039;&#039;　… Macros\Utility フォルダの中に置く&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
&#039;==============================================================================&lt;br /&gt;
&#039;                           ファイルロック (Mery用)&lt;br /&gt;
&#039;==============================================================================&lt;br /&gt;
&#039; 指定されたファイル(１つ)の、ファイルロック状態を切り換える&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   仕様&lt;br /&gt;
&#039;    - 非同期で呼び出されることを想定&lt;br /&gt;
&#039;       ( 同期だと、Mery が待機中のまま固まってしまう )&lt;br /&gt;
&#039;    - コマンドライン引数で、動作を指定する&lt;br /&gt;
&#039;       - １) モード&lt;br /&gt;
&#039;          -  1： ロック        … 実行ファイルなどの場合、実行だけは可能&lt;br /&gt;
&#039;          -  0： アンロック&lt;br /&gt;
&#039;          - -1： 全アンロック (非常時用!?)&lt;br /&gt;
&#039;       - ２) ロック対象ファイルの絶対パス (全アンロックの場合は不要)&lt;br /&gt;
&#039;    - 監視は、各々のスクリプトが非同期で行う&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   例 (Mery用マクロ)&lt;br /&gt;
&#039;    - 準備&lt;br /&gt;
&#039;       | Set sh = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
&#039;    - ロック&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 1 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&#039;    - アンロック&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&#039;       | Window.Sleep 350&lt;br /&gt;
&#039;       |   &#039;└ 監視する間隔を考慮し、少し待機 (Sleep) する必要あり&lt;br /&gt;
&#039;       |        ( 設定値より長く Sleep をすべき / ただし、長すぎてもＮＧ.. )&lt;br /&gt;
&#039;    - 全アンロック (非常時用!?)&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; -1&amp;quot;&lt;br /&gt;
&#039;       | Window.Sleep 350&lt;br /&gt;
&#039;       |   &#039;└ 監視する間隔を考慮し、少し待機 (Sleep) する必要あり&lt;br /&gt;
&#039;       |        ( 設定値より長く Sleep をすべき / ただし、長すぎてもＮＧ.. )&lt;br /&gt;
&#039;    - 補足&lt;br /&gt;
&#039;       - Sell.Run の第３引数を、省略 or False にすると、非同期で実行される&lt;br /&gt;
&#039;          ( ちなみに第２引数は、実行時のウィンドウの外観 )&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   仕組み&lt;br /&gt;
&#039;    - ロックは、まず ロック中フラグ用のファイル を作成し、&lt;br /&gt;
&#039;      そのファイルが削除されるまで、スクリプトで対象ファイルを開いたまま待機&lt;br /&gt;
&#039;    - アンロックは、ロックの際に作成した ロック中フラグ用のファイル を削除&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   その他&lt;br /&gt;
&#039;    - 管理者権限が必要な場合や、既にロック状態なものは、ロックできない&lt;br /&gt;
&#039;    - ロック中フラグ用の一時フォルダ内のファイルは、ロックの対象外&lt;br /&gt;
&#039;    - 手動でアンロックしたい場合、ロック中フラグ用のファイルを削除すればＯＫ&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039; [x] 文書を開いたら開いただけ、バックグランドで VBScript (WSH) が動作する&lt;br /&gt;
&#039; [x] ロック対象の絶対パスが長すぎると、正常に動作しない可能性がある&lt;br /&gt;
&#039; [x] コマンドライン引数は、厳密なチェックは行っていない (不正な値はＮＧ)&lt;br /&gt;
&#039; [x] 一時ファイルの作成先に管理者権限が必要な場合、正常に動作しない&lt;br /&gt;
&#039;                                                       [x]バグ/欠陥 [･]その他&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
&#039;=== Global ===================================================================&lt;br /&gt;
Dim cfg : Set cfg = WScript.CreateObject(&amp;quot;Scripting.Dictionary&amp;quot;)&lt;br /&gt;
cfg.Add &amp;quot;Enable&amp;quot;    , True&lt;br /&gt;
  &#039;└ ファイルロックを行わせる (当スクリプトを有効にする) かどうか &amp;lt;真理値&amp;gt;&lt;br /&gt;
cfg.Add &amp;quot;Interval&amp;quot;  , 250&lt;br /&gt;
  &#039;└ ロック中フラグ用のファイルを監視する間隔 (ミリ秒) &amp;lt;整数:100~&amp;gt;&lt;br /&gt;
cfg.Add &amp;quot;TempFolder&amp;quot;, &amp;quot;Temp&amp;quot;&lt;br /&gt;
  &#039;└ 一時フォルダの名前 &amp;lt;文字列&amp;gt;&lt;br /&gt;
  &#039;    - 変更の際は、Mery を終了させておくべき (ロック中の変更はＮＧ)&lt;br /&gt;
  &#039;    - 当スクリプトと同じディレクトリに作成される&lt;br /&gt;
  &#039;    - フォルダ名に使える文字限定&lt;br /&gt;
cfg.Add &amp;quot;LockFix&amp;quot;   , Array(&amp;quot;Lock：&amp;quot;, &amp;quot;.tmp&amp;quot;)&lt;br /&gt;
  &#039;└ ロック中フラグ用のファイル名に付ける辞 (接頭辞，接尾辞) &amp;lt;文字列の配列&amp;gt;&lt;br /&gt;
  &#039;    - 変更の際は、Mery を終了させておくべき (ロック中の変更はＮＧ)&lt;br /&gt;
  &#039;    - ファイル名に使える文字限定&lt;br /&gt;
&lt;br /&gt;
Const MODE_LOCK       =  1      &#039;ロック&lt;br /&gt;
Const MODE_UNLOCK     =  0      &#039;アンロック&lt;br /&gt;
Const MODE_UNLOCK_ALL = -1      &#039;全アンロック (非常時用!?)&lt;br /&gt;
Const MODE_INELIGIBLE = 99     &#039;対象外&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = WScript.CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = WScript.CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)&lt;br /&gt;
If 0 = WScript.Arguments.Count Then&lt;br /&gt;
    MsgBox Join( Array( _&lt;br /&gt;
        &amp;quot;--- ファイルロック ---&amp;quot;, _&lt;br /&gt;
        &amp;quot;&amp;quot;, _&lt;br /&gt;
        &amp;quot;コマンドライン引数&amp;quot;, _&lt;br /&gt;
        &amp;quot; - １) モード  …  [1] ロック  [0] アンロック  [-1] 全アンロック&amp;quot;, _&lt;br /&gt;
        &amp;quot; - ２) ロック対象ファイルの絶対パス (全アンロックの場合は不要)&amp;quot;, _&lt;br /&gt;
        &amp;quot;&amp;quot;, _&lt;br /&gt;
        &amp;quot;※今回は、何もせずに終了します。&amp;quot; _&lt;br /&gt;
        ), vbLf ), vbInformation, _&lt;br /&gt;
        &amp;quot;VBScript (WSH) for Mery&#039;s macros&amp;quot;&lt;br /&gt;
ElseIf cfg(&amp;quot;Enable&amp;quot;) Then&lt;br /&gt;
    Main&lt;br /&gt;
End If&lt;br /&gt;
Set cfg = Nothing&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
&#039;=== Procedure ================================================================&lt;br /&gt;
Sub Main()&lt;br /&gt;
    Dim reg, oFile, bReadOnly, nMode, sLock, sFix(1)&lt;br /&gt;
    Set reg = WScript.CreateObject(&amp;quot;VBScript.RegExp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    nMode = CInt( WScript.Arguments(0) )&lt;br /&gt;
    If 1 &amp;lt; WScript.Arguments.Count Then&lt;br /&gt;
        If fso.GetAbsolutePathName( cfg(&amp;quot;TempFolder&amp;quot;) ) _&lt;br /&gt;
                        = fso.GetParentFolderName( WScript.Arguments(1) ) _&lt;br /&gt;
                Or Not fso.FileExists( WScript.Arguments(1) ) Then&lt;br /&gt;
            nMode = MODE_INELIGIBLE&lt;br /&gt;
        Else&lt;br /&gt;
            reg.Pattern = &amp;quot;:?\\&amp;quot;&lt;br /&gt;
            reg.Global  = True&lt;br /&gt;
            sLock = fso.BuildPath( _&lt;br /&gt;
                        cfg(&amp;quot;TempFolder&amp;quot;), _&lt;br /&gt;
                        cfg(&amp;quot;LockFix&amp;quot;)(0) _&lt;br /&gt;
                            &amp;amp; reg.Replace( WScript.Arguments(1), &amp;quot;-&amp;quot; ) &amp;amp; &amp;quot;-&amp;quot; _&lt;br /&gt;
                            &amp;amp; reg.Execute( WScript.Arguments(1) ).Count _&lt;br /&gt;
                            &amp;amp; Hex( InStrRev( WScript.Arguments(1), &amp;quot;\&amp;quot; ) ) _&lt;br /&gt;
                            &amp;amp; cfg(&amp;quot;LockFix&amp;quot;)(1) )&lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
&lt;br /&gt;
    Select Case nMode&lt;br /&gt;
    &#039;ロック&lt;br /&gt;
        Case MODE_LOCK&lt;br /&gt;
            &#039;ロック中フラグ用のファイル を作成し、&lt;br /&gt;
            &#039;それが削除されるまで、ファイルロック を行う (待機)&lt;br /&gt;
            &#039;※ロック方法は、読み取り専用で開く ＆ 読み取り専用にする&lt;br /&gt;
            &#039; ( 既にロック中だった場合は、何もしない )&lt;br /&gt;
            If Not IsLocked( WScript.Arguments(1) ) Then&lt;br /&gt;
                On Error Resume Next&lt;br /&gt;
                fso.CreateFolder cfg(&amp;quot;TempFolder&amp;quot;)&lt;br /&gt;
                fso.GetFolder( cfg(&amp;quot;TempFolder&amp;quot;) ).Attributes = 2&lt;br /&gt;
                On Error GoTo 0&lt;br /&gt;
                Set oFile = fso.GetFile( WScript.Arguments(1) )&lt;br /&gt;
                If 1 And oFile.Attributes Then&lt;br /&gt;
                    bReadOnly = True&lt;br /&gt;
                Else&lt;br /&gt;
                    oFile.Attributes = oFile.Attributes + 1&lt;br /&gt;
                End If&lt;br /&gt;
                fso.CreateTextFile(sLock).Close&lt;br /&gt;
                Set oFile = fso.OpenTextFile( WScript.Arguments(1), 1 )&lt;br /&gt;
                Wait(sLock) : oFile.Close&lt;br /&gt;
                If Not bReadOnly Then&lt;br /&gt;
                    Set oFile = fso.GetFile( WScript.Arguments(1) )&lt;br /&gt;
                    oFile.Attributes = oFile.Attributes - 1&lt;br /&gt;
                End If&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
    &#039;アンロック&lt;br /&gt;
        Case MODE_UNLOCK&lt;br /&gt;
            &#039;ロック中フラグ用のファイル を削除&lt;br /&gt;
            If fso.FileExists(sLock) Then fso.DeleteFile sLock&lt;br /&gt;
&lt;br /&gt;
    &#039;全アンロック&lt;br /&gt;
        Case MODE_UNLOCK_ALL&lt;br /&gt;
            &#039;ロック中フラグ用のファイル と思しきものを、すべて削除&lt;br /&gt;
            reg.Pattern = &amp;quot;([\^\$\+\.\(\)\[\]\{\}])&amp;quot;&lt;br /&gt;
            reg.Global  = True&lt;br /&gt;
            sFix(0) = reg.Replace( cfg(&amp;quot;LockFix&amp;quot;)(0), &amp;quot;\$1&amp;quot; )&lt;br /&gt;
            sFix(1) = reg.Replace( cfg(&amp;quot;LockFix&amp;quot;)(1), &amp;quot;\$1&amp;quot; )&lt;br /&gt;
            reg.Pattern = &amp;quot;^&amp;quot; &amp;amp; sFix(0) &amp;amp; &amp;quot;.+&amp;quot; &amp;amp; sFix(1) &amp;amp; &amp;quot;$&amp;quot;&lt;br /&gt;
            reg.Global  = False&lt;br /&gt;
            For Each oFile In fso.GetFolder( cfg(&amp;quot;TempFolder&amp;quot;) ).Files&lt;br /&gt;
                If reg.Test(oFile.Name) Then _&lt;br /&gt;
                    fso.DeleteFile fso.BuildPath( cfg(&amp;quot;TempFolder&amp;quot;), oFile.Name )&lt;br /&gt;
            Next&lt;br /&gt;
    End Select&lt;br /&gt;
&lt;br /&gt;
    Set oFile = Nothing&lt;br /&gt;
    Set reg   = Nothing&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039;--- 待機 ---------------------------------------------------------------------&lt;br /&gt;
&#039; Summary | 指定ファイルが存在する間、待機する&lt;br /&gt;
&#039;   Param | - フラグ用ファイルのパス&lt;br /&gt;
&#039;  Return | －&lt;br /&gt;
&#039;    Note | －&lt;br /&gt;
Sub Wait( ByVal sFile )&lt;br /&gt;
    Do While fso.FileExists(sFile) : WScript.Sleep cfg(&amp;quot;Interval&amp;quot;) : Loop&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039;--- ファイルロックの判定 -----------------------------------------------------&lt;br /&gt;
&#039; Summary | ファイルロックされているかどうかを返す&lt;br /&gt;
&#039;   Param | - ファイルの絶対パス&lt;br /&gt;
&#039;  Return | ファイルロックされているかどうか&lt;br /&gt;
&#039;    Note | ・ファイル名を変更できるかどうかで判定している&lt;br /&gt;
&#039;         | ・ファイルロックされていない ＆ 読み取り専用 の場合は、False が返る&lt;br /&gt;
Function IsLocked( ByVal sFile )&lt;br /&gt;
    Dim oFile, sName&lt;br /&gt;
&lt;br /&gt;
    IsLocked = False&lt;br /&gt;
    Set oFile = fso.GetFile(sFile)&lt;br /&gt;
    sName = oFile.Name&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    oFile.Name = fso.GetTempName()  &#039;読み取り専用 でも成功する (変更される)&lt;br /&gt;
    If 0 &amp;lt;&amp;gt; Err.Number Then&lt;br /&gt;
        IsLocked = True&lt;br /&gt;
    Else&lt;br /&gt;
        oFile.Name = sName&lt;br /&gt;
    End If&lt;br /&gt;
    On Error GoTo 0&lt;br /&gt;
&lt;br /&gt;
    Set oFile = Nothing&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Lock.vbs&#039;&#039;&#039;　… イベント登録を忘れずに&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;文書をロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 開いてある文書をファイルロックする&lt;br /&gt;
&#039; Assumption | イベントで実行 (ファイルを開いた時 / ファイルを保存した時)&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - マクロによるアクションの場合、&lt;br /&gt;
&#039;      イベントは発生せず、よってこのマクロが実行されない&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh, i&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
For i = 0 To Editor.Documents.Count - 1&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 1 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.Documents.Item(i).FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Next&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Unlock.vbs&#039;&#039;&#039;　… イベント登録を忘れずに&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;文書をアンロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | ファイルロックしてある文書をアンロックする&lt;br /&gt;
&#039; Assumption | イベントで実行 (文書を閉じた時 / ファイルを保存する前)&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - マクロによるアクションの場合、&lt;br /&gt;
&#039;      イベントは発生せず、よってこのマクロが実行されない&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
If &amp;quot;&amp;quot; &amp;lt;&amp;gt; Document.FullName Then&lt;br /&gt;
    sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Window.Sleep 350&lt;br /&gt;
      &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
      &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
End If&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Unlock all.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;#title = &amp;quot;文書を全アンロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | ファイルロックしてある文書をすべてアンロックする&lt;br /&gt;
&#039; Assumption | ポップアップメニュー etc. (非常時用!?)&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; -1&amp;quot;&lt;br /&gt;
Window.Sleep 350&lt;br /&gt;
  &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
  &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;Close｜Documents.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;すべての文書を閉じる&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 現エディタウィンドウの、すべての文書を閉じる (新規文書１つは残す)&lt;br /&gt;
&#039; Assumption | ポップアップメニュー，ツールバー&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
Do While 1 &amp;lt; Editor.Documents.Count&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.ActiveDocument.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Editor.ActiveDocument.Close&lt;br /&gt;
Loop&lt;br /&gt;
If 0 &amp;lt; Editor.Documents.Count Then&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.ActiveDocument.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Editor.ActiveDocument.Close&lt;br /&gt;
End If&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;Open｜Again.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;自動選択で読み直し&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 編集中の文書を、エンコーディング自動選択で読み直す&lt;br /&gt;
&#039; Assumption | ポップアップメニュー，ツールバー&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - タブ位置が、一番右側に開き直されてしまう (本当は同じ位置に開き直したい)&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh, sPath, nCount&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
sPath  = Editor.ActiveDocument.FullName&lt;br /&gt;
nCount = Editor.Documents.Count&lt;br /&gt;
sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; sPath &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Window.Sleep 350&lt;br /&gt;
  &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
  &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
Editor.ActiveDocument.Close&lt;br /&gt;
If 1 &amp;lt; nCount Then Editor.NewFile&lt;br /&gt;
Editor.OpenFile(sPath)&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>PebblePot</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF_(%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1)_%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE&amp;diff=3782</id>
		<title>ファイルロック (排他制御) 的なもの</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF_(%E6%8E%92%E4%BB%96%E5%88%B6%E5%BE%A1)_%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE&amp;diff=3782"/>
		<updated>2019-03-09T05:53:00Z</updated>

		<summary type="html">&lt;p&gt;PebblePot: ページの作成:「Mery で開いた文書を、 無理やり(!?) ファイルロック するマクロです。  ようは、Mery で文書を開いている間、 その文書を、他か...」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で開いた文書を、&lt;br /&gt;
無理やり(!?) ファイルロック するマクロです。&lt;br /&gt;
&lt;br /&gt;
ようは、Mery で文書を開いている間、&lt;br /&gt;
その文書を、他から弄られないようにします。&lt;br /&gt;
&lt;br /&gt;
== 欠点 ==&lt;br /&gt;
*マクロにて、文書を閉じる (Document.Close) 処理を行っている場合、そのマクロに手を加える必要がある&lt;br /&gt;
:　Utility\FileLock.vbs を非同期で呼び出し、少し待機する という処理を追加&lt;br /&gt;
*ファイルロック処理が、常にフラグ用ファイル有無を確認するという処理なので、文書をたくさん開くと、フォルダへのアクセスが頻発する。。&lt;br /&gt;
:　フォルダへのアクセスを抑えたバージョンは、現状 非公開 (コードが長ったらしいので..)&lt;br /&gt;
&lt;br /&gt;
== 構成 ==&lt;br /&gt;
:Mery\Macros&lt;br /&gt;
:│&lt;br /&gt;
:｜　　　　　【 必須 】&lt;br /&gt;
:├─ Utility&lt;br /&gt;
:│　　└ FileLock.vbs&lt;br /&gt;
:│　　→ マクロへの追加は不要&lt;br /&gt;
:│&lt;br /&gt;
:├─ FileLock｜Lock.vbs&lt;br /&gt;
:│　　→ イベント [ファイルを開いた時] [ファイルを保存した時] に登録を&lt;br /&gt;
:├─ FileLock｜Unlock.vbs&lt;br /&gt;
:│　　→ イベント [ファイルを開いた時] [ファイルを保存した時] に登録を&lt;br /&gt;
:├─ FileLock｜Unlock all.vbs&lt;br /&gt;
:｜　　→ 文書を全アンロック (非常時用)&lt;br /&gt;
:│&lt;br /&gt;
:│　　　　　【 おまけ (サンプル) 】&lt;br /&gt;
:├─ Close｜Documents.vbs&lt;br /&gt;
:│　　→ すべての文書を閉じる (新規文書１つは残す)&lt;br /&gt;
:└─ Open｜Again.vbs&lt;br /&gt;
:　　　→ 自動選択で読み直し&lt;br /&gt;
&lt;br /&gt;
== ソースコード ==&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock.vbs&#039;&#039;&#039;　… Macros\Utility フォルダの中に置く&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
&#039;==============================================================================&lt;br /&gt;
&#039;                           ファイルロック (Mery用)&lt;br /&gt;
&#039;==============================================================================&lt;br /&gt;
&#039; 指定されたファイル(１つ)の、ファイルロック状態を切り換える&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   仕様&lt;br /&gt;
&#039;    - 非同期で呼び出されることを想定&lt;br /&gt;
&#039;       ( 同期だと、Mery が待機中のまま固まってしまう )&lt;br /&gt;
&#039;    - コマンドライン引数で、動作を指定する&lt;br /&gt;
&#039;       - １) モード&lt;br /&gt;
&#039;          -  1： ロック        … 実行ファイルなどの場合、実行だけは可能&lt;br /&gt;
&#039;          -  0： アンロック&lt;br /&gt;
&#039;          - -1： 全アンロック (非常時用!?)&lt;br /&gt;
&#039;       - ２) ロック対象ファイルの絶対パス (全アンロックの場合は不要)&lt;br /&gt;
&#039;    - 監視は、各々のスクリプトが非同期で行う&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   例 (Mery用マクロ)&lt;br /&gt;
&#039;    - 準備&lt;br /&gt;
&#039;       | Set sh = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
&#039;    - ロック&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 1 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&#039;    - アンロック&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&#039;       | Window.Sleep 350&lt;br /&gt;
&#039;       |   &#039;└ 監視する間隔を考慮し、少し待機 (Sleep) する必要あり&lt;br /&gt;
&#039;       |        ( 設定値より長く Sleep をすべき / ただし、長すぎてもＮＧ.. )&lt;br /&gt;
&#039;    - 全アンロック (非常時用!?)&lt;br /&gt;
&#039;       | sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; -1&amp;quot;&lt;br /&gt;
&#039;       | Window.Sleep 350&lt;br /&gt;
&#039;       |   &#039;└ 監視する間隔を考慮し、少し待機 (Sleep) する必要あり&lt;br /&gt;
&#039;       |        ( 設定値より長く Sleep をすべき / ただし、長すぎてもＮＧ.. )&lt;br /&gt;
&#039;    - 補足&lt;br /&gt;
&#039;       - Sell.Run の第３引数を、省略 or False にすると、非同期で実行される&lt;br /&gt;
&#039;          ( ちなみに第２引数は、実行時のウィンドウの外観 )&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   仕組み&lt;br /&gt;
&#039;    - ロックは、まず ロック中フラグ用のファイル を作成し、&lt;br /&gt;
&#039;      そのファイルが削除されるまで、スクリプトで対象ファイルを開いたまま待機&lt;br /&gt;
&#039;    - アンロックは、ロックの際に作成した ロック中フラグ用のファイル を削除&lt;br /&gt;
&#039; &lt;br /&gt;
&#039;   その他&lt;br /&gt;
&#039;    - 管理者権限が必要な場合や、既にロック状態なものは、ロックできない&lt;br /&gt;
&#039;    - ロック中フラグ用の一時フォルダ内のファイルは、ロックの対象外&lt;br /&gt;
&#039;    - 手動でアンロックしたい場合、ロック中フラグ用のファイルを削除すればＯＫ&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039; [x] 文書を開いたら開いただけ、バックグランドで VBScript (WSH) が動作する&lt;br /&gt;
&#039; [x] ロック対象の絶対パスが長すぎると、正常に動作しない可能性がある&lt;br /&gt;
&#039; [x] コマンドライン引数は、厳密なチェックは行っていない (不正な値はＮＧ)&lt;br /&gt;
&#039; [x] 一時ファイルの作成先に管理者権限が必要な場合、正常に動作しない&lt;br /&gt;
&#039;                                                       [x]バグ/欠陥 [･]その他&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
&#039;=== Global ===================================================================&lt;br /&gt;
Dim cfg : Set cfg = WScript.CreateObject(&amp;quot;Scripting.Dictionary&amp;quot;)&lt;br /&gt;
cfg.Add &amp;quot;Enable&amp;quot;    , True&lt;br /&gt;
  &#039;└ ファイルロックを行わせる (当スクリプトを有効にする) かどうか &amp;lt;真理値&amp;gt;&lt;br /&gt;
cfg.Add &amp;quot;Interval&amp;quot;  , 250&lt;br /&gt;
  &#039;└ ロック中フラグ用のファイルを監視する間隔 (ミリ秒) &amp;lt;整数:100~&amp;gt;&lt;br /&gt;
cfg.Add &amp;quot;TempFolder&amp;quot;, &amp;quot;Temp&amp;quot;&lt;br /&gt;
  &#039;└ 一時フォルダの名前 &amp;lt;文字列&amp;gt;&lt;br /&gt;
  &#039;    - 変更の際は、Mery を終了させておくべき (ロック中の変更はＮＧ)&lt;br /&gt;
  &#039;    - 当スクリプトと同じディレクトリに作成される&lt;br /&gt;
  &#039;    - フォルダ名に使える文字限定&lt;br /&gt;
cfg.Add &amp;quot;LockFix&amp;quot;   , Array(&amp;quot;Lock：&amp;quot;, &amp;quot;.tmp&amp;quot;)&lt;br /&gt;
  &#039;└ ロック中フラグ用のファイル名に付ける辞 (接頭辞，接尾辞) &amp;lt;文字列の配列&amp;gt;&lt;br /&gt;
  &#039;    - 変更の際は、Mery を終了させておくべき (ロック中の変更はＮＧ)&lt;br /&gt;
  &#039;    - ファイル名に使える文字限定&lt;br /&gt;
&lt;br /&gt;
Const MODE_LOCK       =  1      &#039;ロック&lt;br /&gt;
Const MODE_UNLOCK     =  0      &#039;アンロック&lt;br /&gt;
Const MODE_UNLOCK_ALL = -1      &#039;全アンロック (非常時用!?)&lt;br /&gt;
Const MODE_INELIGIBLE = 99     &#039;対象外&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = WScript.CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = WScript.CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)&lt;br /&gt;
If 0 = WScript.Arguments.Count Then&lt;br /&gt;
    MsgBox Join( Array( _&lt;br /&gt;
        &amp;quot;--- ファイルロック ---&amp;quot;, _&lt;br /&gt;
        &amp;quot;&amp;quot;, _&lt;br /&gt;
        &amp;quot;コマンドライン引数&amp;quot;, _&lt;br /&gt;
        &amp;quot; - １) モード  …  [1] ロック  [0] アンロック  [-1] 全アンロック&amp;quot;, _&lt;br /&gt;
        &amp;quot; - ２) ロック対象ファイルの絶対パス (全アンロックの場合は不要)&amp;quot;, _&lt;br /&gt;
        &amp;quot;&amp;quot;, _&lt;br /&gt;
        &amp;quot;※今回は、何もせずに終了します。&amp;quot; _&lt;br /&gt;
        ), vbLf ), vbInformation, _&lt;br /&gt;
        &amp;quot;VBScript (WSH) for Mery&#039;s macros&amp;quot;&lt;br /&gt;
ElseIf cfg(&amp;quot;Enable&amp;quot;) Then&lt;br /&gt;
    Main&lt;br /&gt;
End If&lt;br /&gt;
Set cfg = Nothing&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&lt;br /&gt;
&#039;=== Procedure ================================================================&lt;br /&gt;
Sub Main()&lt;br /&gt;
    Dim reg, oFile, bReadOnly, nMode, sLock, sFix(1)&lt;br /&gt;
    Set reg = WScript.CreateObject(&amp;quot;VBScript.RegExp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    nMode = CInt( WScript.Arguments(0) )&lt;br /&gt;
    If 1 &amp;lt; WScript.Arguments.Count Then&lt;br /&gt;
        If fso.GetAbsolutePathName( cfg(&amp;quot;TempFolder&amp;quot;) ) _&lt;br /&gt;
                        = fso.GetParentFolderName( WScript.Arguments(1) ) _&lt;br /&gt;
                Or Not fso.FileExists( WScript.Arguments(1) ) Then&lt;br /&gt;
            nMode = MODE_INELIGIBLE&lt;br /&gt;
        Else&lt;br /&gt;
            reg.Pattern = &amp;quot;:?\\&amp;quot;&lt;br /&gt;
            reg.Global  = True&lt;br /&gt;
            sLock = fso.BuildPath( _&lt;br /&gt;
                        cfg(&amp;quot;TempFolder&amp;quot;), _&lt;br /&gt;
                        cfg(&amp;quot;LockFix&amp;quot;)(0) _&lt;br /&gt;
                            &amp;amp; reg.Replace( WScript.Arguments(1), &amp;quot;-&amp;quot; ) &amp;amp; &amp;quot;-&amp;quot; _&lt;br /&gt;
                            &amp;amp; reg.Execute( WScript.Arguments(1) ).Count _&lt;br /&gt;
                            &amp;amp; Hex( InStrRev( WScript.Arguments(1), &amp;quot;\&amp;quot; ) ) _&lt;br /&gt;
                            &amp;amp; cfg(&amp;quot;LockFix&amp;quot;)(1) )&lt;br /&gt;
        End If&lt;br /&gt;
    End If&lt;br /&gt;
&lt;br /&gt;
    Select Case nMode&lt;br /&gt;
    &#039;ロック&lt;br /&gt;
        Case MODE_LOCK&lt;br /&gt;
            &#039;ロック中フラグ用のファイル を作成し、&lt;br /&gt;
            &#039;それが削除されるまで、ファイルロック を行う (待機)&lt;br /&gt;
            &#039;※ロック方法は、読み取り専用で開く ＆ 読み取り専用にする&lt;br /&gt;
            &#039; ( 既にロック中だった場合は、何もしない )&lt;br /&gt;
            If Not IsLocked( WScript.Arguments(1) ) Then&lt;br /&gt;
                On Error Resume Next&lt;br /&gt;
                fso.CreateFolder cfg(&amp;quot;TempFolder&amp;quot;)&lt;br /&gt;
                fso.GetFolder( cfg(&amp;quot;TempFolder&amp;quot;) ).Attributes = 2&lt;br /&gt;
                On Error GoTo 0&lt;br /&gt;
                Set oFile = fso.GetFile( WScript.Arguments(1) )&lt;br /&gt;
                If 1 And oFile.Attributes Then&lt;br /&gt;
                    bReadOnly = True&lt;br /&gt;
                Else&lt;br /&gt;
                    oFile.Attributes = oFile.Attributes + 1&lt;br /&gt;
                End If&lt;br /&gt;
                fso.CreateTextFile(sLock).Close&lt;br /&gt;
                Set oFile = fso.OpenTextFile( WScript.Arguments(1), 1 )&lt;br /&gt;
                Wait(sLock) : oFile.Close&lt;br /&gt;
                If Not bReadOnly Then&lt;br /&gt;
                    Set oFile = fso.GetFile( WScript.Arguments(1) )&lt;br /&gt;
                    oFile.Attributes = oFile.Attributes - 1&lt;br /&gt;
                End If&lt;br /&gt;
            End If&lt;br /&gt;
&lt;br /&gt;
    &#039;アンロック&lt;br /&gt;
        Case MODE_UNLOCK&lt;br /&gt;
            &#039;ロック中フラグ用のファイル を削除&lt;br /&gt;
            If fso.FileExists(sLock) Then fso.DeleteFile sLock&lt;br /&gt;
&lt;br /&gt;
    &#039;全アンロック&lt;br /&gt;
        Case MODE_UNLOCK_ALL&lt;br /&gt;
            &#039;ロック中フラグ用のファイル と思しきものを、すべて削除&lt;br /&gt;
            reg.Pattern = &amp;quot;([\^\$\+\.\(\)\[\]\{\}])&amp;quot;&lt;br /&gt;
            reg.Global  = True&lt;br /&gt;
            sFix(0) = reg.Replace( cfg(&amp;quot;LockFix&amp;quot;)(0), &amp;quot;\$1&amp;quot; )&lt;br /&gt;
            sFix(1) = reg.Replace( cfg(&amp;quot;LockFix&amp;quot;)(1), &amp;quot;\$1&amp;quot; )&lt;br /&gt;
            reg.Pattern = &amp;quot;^&amp;quot; &amp;amp; sFix(0) &amp;amp; &amp;quot;.+&amp;quot; &amp;amp; sFix(1) &amp;amp; &amp;quot;$&amp;quot;&lt;br /&gt;
            reg.Global  = False&lt;br /&gt;
            For Each oFile In fso.GetFolder( cfg(&amp;quot;TempFolder&amp;quot;) ).Files&lt;br /&gt;
                If reg.Test(oFile.Name) Then _&lt;br /&gt;
                    fso.DeleteFile fso.BuildPath( cfg(&amp;quot;TempFolder&amp;quot;), oFile.Name )&lt;br /&gt;
            Next&lt;br /&gt;
    End Select&lt;br /&gt;
&lt;br /&gt;
    Set oFile = Nothing&lt;br /&gt;
    Set reg   = Nothing&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039;--- 待機 ---------------------------------------------------------------------&lt;br /&gt;
&#039; Summary | 指定ファイルが存在する間、待機する&lt;br /&gt;
&#039;   Param | - フラグ用ファイルのパス&lt;br /&gt;
&#039;  Return | －&lt;br /&gt;
&#039;    Note | －&lt;br /&gt;
Sub Wait( ByVal sFile )&lt;br /&gt;
    Do While fso.FileExists(sFile) : WScript.Sleep cfg(&amp;quot;Interval&amp;quot;) : Loop&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&#039;--- ファイルロックの判定 -----------------------------------------------------&lt;br /&gt;
&#039; Summary | ファイルロックされているかどうかを返す&lt;br /&gt;
&#039;   Param | - ファイルの絶対パス&lt;br /&gt;
&#039;  Return | ファイルロックされているかどうか&lt;br /&gt;
&#039;    Note | ・ファイル名を変更できるかどうかで判定している&lt;br /&gt;
&#039;         | ・ファイルロックされていない ＆ 読み取り専用 の場合は、False が返る&lt;br /&gt;
Function IsLocked( ByVal sFile )&lt;br /&gt;
    Dim oFile, sName&lt;br /&gt;
&lt;br /&gt;
    IsLocked = False&lt;br /&gt;
    Set oFile = fso.GetFile(sFile)&lt;br /&gt;
    sName = oFile.Name&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    oFile.Name = fso.GetTempName()  &#039;読み取り専用 でも成功する (変更される)&lt;br /&gt;
    If 0 &amp;lt;&amp;gt; Err.Number Then&lt;br /&gt;
        IsLocked = True&lt;br /&gt;
    Else&lt;br /&gt;
        oFile.Name = sName&lt;br /&gt;
    End If&lt;br /&gt;
    On Error GoTo 0&lt;br /&gt;
&lt;br /&gt;
    Set oFile = Nothing&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Lock.vbs&#039;&#039;&#039;　… イベント登録を忘れずに&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;文書をロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 開いてある文書をファイルロックする&lt;br /&gt;
&#039; Assumption | イベントで実行 (ファイルを開いた時 / ファイルを保存した時)&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - マクロによるアクションの場合、&lt;br /&gt;
&#039;      イベントは発生せず、よってこのマクロが実行されない&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh, i&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
For i = 0 To Editor.Documents.Count - 1&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 1 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.Documents.Item(i).FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Next&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Unlock.vbs&#039;&#039;&#039;　… イベント登録を忘れずに&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;文書をアンロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | ファイルロックしてある文書をアンロックする&lt;br /&gt;
&#039; Assumption | イベントで実行 (文書を閉じた時 / ファイルを保存する前)&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - マクロによるアクションの場合、&lt;br /&gt;
&#039;      イベントは発生せず、よってこのマクロが実行されない&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
If &amp;quot;&amp;quot; &amp;lt;&amp;gt; Document.FullName Then&lt;br /&gt;
    sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; Document.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Window.Sleep 350&lt;br /&gt;
      &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
      &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
End If&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;FileLock｜Unlock all.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;#title = &amp;quot;文書を全アンロック&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | ファイルロックしてある文書をすべてアンロックする&lt;br /&gt;
&#039; Assumption | ポップアップメニュー etc. (非常時用!?)&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; -1&amp;quot;&lt;br /&gt;
Window.Sleep 350&lt;br /&gt;
  &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
  &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;Close｜Documents.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;すべての文書を閉じる&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 現エディタウィンドウの、すべての文書を閉じる (新規文書１つは残す)&lt;br /&gt;
&#039; Assumption | ポップアップメニュー，ツールバー&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
Do While 1 &amp;lt; Editor.Documents.Count&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.ActiveDocument.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Editor.ActiveDocument.Close&lt;br /&gt;
Loop&lt;br /&gt;
If 0 &amp;lt; Editor.Documents.Count Then&lt;br /&gt;
    sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; _&lt;br /&gt;
                    &amp;amp; Editor.ActiveDocument.FullName &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Editor.ActiveDocument.Close&lt;br /&gt;
End If&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
■ &#039;&#039;&#039;Open｜Again.vbs&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vbscript&amp;quot;&amp;gt;&lt;br /&gt;
#title = &amp;quot;自動選択で読み直し&amp;quot;&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;    Summary | 編集中の文書を、エンコーディング自動選択で読み直す&lt;br /&gt;
&#039; Assumption | ポップアップメニュー，ツールバー&lt;br /&gt;
&#039; &lt;br /&gt;
&#039; ・バグ/欠陥&lt;br /&gt;
&#039;    - タブ位置が、一番右側に開き直されてしまう (本当は同じ位置に開き直したい)&lt;br /&gt;
&#039;------------------------------------------------------------------------------&lt;br /&gt;
&#039;                                                                   2019-03-09&lt;br /&gt;
Option Explicit&lt;br /&gt;
&lt;br /&gt;
Dim fso, sh, sPath, nCount&lt;br /&gt;
Set fso = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;br /&gt;
Set sh  = CreateObject(&amp;quot;WScript.Shell&amp;quot;)&lt;br /&gt;
sh.CurrentDirectory = fso.GetParentFolderName(ScriptFullName)&lt;br /&gt;
sPath  = Editor.ActiveDocument.FullName&lt;br /&gt;
nCount = Editor.Documents.Count&lt;br /&gt;
sh.Run &amp;quot;&amp;quot;&amp;quot;Utility\FileLock.vbs&amp;quot;&amp;quot; 0 &amp;quot;&amp;quot;&amp;quot; &amp;amp; sPath &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
Window.Sleep 350&lt;br /&gt;
  &#039;└ 必ず、Utility\FileLock.vbs の Interval 設定より大きな値にすべき&lt;br /&gt;
  &#039;    ( ただし、大きすぎると再ロックまでの時間がかかってしまう.. )&lt;br /&gt;
Editor.ActiveDocument.Close&lt;br /&gt;
If 1 &amp;lt; nCount Then Editor.NewFile&lt;br /&gt;
Editor.OpenFile(sPath)&lt;br /&gt;
Set sh  = Nothing&lt;br /&gt;
Set fso = Nothing&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>PebblePot</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=3781</id>
		<title>マクロライブラリ</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&amp;diff=3781"/>
		<updated>2019-03-09T05:47:08Z</updated>

		<summary type="html">&lt;p&gt;PebblePot: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「My Macros」等に保存し、マクロメニューの「選択」や「カスタマイズ」から読み込んで使用してください。&lt;br /&gt;
&lt;br /&gt;
マクロライブラリはどなたでも自由に編集できますので、みなさんが作成した便利なマクロをどんどん掲載してください。&lt;br /&gt;
&lt;br /&gt;
== テキスト操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/haijinboys/mery-macro-emmet Emmet] (Kuro)&lt;br /&gt;
*[[Zen Coding]] (Kuro)&lt;br /&gt;
*[[CSV のカーソル位置の列を削除]] (Kuro)&lt;br /&gt;
*[[対応する括弧に移動]] (Kuro, kurama, masme) update 2017/05/27&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2014/03/15&lt;br /&gt;
*[[バイト数]] (Kuro, ks, sukemaru) update 2018/11/18 文書全体の文字数・行数表示にも対応&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme, sukemaru) update 2018/12/09&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) update 2016/05/24&lt;br /&gt;
*[[選択範囲を上下に移動]] (ks)&lt;br /&gt;
*[[TeraPadのCtrl↑と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[TeraPadのCtrl↓と同じような動作をするマクロ]] (suke)&lt;br /&gt;
*[[Vz 風テキストスタック 2 ストロークキー]] (papagoat) update 2013/11/22&lt;br /&gt;
*[[非選択状態でも逆インデント]] (papagoat)&lt;br /&gt;
*[[ラクラク罫線]] (手石) Update 2012/12/22&lt;br /&gt;
*[[ファイル:XHTML.zip]] (アラフォー親父) HTMLタグを、ショートカット・キーに登録して入力するマクロ（文章挟み込み仕様）&lt;br /&gt;
*[[矩形ペースト]] (手石)&lt;br /&gt;
*[[自動箇条書き]] (手石) update 2013/03/15&lt;br /&gt;
*[[インデントを考慮した折り返し（改行挿入）]] (手石) update 2013/02/23&lt;br /&gt;
*[[青空文庫用整形補助]] (ks, 有志)&lt;br /&gt;
*[[部分編集]] (ks)&lt;br /&gt;
*[[文字カウント]] (masme) 2014/02/01, update 2018/08/04&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント) (masme, sukemaru) 2014/02/09, update 2018/11/16&lt;br /&gt;
:*「[[字下げ・字上げ#インデント|インデント／逆インデント]]」を追加&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2016/02/28&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
*[[自動ルビ振り]] (急急如律令)&lt;br /&gt;
*[[貼付け実行後のカーソル位置を貼付け文字列の先頭にする]] (yuko, sukemaru) update 2018/11/14&lt;br /&gt;
*[[ドイツ語特殊文字]] (鯉)&lt;br /&gt;
*[[矩形選択範囲の各行先頭に文字挿入]] (yuko)&lt;br /&gt;
*[[文章で使用されている文字をユニーク抽出]] (Kuro)&lt;br /&gt;
*[[アウトライン用ノード追加]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを上げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードレベルを下げる]] (mik) 2018/06/25&lt;br /&gt;
*[[アウトラインのノードの完了/未完了を切り替える]] (mik) 2018/10/18 update&lt;br /&gt;
*[[ハルナアウトライン用の完了/未完了フラグをノード名に反映する]] (mik) 2018/10/18 update&lt;br /&gt;
*[[Markdown文書で改行時にリスト、引用ブロック開始記号を自動入力する]] (catfist, yuko) 2018/10/15 update&lt;br /&gt;
*[[行を複製 (複数行可)]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2018/11/19&lt;br /&gt;
: ・簡易版「カッコで囲う (ポップアップメニューなし)」&amp;lt;br&amp;gt;・「引用符を追加／削除」&amp;lt;br&amp;gt;・人柱版 追加コード「行頭/行末から任意の 文字数／文字列 を削除」&lt;br /&gt;
*[[引用符／コメント]] (※旧「引用の追加」マクロを増補改訂)　(sukemaru) 2018/10/28&lt;br /&gt;
*[[TrueとFalse_を切り替える|YES／NO マクロ]] (sukemaru) update 2018/11/27 ※「&amp;lt;span style=&amp;quot;color:#0000c0;&amp;quot;&amp;gt;True&amp;lt;/span&amp;gt;と&amp;lt;span style=&amp;quot;color:#c00;&amp;quot;&amp;gt;False&amp;lt;/span&amp;gt;を切り替える」&lt;br /&gt;
*[[行頭か行末 または 選択範囲の始点か終点]] (sukemaru) 2018/12/03&lt;br /&gt;
*[[定型文を挿入]] (sukemaru) 2018/12/03&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
:*[[選択範囲のURL・パスを開く|ひらけゴマ！]] (sukemaru) update 2018/12/05 ※「選択範囲のURL・パスを開く」&lt;br /&gt;
*[[自動バックアップ]] (ks)&lt;br /&gt;
*[[終了時状態保持・復元]] (ks)&lt;br /&gt;
*[[上書き保存(UAC対応)]] (ks)&lt;br /&gt;
*[[含んでいるフォルダを開く]] (ks)&lt;br /&gt;
*[[パスを取得]] (Kuro)&lt;br /&gt;
*[[フォルダ内のファイルをすべて開く]] (Kuro)&lt;br /&gt;
*[[ファイルを比較]] (Kuro)&lt;br /&gt;
*[[ファイル名を引数にしてアプリ起動]] (Kuro, miso)&lt;br /&gt;
*[[ブックマーク一覧ジャンプ]] (goat) update 2012/09/24&lt;br /&gt;
*[[拡張子の違うファイルを開く]] (n)&lt;br /&gt;
*[[フォルダを開く]] (n)&lt;br /&gt;
*[[コマンドプロンプトを開く]] (n)&lt;br /&gt;
*[[SDIウィンドウの記憶と復帰]] (papagoat) Update 2012/10/23 (説明文変更 2013/11/22)&lt;br /&gt;
*[[よく使うフォルダ]] (手石) Update 2014/02/22&lt;br /&gt;
*[[ファイル（選択範囲）の仮保存]] (手石)&lt;br /&gt;
*[[ポップアップメニューでファイル選択]] (手石)&lt;br /&gt;
*[[フォルダツリーをポップアップ表示]] (n)&lt;br /&gt;
*[[タグジャンプ]] (o)&lt;br /&gt;
*[[ウィンドウの位置とサイズを拡張子で指定]] (papagoat) Update 2014/04/17&lt;br /&gt;
*[[編集モードの自動選択]] または &#039;&#039;&#039;書き換え禁止で開く&#039;&#039;&#039; (sukemaru, Bleat) Update 2019/02/15&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) fixed 2018/12/19&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[すべて閉じる]] (sukemaru) 2018/12/19&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== 変換・ソート・整形 ==&lt;br /&gt;
&lt;br /&gt;
*[[可変長を固定長に変換]] (Kuro)&lt;br /&gt;
*[[SHA でハッシュ化]] (Kuro)&lt;br /&gt;
*[[標準変換]] (Kuro)&lt;br /&gt;
*[[昇順で並び替え]] (Kuro)&lt;br /&gt;
*[[降順で並び替え]] (Kuro)&lt;br /&gt;
*[[連続する重複行を削除]] (Kuro)&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2018/01/15&lt;br /&gt;
*[[旧漢字から新漢字に変換]] (furu)&lt;br /&gt;
*[[clustalw を用いてアライメントを実行]] (suke)&lt;br /&gt;
*[[連番の挿入]] (手石)&lt;br /&gt;
*[[TSV(CSV) ⇒ 固定長]] (手石) update 2013/04/16&lt;br /&gt;
*[[行並べ替え]] (masme) 2013/08/25, update 2018/04/15&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
&lt;br /&gt;
== 検索・置換 ==&lt;br /&gt;
&lt;br /&gt;
*[[文書から検索]] (Kuro)&lt;br /&gt;
*[[単語を抽出]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチしない行)]] (Kuro)&lt;br /&gt;
*[[このファイルから検索(マッチする行)]] (Kuro)&lt;br /&gt;
*[[タグの外側（内側）だけ置換]] (手石)&lt;br /&gt;
*[[ポップアップメニューで検索先にジャンプ]] (手石, sukemaru) Last Update 2018/12/20&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2017/06/26&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[https://github.com/GunseiPaseri/Mery_macro 文字出現量ランキング] (群生系パセリ) 2015/12/28&lt;br /&gt;
*[[検索ヒット数表示]] (ks)&lt;br /&gt;
*[[任意の検索エンジンで検索]] (Noah)&lt;br /&gt;
*[[デフォルトの検索フラグを設定して検索ウィンドウ表示]] (yuko)&lt;br /&gt;
*[[簡易検索一覧]] (シリル) 2018/12/24&lt;br /&gt;
*[[簡易検索一覧などをアウトプット]] (シリル) 2018/12/31&lt;br /&gt;
*[[複数置換]] (Noah)&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz)&lt;br /&gt;
*[[スマートインデント(C 構文)]] (ks)&lt;br /&gt;
*[[ctags.exeでtagsファイルを生成、タグジャンプを行うマクロ]] (kazy)&lt;br /&gt;
*[[タグファイルから補完]] (n)&lt;br /&gt;
*[[コードスニペットもどき]] (手石) Update 2012/12/20&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2018/11/19 ※sukemaru版に「人柱用 追加コード」&lt;br /&gt;
*[[TeX文書のコンパイル]] (手石)&lt;br /&gt;
*[[TeX数式のチェック]] (手石)&lt;br /&gt;
*[[簡易数式計算]] (ks)&lt;br /&gt;
*[[定義へ移動]] (ks)&lt;br /&gt;
*[[タブの桁数]] (手石)&lt;br /&gt;
*[[行末の空白を削除]] (n) 2014/12/19&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを実行(掲載時点ではバッチファイル・Javascript・Lua・PHP・Perl・Python・Ruby・UWSCに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/tree/master/ 開いているスクリプトファイルを構文チェック(掲載時点ではPHP・Perlに対応。順次追加予定)] (高見知英)&lt;br /&gt;
*[[説明を出力]] (s) Create 2015/08/16&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2016/12/11更新&lt;br /&gt;
&lt;br /&gt;
== おもしろ ==&lt;br /&gt;
&lt;br /&gt;
*[[テキストブラウザ]] (Kuro)&lt;br /&gt;
*[[Yahoo!天気情報]] (Kuro)&lt;br /&gt;
*[[メール送信]] (ks)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, 有志) last update 2018/10/08&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] (sukemaru) last update 2018/12/04&lt;br /&gt;
*[[SAPI 使って単語読み上げ]] (miso)&lt;br /&gt;
*[[フォルダ選択ダイアログ]] (手石)&lt;br /&gt;
*[[HTA(HTML)の自作ダイアログを表示]] (noonworks)&lt;br /&gt;
*[[JavaScript を実行]] (n)&lt;br /&gt;
*[[ポップアップメニューを手軽に扱う]] (komorebikoboshi)&lt;br /&gt;
*[[マクロ・関数をメニューで呼び出す]] (aliquis) 2013/08/19&lt;br /&gt;
*[[階層化マクロメニュー]] (ks)&lt;br /&gt;
*[[シェルコマンドを実行]] (sasaki)&lt;br /&gt;
*[[ポップアップメニューでチェックボックス]] (手石)&lt;br /&gt;
*[[ポップアップメニューでラジオボタン]] (手石)&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks)&lt;br /&gt;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2019/02/19&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;/div&gt;</summary>
		<author><name>PebblePot</name></author>
	</entry>
</feed>