<?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=Papagoat</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=Papagoat"/>
	<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/Papagoat"/>
	<updated>2026-06-13T10:11:53Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<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=4405</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=4405"/>
		<updated>2019-06-17T06:47:35Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* その他 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「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 2019/04/24&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2014/03/15&lt;br /&gt;
:[[行頭か行末 または 選択範囲の始点か終点|行頭か行末 または 選択範囲の始点か終点 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[文書の先頭か末尾|文書の 先頭か末尾 に移動]] (sukemaru) update 2019/03/29&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;
*[[行を複製 (複数行可)]] (sukemaru) update 2019/05/07&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 2019/06/16&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント) (masme, sukemaru) 2014/02/09, update 2019/06/01&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;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&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;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (行頭の文字列操作. 「引用の追加」マクロの増補改訂版)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
:「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版 ポップアップメニューなし)]]」&amp;lt;br&amp;gt; 「[[カッコで囲う#引用符を追加／削除|引用符を追加／削除]]」（ &amp;quot;二重引用符&amp;quot; の追加／削除トグル）&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
:[[選択範囲のURL・パスを開く|ひらけゴマ！]] (sukemaru) update 2019/04/07 ※「選択範囲の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, sukemaru) update 2019/04/16&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;
*[[編集モードの自動選択]] または「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) fixed 2018/12/19&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03 &amp;lt;br&amp;gt;｢他（右側／左側）のタブを閉じる｣ などを追加&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) update &amp;amp; fix 2019/05/30 &amp;lt;br&amp;gt; エンコード指定で読み直し・読み取り専用属性の変更・編集モードの変更・プロパティを開く・さいごに閉じたファイルを開く・etc.&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/04/30&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;
:*[[昇順で並び替え／降順で並び替え]] トグル変換 (sukemaru) 2019/06/03&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/06/01&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 2019/04/12&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&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;をトグル切り替え」&amp;lt;br&amp;gt;＋ 改造版「ToDoリストモード」 (sukemaru) Added 2019/05/06&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) fixed 2019/05/20&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 2019/04/16&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&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;
:[[検索ヒット数表示（選択文字列）]] (sukemaru) 2019/05/04&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;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2019/04/12&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2019/06/01&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;
*[[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;
*[[JSON整形]](Ovis) Create 2019/03/25&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;
&lt;br /&gt;
*【自家用】[[カッコをはずす]]＆[[カッコをはずす#カッコを削除／追加|カッコを削除／追加]]＆[[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru)  2019/03/14 - 2019/05/03 fixed&lt;br /&gt;
*【自家用】[[ファイルのフルパスをコピーして閉じる]] ※イベントマクロ (sukemaru) update 2019/04/14&lt;br /&gt;
*【実験】 [[行を上下に移動（Mery 2.7 用）]] (sukemaru) 2019/05/07&lt;br /&gt;
*【自家用】[[全角／半角変換]] (sukemaru) fixed 2019/05/11&lt;br /&gt;
*【実験】[[全角／半角 トグル変換]] (sukemaru) fixed 2019/05/20&lt;br /&gt;
*【実験】 [[ファイルへ移動（物理座標ジャンプ）]] (sukemaru) 2019/05/15&lt;br /&gt;
*【実験】 [[位置情報を保存してから「次の文字列を検索」]]＋&#039;&#039;&#039;復帰&#039;&#039;&#039; (sukemaru) 2019/05/28&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&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;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2019/02/19&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み用関数 (sukemaru) update &amp;amp; fix 2019/06/02&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み用関数 (sukemaru) 2019/04/17 &amp;lt;br&amp;gt;サンプルコード: 「Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降」&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み用関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み用関数 (sukemaru) 2019/04/20 &amp;lt;br&amp;gt;サンプルコード: 「すべての論理行をポップアップメニューに表示する」&lt;br /&gt;
*[[タブが「縦書き」モードかチェックする]] ※組み込み用関数 (sukemaru) 2019/04/29 &amp;lt;br&amp;gt;サンプルコード: 「特定の条件で縦書きモードに切りかえる」&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, sukemaru, 有志) last update 2019/06/16&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] ※アイコン収録数&#039;&#039;&#039;300&#039;&#039;&#039;コ (sukemaru) last update 2019/05/01&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志)Last Update 2019/06/17&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- (sukemaru, 2019/04/12 コメントアウト)&lt;br /&gt;
*[[ブックマークを復元（Mery_2.7用）]] (sukemaru) 2019/04/07&lt;br /&gt;
 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4404</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%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4404"/>
		<updated>2019-06-17T06:46:14Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* マクロからファイル選択ダイアログ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 概要 =&lt;br /&gt;
マクロ開発者向けの覚え書きです．&amp;lt;br&amp;gt;&lt;br /&gt;
リファレンスなどに載っていない，豆知識的なことを集めています．&lt;br /&gt;
&lt;br /&gt;
= 覚え書き =&lt;br /&gt;
&lt;br /&gt;
== 開発言語について ==&lt;br /&gt;
WSH（Windows Script Host) が対応している言語であれば利用が可能です．&amp;lt;br&amp;gt;&lt;br /&gt;
標準では JScript（≒javascript）と VBScript が入っています．&amp;lt;br&amp;gt;&lt;br /&gt;
他の言語（Perl や Python）もインストールすれば使えますが，一般配布する場合利用者もインストールが必要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
どの言語でも良いですが，JScript での開発者が多いため，JScript の方が情報が集まりやすくお勧めです．&lt;br /&gt;
&lt;br /&gt;
== マクロを保存する際の文字コード ==&lt;br /&gt;
基本的に単体で利用する場合はどの文字コードでも構いません．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし「他のマクロから読まれる」場合は文字コードの選択が重要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
今のマクロでは #title のようなプリプロセス処理が必要で，それに対応したロードができる include ライブラリの IO.Include はデフォルトで UTF-8 対応なので，UTF-8 をお勧めします（個別の指定は可能）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし読み込む側が FileSystemObject を利用している場合，SJIS/Unicode しか対応できないのでその場合は SJIS をお勧めします（Mery 1 時代のマクロなどはコレです）．&lt;br /&gt;
&lt;br /&gt;
== window.Document と Editor.ActiveDocument の違い ==&lt;br /&gt;
window.Document は，マクロ開始時にアクティブなドキュメントを指し続けます．マクロで別のドキュメントを Activate しても変わりません．&amp;lt;br&amp;gt;&lt;br /&gt;
Editor.ActiveDocument は，その時点でアクティブなドキュメントを指します．マクロで別のドキュメントを Activate すると当然変わります．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Editor.Documents.Item(0).Activate();&lt;br /&gt;
Alert(Document.Name);&lt;br /&gt;
Alert(Editor.ActiveDocument.Name);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
また，window.Document は Documents.Item() と一致しませんが，Editor.ActiveDocument は一致します．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
for (var i=0; i&amp;lt;Editor.Documents.Count; i++) {&lt;br /&gt;
  if (Editor.ActiveDocument == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;Editor.ActiveDocument が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (Document == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;window.Document が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== window.Redraw = true は必要か ==&lt;br /&gt;
マクロで&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
にしたとき，最後&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
が必要かという点については，現状確認する限りでは不要です．&lt;br /&gt;
&lt;br /&gt;
== 矩形選択の扱い ==&lt;br /&gt;
マクロで矩形選択は扱えません（プラグインですら無理）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし，矩形選択中かの判定だけは以下の方法で可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var s = Document.Selection;&lt;br /&gt;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
2019/06/11追記（有志）：使い道は限られますが、Alt + Shit + カーソル移動のキーコードを送ることで、矩形範囲指定の開始と範囲変更は可能です。&lt;br /&gt;
  new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;).SendKeys(&amp;quot;+%{left}&amp;quot;);//{right},{up},{down}&lt;br /&gt;
&lt;br /&gt;
== Document.GetLines の引数 ==&lt;br /&gt;
リファレンスには &#039;&#039;&#039;meGetLineView&#039;&#039;&#039; しか書かれていませんが，論理行単位での行数取得には引数に 0 を渡します．&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;meGetLineLogical&#039;&#039;&#039; という定数はありません．&lt;br /&gt;
&lt;br /&gt;
== プリプロセス（#title など） ==&lt;br /&gt;
対応しているプリプロセスコードは以下の通りです．&lt;br /&gt;
* #icon = &amp;quot;****&amp;quot; [, アイコン番号]&lt;br /&gt;
* #title = &amp;quot;****&amp;quot;&lt;br /&gt;
* #tooltip = &amp;quot;****&amp;quot;&lt;br /&gt;
* #include &amp;quot;****.js&amp;quot;&lt;br /&gt;
これらは必ずファイル先頭に書かなければなりません（コメントや VBS の Option Explicit などよりも先）．&lt;br /&gt;
&lt;br /&gt;
== 他のファイルのロード方法 ==&lt;br /&gt;
マクロから他のファイルを直接ロードするには以下の方法があります．&lt;br /&gt;
* FileSystemObject を利用する&lt;br /&gt;
* ADODB.Stream を利用する&lt;br /&gt;
* include ライブラリの IO クラスを利用する&lt;br /&gt;
&lt;br /&gt;
=== FileSystemObject を利用する ===&lt;br /&gt;
コードが短く簡単に扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また FileSystemObject 自体に，ファイルの有無やフォルダ作成の機能があります．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし扱える文字コードは SJIS または Unicode 限定．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Scripting.FileSystemObject の定数&lt;br /&gt;
var ForReading = 1;           // ファイルを読み取り専用として開きます。このファイルには書き込むことができません。&lt;br /&gt;
var ForWriting = 2;           // ファイルを書き込み専用として開きます。&lt;br /&gt;
var ForAppending = 8;         // ファイルを開き、ファイルの最後に追加して書き込みます。&lt;br /&gt;
var TristateUseDefault = -2;  // システム デフォルトを使ってファイルを開きます。&lt;br /&gt;
var TriStateTrue = -1;        // ファイルを Unicode ファイルとして開きます。&lt;br /&gt;
var TristateFalse = 0;        // ファイルを ASCII ファイルとして開きます。&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var fsIn = fso.OpenTextFile(Document.FullName, ForReading, false, TristateUseDefault);&lt;br /&gt;
var text = fsIn.ReadAll();&lt;br /&gt;
fsIn.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var fsOut = fso.OpenTextFile(&amp;quot;hoge.txt&amp;quot;, ForWriting, true, TristateUseDefault);&lt;br /&gt;
fsOut.Write(text);&lt;br /&gt;
fsOut.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADODB.Stream を利用する ===&lt;br /&gt;
書き方は若干複雑ですが，システムが対応している文字コードであれば全て扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また（信頼性は低いが）文字コードの自動判定も可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adTypeBinary = 1;           // バイナリ データを表します。&lt;br /&gt;
var adTypeText = 2;             // 既定値です。Charset で指定された文字セットにあるテキスト データを表します。&lt;br /&gt;
var adReadAll = -1;             // 既定値です。現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります。これは、バイナリ ストリームに唯一有効な StreamReadEnum 値です。&lt;br /&gt;
var adReadLine = -2;            // ストリームから次の行を読み取ります (LineSeparator プロパティで指定)。&lt;br /&gt;
var adSaveCreateNotExist = 1;   // 既定値です。FileName パラメータで指定したファイルがない場合は新しいファイルが作成されます。&lt;br /&gt;
var adSaveCreateOverWrite = 2;  // FileName パラメータで指定したファイルがある場合は、現在開かれている Stream オブジェクトのデータでファイルが上書きされます。&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.LoadFromFile(Document.FullName);&lt;br /&gt;
var text = adodb.ReadText(adReadAll);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.WriteText(text);&lt;br /&gt;
adodb.SaveToFile(&amp;quot;hoge.txt&amp;quot;, adSaveCreateOverWrite);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include ライブラリの IO クラスを利用する ===&lt;br /&gt;
ファイルの読み書きを簡単にするクラスです．&amp;lt;br&amp;gt;&lt;br /&gt;
簡単に扱えることと，BOM なしの UTF-8 を書き込めることがメリットです．&amp;lt;br&amp;gt;&lt;br /&gt;
逆にソースを読むしか資料がないこと，ユーザに導入してもらう必要があるのが欠点です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var text = IO.LoadFromFile(Document.FullName, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
IO.SaveToFile(&amp;quot;hoge.txt&amp;quot;, text, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 他のマクロの実行方法 ==&lt;br /&gt;
他のマクロを実行するには，以下の方法があります．&lt;br /&gt;
* #include で取り込む&lt;br /&gt;
* ファイルをロードして eval する&lt;br /&gt;
前者は先頭でしかかけない上，動的にロードの切り替えができません．&amp;lt;br&amp;gt;&lt;br /&gt;
後者は文字コードの問題とプリプロセス処理に関する問題があります．&amp;lt;br&amp;gt;&lt;br /&gt;
include ライブラリの IO.Include を使うことで，プリプロセス処理に関しては解決できます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval(IO.Include(&amp;quot;test.js&amp;quot;, &amp;quot;utf-8&amp;quot;)); // #include なども処理される&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== マクロからファイル選択ダイアログ ==&lt;br /&gt;
できません．&amp;lt;BR&amp;gt;&lt;br /&gt;
2019/06/11追記(有志)：以下の関数で可能です。&lt;br /&gt;
  function OpenFileDlg(){&lt;br /&gt;
    var HTASource = &#039;&amp;lt;object id=HtmlDlgHelper classid=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b&amp;gt;&amp;lt;/object&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;script language=vbscript&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;resizeTo 0,0\n&#039;&lt;br /&gt;
    +&#039;Sub window_onload()\n&#039;&lt;br /&gt;
    +&#039;CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;).GetStandardStream(1).Write HtmlDlgHelper.object.openfiledlg(,,&amp;quot;All Files(*.*)|*.*|&amp;quot;,&amp;quot;ファイル選択&amp;quot;)\n&#039;&lt;br /&gt;
    +&#039;close\n&#039;&lt;br /&gt;
    +&#039;End Sub\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;/script&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;hta:application caption=no showintaskbar=no /&amp;gt;\n&#039;;&lt;br /&gt;
    &lt;br /&gt;
    var oExec = new ActiveXObject(&#039;WScript.Shell&#039;).Exec(&lt;br /&gt;
      &#039;MSHTA.EXE &amp;quot;javascript:new ActiveXObject(\&#039;Scripting.FileSystemObject\&#039;).GetStandardStream(0).ReadAll()&amp;quot;&#039;&lt;br /&gt;
    );&lt;br /&gt;
    oExec.StdIn.Write(HTASource);&lt;br /&gt;
    oExec.StdIn.Close();&lt;br /&gt;
    &lt;br /&gt;
    var filename = oExec.StdOut.ReadAll();&lt;br /&gt;
    var nullcharAt = filename.indexOf(String.fromCharCode(0x0));&lt;br /&gt;
    if (nullcharAt &amp;gt; 0) filename = filename.substring(0, nullcharAt);&lt;br /&gt;
    return filename;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
使用例&lt;br /&gt;
  var filename = OpenFileDlg();&lt;br /&gt;
  window.alert((filename)?filename:&#039;Canceled&#039;);&lt;br /&gt;
&lt;br /&gt;
2019/06/17追記(有志)：PoserShell版追加&amp;lt;br&amp;gt;&lt;br /&gt;
HtmlDlgHelper.object.openfiledlg の第1引数はダイアログに初期表示する InitFile。疑似的に初期フォルダを指定することが可能だが、パス区切り文字 &amp;quot;\&amp;quot; で終わることはできない。PowerShell 版なら初期フォルダの明示、複数ファイル選択が可能。Multiselect = $false にしても $dialog.FileName に書き換えせずに $dialog.FileNames でアクセス可能。&lt;br /&gt;
  function OpenFileDlg(){&lt;br /&gt;
    var PS1Source = &#039;[void][System.Reflection.Assembly]::LoadWithPartialName(\&#039;System.windows.forms\&#039;);&#039;&lt;br /&gt;
                  +&#039;$dialog = New-Object System.Windows.Forms.OpenFileDialog;&#039;&lt;br /&gt;
                  +&#039;$dialog.Filter = \&#039;AllFiles(*.*)|*.*\&#039;;&#039;&lt;br /&gt;
                  +&#039;$dialog.InitialDirectory = \&#039;C:\\\&#039;;&#039;&lt;br /&gt;
                  +&#039;$dialog.Title = \&#039;ファイル選択\&#039;;&#039;&lt;br /&gt;
                  +&#039;$dialog.Multiselect = $true;&#039;&lt;br /&gt;
                  +&#039;if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){Write-Output($dialog.FileNames)}&#039;&lt;br /&gt;
    var oExec = new ActiveXObject(&#039;WScript.Shell&#039;).Exec(&lt;br /&gt;
        &#039;PowerShell.EXE -sta -ExecutionPolicy RemoteSigned -WindowStyle Hidden &#039; + PS1Source&lt;br /&gt;
    );&lt;br /&gt;
    return oExec.StdOut.ReadAll();&lt;br /&gt;
  }&lt;br /&gt;
PowerShell の起動画面が 一瞬チラつくのはどうにかできないか。&lt;br /&gt;
&lt;br /&gt;
== Prompt で空入力とキャンセルの区別 ==&lt;br /&gt;
できません．&lt;br /&gt;
&lt;br /&gt;
== PopupMenu.Add の ID ==&lt;br /&gt;
PopupMenu.Add() の ID は必ず 0 以外にしましょう．&amp;lt;br&amp;gt;&lt;br /&gt;
PopupMenu.Track() はキャンセルされた（メニューが押されなかった）場合，0 を返します．&lt;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4395</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%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4395"/>
		<updated>2019-06-11T03:10:56Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* 矩形選択の扱い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 概要 =&lt;br /&gt;
マクロ開発者向けの覚え書きです．&amp;lt;br&amp;gt;&lt;br /&gt;
リファレンスなどに載っていない，豆知識的なことを集めています．&lt;br /&gt;
&lt;br /&gt;
= 覚え書き =&lt;br /&gt;
&lt;br /&gt;
== 開発言語について ==&lt;br /&gt;
WSH（Windows Script Host) が対応している言語であれば利用が可能です．&amp;lt;br&amp;gt;&lt;br /&gt;
標準では JScript（≒javascript）と VBScript が入っています．&amp;lt;br&amp;gt;&lt;br /&gt;
他の言語（Perl や Python）もインストールすれば使えますが，一般配布する場合利用者もインストールが必要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
どの言語でも良いですが，JScript での開発者が多いため，JScript の方が情報が集まりやすくお勧めです．&lt;br /&gt;
&lt;br /&gt;
== マクロを保存する際の文字コード ==&lt;br /&gt;
基本的に単体で利用する場合はどの文字コードでも構いません．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし「他のマクロから読まれる」場合は文字コードの選択が重要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
今のマクロでは #title のようなプリプロセス処理が必要で，それに対応したロードができる include ライブラリの IO.Include はデフォルトで UTF-8 対応なので，UTF-8 をお勧めします（個別の指定は可能）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし読み込む側が FileSystemObject を利用している場合，SJIS/Unicode しか対応できないのでその場合は SJIS をお勧めします（Mery 1 時代のマクロなどはコレです）．&lt;br /&gt;
&lt;br /&gt;
== window.Document と Editor.ActiveDocument の違い ==&lt;br /&gt;
window.Document は，マクロ開始時にアクティブなドキュメントを指し続けます．マクロで別のドキュメントを Activate しても変わりません．&amp;lt;br&amp;gt;&lt;br /&gt;
Editor.ActiveDocument は，その時点でアクティブなドキュメントを指します．マクロで別のドキュメントを Activate すると当然変わります．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Editor.Documents.Item(0).Activate();&lt;br /&gt;
Alert(Document.Name);&lt;br /&gt;
Alert(Editor.ActiveDocument.Name);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
また，window.Document は Documents.Item() と一致しませんが，Editor.ActiveDocument は一致します．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
for (var i=0; i&amp;lt;Editor.Documents.Count; i++) {&lt;br /&gt;
  if (Editor.ActiveDocument == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;Editor.ActiveDocument が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (Document == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;window.Document が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== window.Redraw = true は必要か ==&lt;br /&gt;
マクロで&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
にしたとき，最後&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
が必要かという点については，現状確認する限りでは不要です．&lt;br /&gt;
&lt;br /&gt;
== 矩形選択の扱い ==&lt;br /&gt;
マクロで矩形選択は扱えません（プラグインですら無理）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし，矩形選択中かの判定だけは以下の方法で可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var s = Document.Selection;&lt;br /&gt;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
2019/06/11追記（有志）：使い道は限られますが、Alt + Shit + カーソル移動のキーコードを送ることで、矩形範囲指定の開始と範囲変更は可能です。&lt;br /&gt;
  new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;).SendKeys(&amp;quot;+%{left}&amp;quot;);//{right},{up},{down}&lt;br /&gt;
&lt;br /&gt;
== Document.GetLines の引数 ==&lt;br /&gt;
リファレンスには &#039;&#039;&#039;meGetLineView&#039;&#039;&#039; しか書かれていませんが，論理行単位での行数取得には引数に 0 を渡します．&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;meGetLineLogical&#039;&#039;&#039; という定数はありません．&lt;br /&gt;
&lt;br /&gt;
== プリプロセス（#title など） ==&lt;br /&gt;
対応しているプリプロセスコードは以下の通りです．&lt;br /&gt;
* #icon = &amp;quot;****&amp;quot; [, アイコン番号]&lt;br /&gt;
* #title = &amp;quot;****&amp;quot;&lt;br /&gt;
* #tooltip = &amp;quot;****&amp;quot;&lt;br /&gt;
* #include &amp;quot;****.js&amp;quot;&lt;br /&gt;
これらは必ずファイル先頭に書かなければなりません（コメントや VBS の Option Explicit などよりも先）．&lt;br /&gt;
&lt;br /&gt;
== 他のファイルのロード方法 ==&lt;br /&gt;
マクロから他のファイルを直接ロードするには以下の方法があります．&lt;br /&gt;
* FileSystemObject を利用する&lt;br /&gt;
* ADODB.Stream を利用する&lt;br /&gt;
* include ライブラリの IO クラスを利用する&lt;br /&gt;
&lt;br /&gt;
=== FileSystemObject を利用する ===&lt;br /&gt;
コードが短く簡単に扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また FileSystemObject 自体に，ファイルの有無やフォルダ作成の機能があります．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし扱える文字コードは SJIS または Unicode 限定．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Scripting.FileSystemObject の定数&lt;br /&gt;
var ForReading = 1;           // ファイルを読み取り専用として開きます。このファイルには書き込むことができません。&lt;br /&gt;
var ForWriting = 2;           // ファイルを書き込み専用として開きます。&lt;br /&gt;
var ForAppending = 8;         // ファイルを開き、ファイルの最後に追加して書き込みます。&lt;br /&gt;
var TristateUseDefault = -2;  // システム デフォルトを使ってファイルを開きます。&lt;br /&gt;
var TriStateTrue = -1;        // ファイルを Unicode ファイルとして開きます。&lt;br /&gt;
var TristateFalse = 0;        // ファイルを ASCII ファイルとして開きます。&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var fsIn = fso.OpenTextFile(Document.FullName, ForReading, false, TristateUseDefault);&lt;br /&gt;
var text = fsIn.ReadAll();&lt;br /&gt;
fsIn.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var fsOut = fso.OpenTextFile(&amp;quot;hoge.txt&amp;quot;, ForWriting, true, TristateUseDefault);&lt;br /&gt;
fsOut.Write(text);&lt;br /&gt;
fsOut.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADODB.Stream を利用する ===&lt;br /&gt;
書き方は若干複雑ですが，システムが対応している文字コードであれば全て扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また（信頼性は低いが）文字コードの自動判定も可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adTypeBinary = 1;           // バイナリ データを表します。&lt;br /&gt;
var adTypeText = 2;             // 既定値です。Charset で指定された文字セットにあるテキスト データを表します。&lt;br /&gt;
var adReadAll = -1;             // 既定値です。現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります。これは、バイナリ ストリームに唯一有効な StreamReadEnum 値です。&lt;br /&gt;
var adReadLine = -2;            // ストリームから次の行を読み取ります (LineSeparator プロパティで指定)。&lt;br /&gt;
var adSaveCreateNotExist = 1;   // 既定値です。FileName パラメータで指定したファイルがない場合は新しいファイルが作成されます。&lt;br /&gt;
var adSaveCreateOverWrite = 2;  // FileName パラメータで指定したファイルがある場合は、現在開かれている Stream オブジェクトのデータでファイルが上書きされます。&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.LoadFromFile(Document.FullName);&lt;br /&gt;
var text = adodb.ReadText(adReadAll);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.WriteText(text);&lt;br /&gt;
adodb.SaveToFile(&amp;quot;hoge.txt&amp;quot;, adSaveCreateOverWrite);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include ライブラリの IO クラスを利用する ===&lt;br /&gt;
ファイルの読み書きを簡単にするクラスです．&amp;lt;br&amp;gt;&lt;br /&gt;
簡単に扱えることと，BOM なしの UTF-8 を書き込めることがメリットです．&amp;lt;br&amp;gt;&lt;br /&gt;
逆にソースを読むしか資料がないこと，ユーザに導入してもらう必要があるのが欠点です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var text = IO.LoadFromFile(Document.FullName, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
IO.SaveToFile(&amp;quot;hoge.txt&amp;quot;, text, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 他のマクロの実行方法 ==&lt;br /&gt;
他のマクロを実行するには，以下の方法があります．&lt;br /&gt;
* #include で取り込む&lt;br /&gt;
* ファイルをロードして eval する&lt;br /&gt;
前者は先頭でしかかけない上，動的にロードの切り替えができません．&amp;lt;br&amp;gt;&lt;br /&gt;
後者は文字コードの問題とプリプロセス処理に関する問題があります．&amp;lt;br&amp;gt;&lt;br /&gt;
include ライブラリの IO.Include を使うことで，プリプロセス処理に関しては解決できます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval(IO.Include(&amp;quot;test.js&amp;quot;, &amp;quot;utf-8&amp;quot;)); // #include なども処理される&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== マクロからファイル選択ダイアログ ==&lt;br /&gt;
できません．&amp;lt;BR&amp;gt;&lt;br /&gt;
2019/06/11追記(有志)：以下の関数で可能です。&lt;br /&gt;
  function OpenFileDlg(){&lt;br /&gt;
    var HTASource = &#039;&amp;lt;object id=HtmlDlgHelper classid=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b&amp;gt;&amp;lt;/object&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;script language=vbscript&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;resizeTo 0,0\n&#039;&lt;br /&gt;
    +&#039;Sub window_onload()\n&#039;&lt;br /&gt;
    +&#039;CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;).GetStandardStream(1).Write HtmlDlgHelper.object.openfiledlg(,,&amp;quot;All Files(*.*)|*.*|&amp;quot;,&amp;quot;ファイル選択&amp;quot;)\n&#039;&lt;br /&gt;
    +&#039;close\n&#039;&lt;br /&gt;
    +&#039;End Sub\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;/script&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;hta:application caption=no showintaskbar=no /&amp;gt;\n&#039;;&lt;br /&gt;
    &lt;br /&gt;
    var oExec = new ActiveXObject(&#039;WScript.Shell&#039;).Exec(&lt;br /&gt;
      &#039;MSHTA.EXE &amp;quot;javascript:new ActiveXObject(\&#039;Scripting.FileSystemObject\&#039;).GetStandardStream(0).ReadAll()&amp;quot;&#039;&lt;br /&gt;
    );&lt;br /&gt;
    oExec.StdIn.Write(HTASource);&lt;br /&gt;
    oExec.StdIn.Close();&lt;br /&gt;
    &lt;br /&gt;
    var filename = oExec.StdOut.ReadAll();&lt;br /&gt;
    var nullcharAt = filename.indexOf(String.fromCharCode(0x0));&lt;br /&gt;
    if (nullcharAt &amp;gt; 0) filename = filename.substring(0, nullcharAt);&lt;br /&gt;
    return filename;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
使用例&lt;br /&gt;
  var filename = OpenFileDlg();&lt;br /&gt;
  window.alert((filename)?filename:&#039;Canceled&#039;);&lt;br /&gt;
&lt;br /&gt;
== Prompt で空入力とキャンセルの区別 ==&lt;br /&gt;
できません．&lt;br /&gt;
&lt;br /&gt;
== PopupMenu.Add の ID ==&lt;br /&gt;
PopupMenu.Add() の ID は必ず 0 以外にしましょう．&amp;lt;br&amp;gt;&lt;br /&gt;
PopupMenu.Track() はキャンセルされた（メニューが押されなかった）場合，0 を返します．&lt;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4394</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%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4394"/>
		<updated>2019-06-11T03:09:45Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* 矩形選択の扱い */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 概要 =&lt;br /&gt;
マクロ開発者向けの覚え書きです．&amp;lt;br&amp;gt;&lt;br /&gt;
リファレンスなどに載っていない，豆知識的なことを集めています．&lt;br /&gt;
&lt;br /&gt;
= 覚え書き =&lt;br /&gt;
&lt;br /&gt;
== 開発言語について ==&lt;br /&gt;
WSH（Windows Script Host) が対応している言語であれば利用が可能です．&amp;lt;br&amp;gt;&lt;br /&gt;
標準では JScript（≒javascript）と VBScript が入っています．&amp;lt;br&amp;gt;&lt;br /&gt;
他の言語（Perl や Python）もインストールすれば使えますが，一般配布する場合利用者もインストールが必要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
どの言語でも良いですが，JScript での開発者が多いため，JScript の方が情報が集まりやすくお勧めです．&lt;br /&gt;
&lt;br /&gt;
== マクロを保存する際の文字コード ==&lt;br /&gt;
基本的に単体で利用する場合はどの文字コードでも構いません．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし「他のマクロから読まれる」場合は文字コードの選択が重要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
今のマクロでは #title のようなプリプロセス処理が必要で，それに対応したロードができる include ライブラリの IO.Include はデフォルトで UTF-8 対応なので，UTF-8 をお勧めします（個別の指定は可能）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし読み込む側が FileSystemObject を利用している場合，SJIS/Unicode しか対応できないのでその場合は SJIS をお勧めします（Mery 1 時代のマクロなどはコレです）．&lt;br /&gt;
&lt;br /&gt;
== window.Document と Editor.ActiveDocument の違い ==&lt;br /&gt;
window.Document は，マクロ開始時にアクティブなドキュメントを指し続けます．マクロで別のドキュメントを Activate しても変わりません．&amp;lt;br&amp;gt;&lt;br /&gt;
Editor.ActiveDocument は，その時点でアクティブなドキュメントを指します．マクロで別のドキュメントを Activate すると当然変わります．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Editor.Documents.Item(0).Activate();&lt;br /&gt;
Alert(Document.Name);&lt;br /&gt;
Alert(Editor.ActiveDocument.Name);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
また，window.Document は Documents.Item() と一致しませんが，Editor.ActiveDocument は一致します．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
for (var i=0; i&amp;lt;Editor.Documents.Count; i++) {&lt;br /&gt;
  if (Editor.ActiveDocument == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;Editor.ActiveDocument が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (Document == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;window.Document が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== window.Redraw = true は必要か ==&lt;br /&gt;
マクロで&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
にしたとき，最後&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
が必要かという点については，現状確認する限りでは不要です．&lt;br /&gt;
&lt;br /&gt;
== 矩形選択の扱い ==&lt;br /&gt;
マクロで矩形選択は扱えません（プラグインですら無理）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし，矩形選択中かの判定だけは以下の方法で可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var s = Document.Selection;&lt;br /&gt;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
2019/06/11追記（有志）&amp;lt;br&amp;gt;&lt;br /&gt;
使い道は限られますが、Alt + Shit + カーソル移動のキーコードを送ることで、矩形範囲指定の開始と範囲変更は可能です。&lt;br /&gt;
  new ActiveXObject(&amp;quot;WScript.Shell&amp;quot;).SendKeys(&amp;quot;+%{left}&amp;quot;);//{right},{up},{down}&lt;br /&gt;
&lt;br /&gt;
== Document.GetLines の引数 ==&lt;br /&gt;
リファレンスには &#039;&#039;&#039;meGetLineView&#039;&#039;&#039; しか書かれていませんが，論理行単位での行数取得には引数に 0 を渡します．&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;meGetLineLogical&#039;&#039;&#039; という定数はありません．&lt;br /&gt;
&lt;br /&gt;
== プリプロセス（#title など） ==&lt;br /&gt;
対応しているプリプロセスコードは以下の通りです．&lt;br /&gt;
* #icon = &amp;quot;****&amp;quot; [, アイコン番号]&lt;br /&gt;
* #title = &amp;quot;****&amp;quot;&lt;br /&gt;
* #tooltip = &amp;quot;****&amp;quot;&lt;br /&gt;
* #include &amp;quot;****.js&amp;quot;&lt;br /&gt;
これらは必ずファイル先頭に書かなければなりません（コメントや VBS の Option Explicit などよりも先）．&lt;br /&gt;
&lt;br /&gt;
== 他のファイルのロード方法 ==&lt;br /&gt;
マクロから他のファイルを直接ロードするには以下の方法があります．&lt;br /&gt;
* FileSystemObject を利用する&lt;br /&gt;
* ADODB.Stream を利用する&lt;br /&gt;
* include ライブラリの IO クラスを利用する&lt;br /&gt;
&lt;br /&gt;
=== FileSystemObject を利用する ===&lt;br /&gt;
コードが短く簡単に扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また FileSystemObject 自体に，ファイルの有無やフォルダ作成の機能があります．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし扱える文字コードは SJIS または Unicode 限定．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Scripting.FileSystemObject の定数&lt;br /&gt;
var ForReading = 1;           // ファイルを読み取り専用として開きます。このファイルには書き込むことができません。&lt;br /&gt;
var ForWriting = 2;           // ファイルを書き込み専用として開きます。&lt;br /&gt;
var ForAppending = 8;         // ファイルを開き、ファイルの最後に追加して書き込みます。&lt;br /&gt;
var TristateUseDefault = -2;  // システム デフォルトを使ってファイルを開きます。&lt;br /&gt;
var TriStateTrue = -1;        // ファイルを Unicode ファイルとして開きます。&lt;br /&gt;
var TristateFalse = 0;        // ファイルを ASCII ファイルとして開きます。&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var fsIn = fso.OpenTextFile(Document.FullName, ForReading, false, TristateUseDefault);&lt;br /&gt;
var text = fsIn.ReadAll();&lt;br /&gt;
fsIn.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var fsOut = fso.OpenTextFile(&amp;quot;hoge.txt&amp;quot;, ForWriting, true, TristateUseDefault);&lt;br /&gt;
fsOut.Write(text);&lt;br /&gt;
fsOut.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADODB.Stream を利用する ===&lt;br /&gt;
書き方は若干複雑ですが，システムが対応している文字コードであれば全て扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また（信頼性は低いが）文字コードの自動判定も可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adTypeBinary = 1;           // バイナリ データを表します。&lt;br /&gt;
var adTypeText = 2;             // 既定値です。Charset で指定された文字セットにあるテキスト データを表します。&lt;br /&gt;
var adReadAll = -1;             // 既定値です。現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります。これは、バイナリ ストリームに唯一有効な StreamReadEnum 値です。&lt;br /&gt;
var adReadLine = -2;            // ストリームから次の行を読み取ります (LineSeparator プロパティで指定)。&lt;br /&gt;
var adSaveCreateNotExist = 1;   // 既定値です。FileName パラメータで指定したファイルがない場合は新しいファイルが作成されます。&lt;br /&gt;
var adSaveCreateOverWrite = 2;  // FileName パラメータで指定したファイルがある場合は、現在開かれている Stream オブジェクトのデータでファイルが上書きされます。&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.LoadFromFile(Document.FullName);&lt;br /&gt;
var text = adodb.ReadText(adReadAll);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.WriteText(text);&lt;br /&gt;
adodb.SaveToFile(&amp;quot;hoge.txt&amp;quot;, adSaveCreateOverWrite);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include ライブラリの IO クラスを利用する ===&lt;br /&gt;
ファイルの読み書きを簡単にするクラスです．&amp;lt;br&amp;gt;&lt;br /&gt;
簡単に扱えることと，BOM なしの UTF-8 を書き込めることがメリットです．&amp;lt;br&amp;gt;&lt;br /&gt;
逆にソースを読むしか資料がないこと，ユーザに導入してもらう必要があるのが欠点です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var text = IO.LoadFromFile(Document.FullName, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
IO.SaveToFile(&amp;quot;hoge.txt&amp;quot;, text, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 他のマクロの実行方法 ==&lt;br /&gt;
他のマクロを実行するには，以下の方法があります．&lt;br /&gt;
* #include で取り込む&lt;br /&gt;
* ファイルをロードして eval する&lt;br /&gt;
前者は先頭でしかかけない上，動的にロードの切り替えができません．&amp;lt;br&amp;gt;&lt;br /&gt;
後者は文字コードの問題とプリプロセス処理に関する問題があります．&amp;lt;br&amp;gt;&lt;br /&gt;
include ライブラリの IO.Include を使うことで，プリプロセス処理に関しては解決できます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval(IO.Include(&amp;quot;test.js&amp;quot;, &amp;quot;utf-8&amp;quot;)); // #include なども処理される&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== マクロからファイル選択ダイアログ ==&lt;br /&gt;
できません．&amp;lt;BR&amp;gt;&lt;br /&gt;
2019/06/11追記(有志)：以下の関数で可能です。&lt;br /&gt;
  function OpenFileDlg(){&lt;br /&gt;
    var HTASource = &#039;&amp;lt;object id=HtmlDlgHelper classid=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b&amp;gt;&amp;lt;/object&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;script language=vbscript&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;resizeTo 0,0\n&#039;&lt;br /&gt;
    +&#039;Sub window_onload()\n&#039;&lt;br /&gt;
    +&#039;CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;).GetStandardStream(1).Write HtmlDlgHelper.object.openfiledlg(,,&amp;quot;All Files(*.*)|*.*|&amp;quot;,&amp;quot;ファイル選択&amp;quot;)\n&#039;&lt;br /&gt;
    +&#039;close\n&#039;&lt;br /&gt;
    +&#039;End Sub\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;/script&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;hta:application caption=no showintaskbar=no /&amp;gt;\n&#039;;&lt;br /&gt;
    &lt;br /&gt;
    var oExec = new ActiveXObject(&#039;WScript.Shell&#039;).Exec(&lt;br /&gt;
      &#039;MSHTA.EXE &amp;quot;javascript:new ActiveXObject(\&#039;Scripting.FileSystemObject\&#039;).GetStandardStream(0).ReadAll()&amp;quot;&#039;&lt;br /&gt;
    );&lt;br /&gt;
    oExec.StdIn.Write(HTASource);&lt;br /&gt;
    oExec.StdIn.Close();&lt;br /&gt;
    &lt;br /&gt;
    var filename = oExec.StdOut.ReadAll();&lt;br /&gt;
    var nullcharAt = filename.indexOf(String.fromCharCode(0x0));&lt;br /&gt;
    if (nullcharAt &amp;gt; 0) filename = filename.substring(0, nullcharAt);&lt;br /&gt;
    return filename;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
使用例&lt;br /&gt;
  var filename = OpenFileDlg();&lt;br /&gt;
  window.alert((filename)?filename:&#039;Canceled&#039;);&lt;br /&gt;
&lt;br /&gt;
== Prompt で空入力とキャンセルの区別 ==&lt;br /&gt;
できません．&lt;br /&gt;
&lt;br /&gt;
== PopupMenu.Add の ID ==&lt;br /&gt;
PopupMenu.Add() の ID は必ず 0 以外にしましょう．&amp;lt;br&amp;gt;&lt;br /&gt;
PopupMenu.Track() はキャンセルされた（メニューが押されなかった）場合，0 を返します．&lt;/div&gt;</summary>
		<author><name>Papagoat</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=4393</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=4393"/>
		<updated>2019-06-11T02:55:47Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* その他 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mery で使用できるマクロを集めたライブラリです。&lt;br /&gt;
&lt;br /&gt;
スクリプトを拡張子「js」 (JavaScript、JScript の場合) にして「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 2019/04/24&lt;br /&gt;
*[[選択文字列を強調]] (Kuro)&lt;br /&gt;
*[[行頭に移動]] (Kuro, 他) update 2014/03/15&lt;br /&gt;
:[[行頭か行末 または 選択範囲の始点か終点|行頭か行末 または 選択範囲の始点か終点 に移動]] (sukemaru) update 2019/03/29&lt;br /&gt;
*[[文書の先頭か末尾|文書の 先頭か末尾 に移動]] (sukemaru) update 2019/03/29&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;
*[[行を複製 (複数行可)]] (sukemaru) update 2019/05/07&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 2019/06/01&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;
*[[行の先頭に貼り付け]] (sukemaru) 2018/08/24&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;
*[[Markdown 向け、リスト記号 (*) のトグル]] (yuko) 2019/04/29&lt;br /&gt;
*[[引用符／コメント]] ※ポップアップメニュー (行頭の文字列操作. 「引用の追加」マクロの増補改訂版)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
*[[カッコで囲う]] (ポップアップメニューあり)　(sukemaru) last modified 2019/04/07&lt;br /&gt;
:「[[カッコで囲う#カッコで囲う (ポップアップメニューなし)|カッコで囲う (簡易版 ポップアップメニューなし)]]」&amp;lt;br&amp;gt; 「[[カッコで囲う#引用符を追加／削除|引用符を追加／削除]]」（ &amp;quot;二重引用符&amp;quot; の追加／削除トグル）&lt;br /&gt;
*[[定型文を挿入]]マクロ集 (sukemaru) 2018/12/03&lt;br /&gt;
*[[何年生で習う漢字？]] (シリル) 2019/03/10&lt;br /&gt;
*[[上に行挿入]] (yuko) 2019/05/11&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[ファイルのプロパティ]] (sukemaru) 2018/12/18&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&lt;br /&gt;
:[[選択範囲のURL・パスを開く|ひらけゴマ！]] (sukemaru) update 2019/04/07 ※「選択範囲の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, sukemaru) update 2019/04/16&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;
*[[編集モードの自動選択]] または「書き換え禁止で開く」 ※イベントマクロ (sukemaru, Bleat) update 2019/04/24&lt;br /&gt;
*[[書き換え禁止モード色反転]] (Bleat)&lt;br /&gt;
*[[特定のフォルダで「ファイルを開く」ダイアログ]] (sukemaru) fixed 2018/12/19&lt;br /&gt;
*[[すべて閉じる]]マクロ集 (sukemaru) update 2019/05/03 &amp;lt;br&amp;gt;｢他（右側／左側）のタブを閉じる｣ などを追加&lt;br /&gt;
*[[文書が変更されていなければ変更マークを消す]] (Noah)&lt;br /&gt;
*[[変更なしのタブをすべて閉じる]] (Noah)&lt;br /&gt;
*[[ファイルを読み直す・開きなおす]] ※ポップアップメニュー (sukemaru) update &amp;amp; fix 2019/05/30 &amp;lt;br&amp;gt; エンコード指定で読み直し・読み取り専用属性の変更・編集モードの変更・プロパティを開く・さいごに閉じたファイルを開く・etc.&lt;br /&gt;
*[[さいごに閉じたファイルを開く]] ※ポップアップメニュー (sukemaru) 2019/04/30&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;
:*[[昇順で並び替え／降順で並び替え]] トグル変換 (sukemaru) 2019/06/03&lt;br /&gt;
*[[ブックマーク系コマンド集]] (ks)&lt;br /&gt;
*[[テキスト変換]] (ks)&lt;br /&gt;
**[[テキスト整形]] (masme) 2013/09/15, update 2019/06/01&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 2019/04/12&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/03/09&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;をトグル切り替え」&amp;lt;br&amp;gt;＋ 改造版「ToDoリストモード」 (sukemaru) Added 2019/05/06&lt;br /&gt;
*[[基数変換10_16]] (シリル) 2019/02/10&lt;br /&gt;
*[[スネークケース ⇔ キャメルケースの変換]] (Noah)&lt;br /&gt;
*[[罫線変換]] (シリル) 2019/03/09&lt;br /&gt;
*[[大文字／小文字／頭文字 トグル変換]] (sukemaru) fixed 2019/05/20&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 2019/04/16&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2019/06/01&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;
:[[検索ヒット数表示（選択文字列）]] (sukemaru) 2019/05/04&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;
*[[類義語アウトプット【Python】]] (シリル) 2019/03/24&lt;br /&gt;
*[[校正支援アウトプット]] (シリル) 2019/05/01&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&lt;br /&gt;
*[[Eclipse風コメントアウト(改)]] (pizz) 2019/04/12&lt;br /&gt;
*[[コメントマーク付け外し]] (手石, masme, sukemaru) last update 2019/06/01&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;
*[[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;
*[[JSON整形]](Ovis) Create 2019/03/25&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;
&lt;br /&gt;
*【自家用】[[カッコをはずす]]＆[[カッコをはずす#カッコを削除／追加|カッコを削除／追加]]＆[[カッコをはずす#カッコを追加／削除|カッコを追加／削除]] (sukemaru)  2019/03/14 - 2019/05/03 fixed&lt;br /&gt;
*【自家用】[[ファイルのフルパスをコピーして閉じる]] ※イベントマクロ (sukemaru) update 2019/04/14&lt;br /&gt;
*【実験】 [[行を上下に移動（Mery 2.7 用）]] (sukemaru) 2019/05/07&lt;br /&gt;
*【自家用】[[全角／半角変換]] (sukemaru) fixed 2019/05/11&lt;br /&gt;
*【実験】[[全角／半角 トグル変換]] (sukemaru) fixed 2019/05/20&lt;br /&gt;
*【実験】 [[ファイルへ移動（物理座標ジャンプ）]] (sukemaru) 2019/05/15&lt;br /&gt;
*【実験】 [[位置情報を保存してから「次の文字列を検索」]]＋&#039;&#039;&#039;復帰&#039;&#039;&#039; (sukemaru) 2019/05/28&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
*[[最新版を確認]] (diaphragm)&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;
*[[Editor.OpenFile()のポリフィル]](kazy)&lt;br /&gt;
*[[折り返しトグル切り替え]] (Bleat, sukemaru) update 2019/02/19&lt;br /&gt;
*[[ファイルロック (排他制御) 的なもの]] (PebblePot)&lt;br /&gt;
*[[Mery.iniのオプション値を取得]] ※組み込み用関数 (sukemaru) update &amp;amp; fix 2019/06/02&lt;br /&gt;
*[[Mery本体のバージョンチェック]] ※組み込み用関数 (sukemaru) 2019/04/17 &amp;lt;br&amp;gt;サンプルコード: 「Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降」&lt;br /&gt;
*[[IO.Serialize() の JSON を参照する]] ※組み込み用関数 (sukemaru) 2019/04/17&lt;br /&gt;
*[[ポップアップメニューを「n*十件ずつ」のサブメニューに自動分割する]] ※組み込み用関数 (sukemaru) 2019/04/20 &amp;lt;br&amp;gt;サンプルコード: 「すべての論理行をポップアップメニューに表示する」&lt;br /&gt;
*[[タブが「縦書き」モードかチェックする]] ※組み込み用関数 (sukemaru) 2019/04/29 &amp;lt;br&amp;gt;サンプルコード: 「特定の条件で縦書きモードに切りかえる」&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
*[[キーアサイン集]] (ks, masme, 有志) last update 2018/10/08&lt;br /&gt;
*[[マテリアルデザインっぽいアイコンと『小マクロ集』]] ※アイコン収録数&#039;&#039;&#039;300&#039;&#039;&#039;コ (sukemaru) last update 2019/05/01&lt;br /&gt;
*[[includeライブラリ]] (ks)&lt;br /&gt;
*[[GetKeyState.exe(キー状態取得実行ファイル)]] (pizz) 2019/03/23&lt;br /&gt;
*[[マクロ覚え書き（開発者向け）]](ks, 有志)Last Update 2019/06/11&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- (sukemaru, 2019/04/12 コメントアウト)&lt;br /&gt;
*[[ブックマークを復元（Mery_2.7用）]] (sukemaru) 2019/04/07&lt;br /&gt;
 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E3%83%9E%E3%82%AF%E3%83%AD%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4392</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%E8%A6%9A%E3%81%88%E6%9B%B8%E3%81%8D%EF%BC%88%E9%96%8B%E7%99%BA%E8%80%85%E5%90%91%E3%81%91%EF%BC%89&amp;diff=4392"/>
		<updated>2019-06-11T02:53:58Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: /* マクロからファイル選択ダイアログ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 概要 =&lt;br /&gt;
マクロ開発者向けの覚え書きです．&amp;lt;br&amp;gt;&lt;br /&gt;
リファレンスなどに載っていない，豆知識的なことを集めています．&lt;br /&gt;
&lt;br /&gt;
= 覚え書き =&lt;br /&gt;
&lt;br /&gt;
== 開発言語について ==&lt;br /&gt;
WSH（Windows Script Host) が対応している言語であれば利用が可能です．&amp;lt;br&amp;gt;&lt;br /&gt;
標準では JScript（≒javascript）と VBScript が入っています．&amp;lt;br&amp;gt;&lt;br /&gt;
他の言語（Perl や Python）もインストールすれば使えますが，一般配布する場合利用者もインストールが必要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
どの言語でも良いですが，JScript での開発者が多いため，JScript の方が情報が集まりやすくお勧めです．&lt;br /&gt;
&lt;br /&gt;
== マクロを保存する際の文字コード ==&lt;br /&gt;
基本的に単体で利用する場合はどの文字コードでも構いません．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし「他のマクロから読まれる」場合は文字コードの選択が重要になります．&amp;lt;br&amp;gt;&lt;br /&gt;
今のマクロでは #title のようなプリプロセス処理が必要で，それに対応したロードができる include ライブラリの IO.Include はデフォルトで UTF-8 対応なので，UTF-8 をお勧めします（個別の指定は可能）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし読み込む側が FileSystemObject を利用している場合，SJIS/Unicode しか対応できないのでその場合は SJIS をお勧めします（Mery 1 時代のマクロなどはコレです）．&lt;br /&gt;
&lt;br /&gt;
== window.Document と Editor.ActiveDocument の違い ==&lt;br /&gt;
window.Document は，マクロ開始時にアクティブなドキュメントを指し続けます．マクロで別のドキュメントを Activate しても変わりません．&amp;lt;br&amp;gt;&lt;br /&gt;
Editor.ActiveDocument は，その時点でアクティブなドキュメントを指します．マクロで別のドキュメントを Activate すると当然変わります．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Editor.Documents.Item(0).Activate();&lt;br /&gt;
Alert(Document.Name);&lt;br /&gt;
Alert(Editor.ActiveDocument.Name);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
また，window.Document は Documents.Item() と一致しませんが，Editor.ActiveDocument は一致します．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
for (var i=0; i&amp;lt;Editor.Documents.Count; i++) {&lt;br /&gt;
  if (Editor.ActiveDocument == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;Editor.ActiveDocument が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  if (Document == Editor.Documents.Item(i)) {&lt;br /&gt;
    Alert(&amp;quot;window.Document が一致&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== window.Redraw = true は必要か ==&lt;br /&gt;
マクロで&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = false;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
にしたとき，最後&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
Redraw = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
が必要かという点については，現状確認する限りでは不要です．&lt;br /&gt;
&lt;br /&gt;
== 矩形選択の扱い ==&lt;br /&gt;
マクロで矩形選択は扱えません（プラグインですら無理）．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし，矩形選択中かの判定だけは以下の方法で可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var s = Document.Selection;&lt;br /&gt;
var isBoxed = (s.GetBottomPointY(mePosView) - s.GetTopPointY(mePosView)) != (s.Text.match(/\n/g) || []).length;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Document.GetLines の引数 ==&lt;br /&gt;
リファレンスには &#039;&#039;&#039;meGetLineView&#039;&#039;&#039; しか書かれていませんが，論理行単位での行数取得には引数に 0 を渡します．&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;meGetLineLogical&#039;&#039;&#039; という定数はありません．&lt;br /&gt;
&lt;br /&gt;
== プリプロセス（#title など） ==&lt;br /&gt;
対応しているプリプロセスコードは以下の通りです．&lt;br /&gt;
* #icon = &amp;quot;****&amp;quot; [, アイコン番号]&lt;br /&gt;
* #title = &amp;quot;****&amp;quot;&lt;br /&gt;
* #tooltip = &amp;quot;****&amp;quot;&lt;br /&gt;
* #include &amp;quot;****.js&amp;quot;&lt;br /&gt;
これらは必ずファイル先頭に書かなければなりません（コメントや VBS の Option Explicit などよりも先）．&lt;br /&gt;
&lt;br /&gt;
== 他のファイルのロード方法 ==&lt;br /&gt;
マクロから他のファイルを直接ロードするには以下の方法があります．&lt;br /&gt;
* FileSystemObject を利用する&lt;br /&gt;
* ADODB.Stream を利用する&lt;br /&gt;
* include ライブラリの IO クラスを利用する&lt;br /&gt;
&lt;br /&gt;
=== FileSystemObject を利用する ===&lt;br /&gt;
コードが短く簡単に扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また FileSystemObject 自体に，ファイルの有無やフォルダ作成の機能があります．&amp;lt;br&amp;gt;&lt;br /&gt;
ただし扱える文字コードは SJIS または Unicode 限定．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Scripting.FileSystemObject の定数&lt;br /&gt;
var ForReading = 1;           // ファイルを読み取り専用として開きます。このファイルには書き込むことができません。&lt;br /&gt;
var ForWriting = 2;           // ファイルを書き込み専用として開きます。&lt;br /&gt;
var ForAppending = 8;         // ファイルを開き、ファイルの最後に追加して書き込みます。&lt;br /&gt;
var TristateUseDefault = -2;  // システム デフォルトを使ってファイルを開きます。&lt;br /&gt;
var TriStateTrue = -1;        // ファイルを Unicode ファイルとして開きます。&lt;br /&gt;
var TristateFalse = 0;        // ファイルを ASCII ファイルとして開きます。&lt;br /&gt;
&lt;br /&gt;
var fso = new ActiveXObject(&amp;quot;Scripting.FileSystemObject&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var fsIn = fso.OpenTextFile(Document.FullName, ForReading, false, TristateUseDefault);&lt;br /&gt;
var text = fsIn.ReadAll();&lt;br /&gt;
fsIn.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var fsOut = fso.OpenTextFile(&amp;quot;hoge.txt&amp;quot;, ForWriting, true, TristateUseDefault);&lt;br /&gt;
fsOut.Write(text);&lt;br /&gt;
fsOut.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ADODB.Stream を利用する ===&lt;br /&gt;
書き方は若干複雑ですが，システムが対応している文字コードであれば全て扱えます．&amp;lt;br&amp;gt;&lt;br /&gt;
また（信頼性は低いが）文字コードの自動判定も可能です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var adTypeBinary = 1;           // バイナリ データを表します。&lt;br /&gt;
var adTypeText = 2;             // 既定値です。Charset で指定された文字セットにあるテキスト データを表します。&lt;br /&gt;
var adReadAll = -1;             // 既定値です。現在の位置から EOS マーカー方向に、すべてのバイトをストリームから読み取ります。これは、バイナリ ストリームに唯一有効な StreamReadEnum 値です。&lt;br /&gt;
var adReadLine = -2;            // ストリームから次の行を読み取ります (LineSeparator プロパティで指定)。&lt;br /&gt;
var adSaveCreateNotExist = 1;   // 既定値です。FileName パラメータで指定したファイルがない場合は新しいファイルが作成されます。&lt;br /&gt;
var adSaveCreateOverWrite = 2;  // FileName パラメータで指定したファイルがある場合は、現在開かれている Stream オブジェクトのデータでファイルが上書きされます。&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.LoadFromFile(Document.FullName);&lt;br /&gt;
var text = adodb.ReadText(adReadAll);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
var adodb = new ActiveXObject(&#039;ADODB.Stream&#039;);&lt;br /&gt;
adodb.Type = adTypeText;&lt;br /&gt;
adodb.Charset = &#039;utf-8&#039;;&lt;br /&gt;
adodb.Open();&lt;br /&gt;
adodb.WriteText(text);&lt;br /&gt;
adodb.SaveToFile(&amp;quot;hoge.txt&amp;quot;, adSaveCreateOverWrite);&lt;br /&gt;
adodb.Close();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== include ライブラリの IO クラスを利用する ===&lt;br /&gt;
ファイルの読み書きを簡単にするクラスです．&amp;lt;br&amp;gt;&lt;br /&gt;
簡単に扱えることと，BOM なしの UTF-8 を書き込めることがメリットです．&amp;lt;br&amp;gt;&lt;br /&gt;
逆にソースを読むしか資料がないこと，ユーザに導入してもらう必要があるのが欠点です．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// ファイルの読み込み&lt;br /&gt;
var text = IO.LoadFromFile(Document.FullName, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
Alert(text);&lt;br /&gt;
&lt;br /&gt;
// ファイルの書き込み&lt;br /&gt;
IO.SaveToFile(&amp;quot;hoge.txt&amp;quot;, text, &amp;quot;utf-8&amp;quot;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 他のマクロの実行方法 ==&lt;br /&gt;
他のマクロを実行するには，以下の方法があります．&lt;br /&gt;
* #include で取り込む&lt;br /&gt;
* ファイルをロードして eval する&lt;br /&gt;
前者は先頭でしかかけない上，動的にロードの切り替えができません．&amp;lt;br&amp;gt;&lt;br /&gt;
後者は文字コードの問題とプリプロセス処理に関する問題があります．&amp;lt;br&amp;gt;&lt;br /&gt;
include ライブラリの IO.Include を使うことで，プリプロセス処理に関しては解決できます．&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;include/IO.js&amp;quot;&lt;br /&gt;
&lt;br /&gt;
eval(IO.Include(&amp;quot;test.js&amp;quot;, &amp;quot;utf-8&amp;quot;)); // #include なども処理される&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== マクロからファイル選択ダイアログ ==&lt;br /&gt;
できません．&amp;lt;BR&amp;gt;&lt;br /&gt;
2019/06/11追記(有志)：以下の関数で可能です。&lt;br /&gt;
  function OpenFileDlg(){&lt;br /&gt;
    var HTASource = &#039;&amp;lt;object id=HtmlDlgHelper classid=CLSID:3050f4e1-98b5-11cf-bb82-00aa00bdce0b&amp;gt;&amp;lt;/object&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;script language=vbscript&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;resizeTo 0,0\n&#039;&lt;br /&gt;
    +&#039;Sub window_onload()\n&#039;&lt;br /&gt;
    +&#039;CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;).GetStandardStream(1).Write HtmlDlgHelper.object.openfiledlg(,,&amp;quot;All Files(*.*)|*.*|&amp;quot;,&amp;quot;ファイル選択&amp;quot;)\n&#039;&lt;br /&gt;
    +&#039;close\n&#039;&lt;br /&gt;
    +&#039;End Sub\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;/script&amp;gt;\n&#039;&lt;br /&gt;
    +&#039;&amp;lt;hta:application caption=no showintaskbar=no /&amp;gt;\n&#039;;&lt;br /&gt;
    &lt;br /&gt;
    var oExec = new ActiveXObject(&#039;WScript.Shell&#039;).Exec(&lt;br /&gt;
      &#039;MSHTA.EXE &amp;quot;javascript:new ActiveXObject(\&#039;Scripting.FileSystemObject\&#039;).GetStandardStream(0).ReadAll()&amp;quot;&#039;&lt;br /&gt;
    );&lt;br /&gt;
    oExec.StdIn.Write(HTASource);&lt;br /&gt;
    oExec.StdIn.Close();&lt;br /&gt;
    &lt;br /&gt;
    var filename = oExec.StdOut.ReadAll();&lt;br /&gt;
    var nullcharAt = filename.indexOf(String.fromCharCode(0x0));&lt;br /&gt;
    if (nullcharAt &amp;gt; 0) filename = filename.substring(0, nullcharAt);&lt;br /&gt;
    return filename;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
使用例&lt;br /&gt;
  var filename = OpenFileDlg();&lt;br /&gt;
  window.alert((filename)?filename:&#039;Canceled&#039;);&lt;br /&gt;
&lt;br /&gt;
== Prompt で空入力とキャンセルの区別 ==&lt;br /&gt;
できません．&lt;br /&gt;
&lt;br /&gt;
== PopupMenu.Add の ID ==&lt;br /&gt;
PopupMenu.Add() の ID は必ず 0 以外にしましょう．&amp;lt;br&amp;gt;&lt;br /&gt;
PopupMenu.Track() はキャンセルされた（メニューが押されなかった）場合，0 を返します．&lt;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
	<entry>
		<id>https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5%EF%BC%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E7%89%88%EF%BC%89&amp;diff=2053</id>
		<title>日付と時刻を挿入（カレンダー版）</title>
		<link rel="alternate" type="text/html" href="https://www.haijin-boys.com/wiki/index.php?title=%E6%97%A5%E4%BB%98%E3%81%A8%E6%99%82%E5%88%BB%E3%82%92%E6%8C%BF%E5%85%A5%EF%BC%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E7%89%88%EF%BC%89&amp;diff=2053"/>
		<updated>2016-05-22T02:38:07Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: ページの作成:「フォーラム http://haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2933 でヒロさんが希望していた、カレンダーからの日付...」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;フォーラム http://haijin-boys.com/index.php?fuseaction=discussions.replies&amp;amp;discussion_id=2933 でヒロさんが希望していた、カレンダーからの日付挿入マクロです。&lt;br /&gt;
パワーシェルで.netのカレンダーコントロールを使用して、クリップボード経由で貼り付けます。&lt;br /&gt;
&lt;br /&gt;
↓↓をmeryのマクロファイルとして保存（例：calendar.js）&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#title = &amp;quot;カレンダーで日付挿入&amp;quot;&lt;br /&gt;
/*&lt;br /&gt;
* PowerShellを使って .Net の MonthCalendar コントロールを表示します&lt;br /&gt;
* 環境に合わせて PowerShell スクリプトのフルパスを修正してください&lt;br /&gt;
*&lt;br /&gt;
* PowerShell.exe の実行コマンドラインでは、セッションのみローカルの&lt;br /&gt;
* スクリプトの実行を許可しています&lt;br /&gt;
* Run メソッドではウインドウ非表示で実行し、PowerShell スクリプトの&lt;br /&gt;
* 内部で Window.State を操作しています。&lt;br /&gt;
* また、Run メソッドでは終了を待つため、フォームが表示されている間、&lt;br /&gt;
* 他のマクロは実行できません。&lt;br /&gt;
* PowerShell.exe 終了の戻り値が 0 であればクリップボードから貼り付け&lt;br /&gt;
* ます。PowerShell.exe 終了から Mery マクロへの復帰までに、他のアプ&lt;br /&gt;
* リでクリップボードが操作される可能性は無視しています。&lt;br /&gt;
*&lt;br /&gt;
* なお、MonthCalendar コントロールでは休日の色付けは困難な模様です。&lt;br /&gt;
*/&lt;br /&gt;
(function(){&lt;br /&gt;
var psScript = &#039;c:\\temp\\calendar.ps1&#039;;//←環境に合わせて修正&lt;br /&gt;
var psCmd = &#039;PowerShell.exe -STA -ExecutionPolicy RemoteSigned -File &#039;&lt;br /&gt;
var errlevel = new ActiveXObject(&#039;WScript.Shell&#039;).Run( psCmd +&lt;br /&gt;
psScript, 0, true);&lt;br /&gt;
if(errlevel==0)document.Write(ClipboardData.GetData());&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
↓↓をpowershellのスクリプトファイルとして保存（例：calendar.ps1）&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
# MonthCalendar コントロールで日付を選択する Powershell スクリプト&lt;br /&gt;
# Enter または F5 でクリップボードにコピー、 Esc でキャンセルして終了する&lt;br /&gt;
&lt;br /&gt;
$exitcode = 0&lt;br /&gt;
&lt;br /&gt;
Add-Type -AssemblyName System.Windows.Forms&lt;br /&gt;
&lt;br /&gt;
$Calendar = New-Object System.Windows.Forms.MonthCalendar&lt;br /&gt;
$Calendar.ShowToday = $False&lt;br /&gt;
$Calendar.ShowTodayCircle = $False&lt;br /&gt;
$Calendar.MaxSelectionCount = 1&lt;br /&gt;
# 休日に色を付けるとかはできない模様&lt;br /&gt;
&lt;br /&gt;
$Form = New-Object System.Windows.Forms.Form&lt;br /&gt;
$Form.Text = &amp;quot;Select Date&amp;quot;&lt;br /&gt;
$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedToolWindow&lt;br /&gt;
$Form.Controls.Add($Calendar)&lt;br /&gt;
$Form.ControlBox = $False&lt;br /&gt;
$Form.TopMost = $True&lt;br /&gt;
$Form.KeyPreview = $True&lt;br /&gt;
$Form.Add_KeyDown({&lt;br /&gt;
    if (($_.KeyCode -eq &amp;quot;Enter&amp;quot;) -or ($_.KeyCode -eq &amp;quot;F5&amp;quot;)){&lt;br /&gt;
        $date = $Calendar.SelectionStart&lt;br /&gt;
&lt;br /&gt;
        # &amp;quot;カスタム日時書式指定文字列&amp;quot; を参照&lt;br /&gt;
        # https://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx&lt;br /&gt;
        # 曜日を日本語で表示するため CultureInfo を指定&lt;br /&gt;
        $culture = New-Object System.Globalization.CultureInfo(&amp;quot;ja-JP&amp;quot;)&lt;br /&gt;
        [Windows.Forms.Clipboard]::SetText($date.ToString(&amp;quot;yy/MM/dd(ddd)&amp;quot;,$culture))&lt;br /&gt;
&lt;br /&gt;
        $Form.Close()&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
$Form.Add_KeyDown({&lt;br /&gt;
    if ($_.KeyCode -eq &amp;quot;Escape&amp;quot;){&lt;br /&gt;
          $Form.Close()&lt;br /&gt;
          $exitcode = 1&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
$Form.Add_Shown({ $Calendar.Location = New-Object System.Drawing.Point&lt;br /&gt;
@(0, 0); $Form.ClientSize = $Calendar.Size; $Form.WindowState = 0; })&lt;br /&gt;
$dialogresult = $Form.ShowDialog()&lt;br /&gt;
$Calendar.Dispose()&lt;br /&gt;
$Form.Dispose()&lt;br /&gt;
exit $exitcode&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
環境によってはpowershellの起動がやたらと遅いので、使い物にならないかもしれません。&lt;br /&gt;
core-i5 Windows7 のビジネスノートではストレスなく動作しましたが、Windows10 にアップグレードされた古い atom ネットブックでは無理でした。&lt;/div&gt;</summary>
		<author><name>Papagoat</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=2052</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=2052"/>
		<updated>2016-05-22T02:02:42Z</updated>

		<summary type="html">&lt;p&gt;Papagoat: カレンダーマクロ追加&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 2014/02/05&lt;br /&gt;
*[[選択文字列を強調]] (kuro)&lt;br /&gt;
*[[行頭に移動]] (kuro, 他) update 2014/03/15&lt;br /&gt;
*[[引用の追加]] (kuro)&lt;br /&gt;
*[[バイト数]] (kuro)&lt;br /&gt;
*[[日付と時刻を挿入]] (n, masme) update 2016/02/28&lt;br /&gt;
*[[日付と時刻を挿入（カレンダー版）]] (papagoat) 2016/05/22&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 2015/12/26&lt;br /&gt;
*[[字下げ・字上げ]](インデント・逆インデント) (masme) 2014/02/09, update 2015/02/14&lt;br /&gt;
*[[数値を増減]](インクリメント・デクリメント) (masme) 2014/06/17, update 2016/02/28&lt;br /&gt;
*[[少し便利な Undo/Redo]] (ks)&lt;br /&gt;
&lt;br /&gt;
== ファイル操作補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[文字列中のパス起動]] (ks)&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;
&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 2015/12/26&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 2015/12/26&lt;br /&gt;
*[[連番を挿入]] (masme) 2013/08/25&lt;br /&gt;
*[[GFMをHTMLに変換]] (noonworks) 2014/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;
*[[ポップアップメニューで検索先にジャンプ]] (手石)&lt;br /&gt;
*[[検索(SJIS以外)]] + 検索強調を解除 (masme) 2014/09/16, update 2015/12/26&lt;br /&gt;
*[https://github.com/TakamiChie/mery-scripts/blob/master/SearchWithMode.js 現在開いているファイルの言語名をつけてWeb検索] (高見知英)→[[https://vine.co/v/eeY59rFMail 実際の動作例]]&lt;br /&gt;
*[http://evaeva.syoyu.net/mery/mery%E3%83%9E%E3%82%AF%E3%83%AD%EF%BC%9A%E6%96%87%E5%AD%97%E5%87%BA%E7%8F%BE%E9%87%8F%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0 文字出現量ランキング] (BlackApple) 2015/12/28&lt;br /&gt;
&lt;br /&gt;
== プログラミング補助 ==&lt;br /&gt;
&lt;br /&gt;
*[[Eclipse風コメントアウト]] (ks)&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) update 2016/02/28&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;
*[[コンソール実行|コンソール実行(JScript、VBS、Node.js、Ruby、C#、VB.NET、CLISP、SBCL他)]] (YOS G-spec) 2016/04/25&lt;br /&gt;
*[[拡張子からコンソール実行]] (YOS G-spec) 2016/05/15更新&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;
*[[キーアサイン集]] (ks, masme, 有志) update 2015/12/29&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;/div&gt;</summary>
		<author><name>Papagoat</name></author>
	</entry>
</feed>