定型文を挿入

提供: MeryWiki
移動先: 案内検索

「定型文を挿入」というと公式プラグインの「スニペットプラグイン」や、[ファイル] メニューの「挿入...」コマンドがありますが、アレンジ/バリエーションとしていくつかのパターンを用意してみました。

※あらかじめ定型文用のテキストファイルを用意してください。 ※ソースコード内で ■ の付いた部分の設定やファイルパスを変更して使用してください。

"Mery用 マテリアルデザインっぽいアイコン.icl" に署名(連絡先)の定型文用の @ アイコンと、コピーライトの定型文用の © アイコンがあります。

定型文を一発で挿入[編集]

キーアサイン集にあるマクロです。
文書の雛形用の定型文や署名(連絡先、コピーライト)などのテンプレートを、あらかじめ用意したテキストファイルから取り込みます。

#title = "定型文を挿入"
#tooltip = "定型文をファイルから一発挿入"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",172
// 一発の操作であらかじめ指定済みのファイルから定型文を挿入する

// ■挿入する定型文ファイルを "フルパス" で指定■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)

var pos = document.selection.GetActivePos();
document.selection.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」

// 挿入した定型文の先頭にカーソルを移動(不要ならコメントアウト)
document.selection.SetActivePos( pos );


定型文つき新規ドキュメント[編集]

編集中のファイルに挿入するのではなく、定型文を貼り付けた「無題」のドキュメントを新規に開きます。

このマクロを利用して、Mery を起動時に定型文(テンプレート)を貼り付け済みの「無題」のドキュメントを開くショートカットをつくることができます。以下の例の "%Programfiles%\Mery" の部分は、Mery のインストールフォルダのパスに書きかえてください。

  • リンク先
 %Programfiles%\Mery\Mery.exe /mf Macros\定型文つき新規ドキュメント.js
  • 作業フォルダ(カレントディレクトリ)
 %Programfiles%\Mery
#title = "定型文つき新規ドキュメント"
#tooltip = "定型文つきの「無題」ドキュメントを新規タブで開く"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",194

// ■挿入する定型文ファイルを "フルパス" で指定■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)

// 「/mf」オプションのショートカットファイルから実行する場合は NewFile() の行は不要
editor.NewFile();	// 新規「無題」タブ
editor.ActiveDocument.selection.InsertFromFile( file, 0 );	// 0 は文字エンコードの「自動選択」
editor.ActiveDocument.selection.SetActivePoint( mePosLogical, 1, 1 );	// ドキュメントの先頭にカーソルを移動


定型文ファイルのテキストをクリップボードに取り込む[編集]

定型文ファイルを一時的に開き、内容をコピーして閉じます。

#title = "定型文をコピー"
#tooltip = "定型文ファイルの内容をクリップボードにコピーする"
// #icon = ""

// ■定型文ファイルを "フルパス" で指定する■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)

Redraw = false;
editor.NewFile();
editor.OpenFile( file, 0 );	// 0 はエンコードの「自動選択」
ClipboardData.SetData( editor.ActiveDocument.Text );
editor.ActiveDocument.Close();
Redraw = true;


ファイルパスをダイアログに入力して指定する[編集]

テキスト入力ダイアログで定型文ファイルのフルパスを指定します。
入力ダイアログをキャンセルした場合は、あらかじめ指定してあるデフォルトの定型文ファイルから挿入します。

#title = "定型文を挿入..."
#tooltip = "定型文をファイルから挿入(入力ダイアログ)"
// #icon = ""

// ■デフォルトの定型文ファイルを "フルパス" で指定する■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)
  // 入力ダイアログをキャンセルしたときに「デフォルトの定型文テキスト」を挿入したくないならば file = "" にしておく

// 挿入する定型文ファイルをテキスト入力ダイアログで指定する
var p = Prompt( "ファイルパス:", file ).replace( /^\"|\"$/g , "" );
file = ( p.match( /^[a-zA-Z]:\\/ ) ) ? p : file;

var pos = document.selection.GetActivePos();
if ( file )
  document.selection.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」

// 挿入した定型文の先頭にカーソルを移動(不要ならコメントアウト)
document.selection.SetActivePos( pos );


「挿入」ダイアログで定型文ファイルを選択する[編集]

[ファイル] メニューの「挿入...」ダイアログで定型文ファイルを選択します。あらかじめ定型文ファイルを集めてあるフォルダパスを指定することで、ファイル選択ダイアログ内でディレクトリをあっちやこっちやと辿る必要がないようにしてあります。
「挿入」ダイアログをキャンセルした場合は、あらかじめ指定してあるデフォルトの定型文ファイルから挿入します。
→ ref. 「特定のフォルダで『ファイルを開く』ダイアログ」マクロ

#title = "定型文を挿入..."
#tooltip = "定型文をファイルから挿入(挿入ダイアログ)"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",172

// ■「挿入...」ダイアログで起点にするフォルダを指定する■
var folder = "%userprofile%\\desktop\\";
  // (\ はふたつ重ね \\ にする / 末尾にも \\ を付ける)
  // 起点フォルダを指定する必要がないならば folder = "" にしておく

// ■デフォルトの定型文ファイルを "フルパス" で指定する■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)
  // 「挿入」ダイアログをキャンセルしたときに「デフォルトの定型文テキスト」を挿入したくないならば file = "" にしておく

var pos = document.selection.GetActivePos();
var st = document.Text;
var cb = ClipboardData.GetData();		// クリップボードのデータを退避
if ( folder ) {
  ClipboardData.SetData( folder );
  new ActiveXObject( "WScript.Shell" ).SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
}
editor.ExecuteCommandByID( 2067 );		// 「挿入...」コマンド(ダイアログ)

if ( document.Text == st )			// 「挿入」ダイアログをキャンセルした場合
  document.selection.InsertFromFile( file, 0 ); // 「ファイルから挿入」
ClipboardData.SetData( cb );			// クリップボードのデータを復帰

// 挿入した定型文の先頭にカーソルを移動(不要ならコメントアウト)
document.selection.SetActivePos( pos );


ポップアップメニューで定型文ファイルを指定する[編集]

上出の各種のパターンをポップアップメニューから選択して実行します(操作の手数は増えてしまいますが、マクロの数を増やさずに済みます)。

#title = "定型文を挿入..."
#tooltip = "定型文をファイルから挿入(ポップアップメニュー)"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",276
// コード内の ■ の付いた部分の設定やファイルパスを変更して使用してください。

// ■「デフォルトの定型文ファイル」を "フルパス" で指定する■
var file = "C:\\hoge\\Template.txt";
  // ( \ はふたつ重ね \\ にすること)
  // 「デフォルトの定型文ファイル」を定義したくないならば file = "" にしておく

// ■挿入した定型文の先頭にカーソルを移動させるか?■
var topPos = true;
  // true : 移動させる / false:移動させない

var m = CreatePopupMenu();
// ■不要な項目は m.Add の前に // を付けてコメントアウトする■
m.Add( "ファイル選択ダイアログ(&O)..." , 1 );
m.Add( "入力ダイアログでフルパスを指定(&D)..." , 2 );
// m.Add( "選択範囲の文字列(ファイルパス)から(&P)" , 3 );
m.Add( "クリップボードの文字列(ファイルパス)から(&B)" , 4 );
m.Add( "", 0, meMenuSeparator );
m.Add( "定型文つき新規ドキュメント(&N)" , 5 );
m.Add( "", 0, meMenuSeparator );

// ■ここでメニュー項目名と ID( r )を定義し■下部の default: のコード内でフルパスを指定する■
// m.Add( "項目名" , r );
m.Add( "定型文 Tenplate.txt (&T)" , 7 );
m.Add( "署名 Signature.txt (&S)" , 8 );
m.Add( "コピーライト CopyRight.txt (&R)" , 9 );
// m.Add( "定型文2 Tenplate2.txt" , 10 );
// m.Add( "定型文3 Tenplate3.txt" , 11 );

m.Add( "", 0, meMenuSeparator );
m.Add( "定型文ファイルの内容をコピー(&C)" , 6 );

var s = document.selection;
var pos = ( s.IsEmpty ) ? s.GetActivePos() :
          /*  else  */    s.GetTopPointX( mePosLogical );
var r = m.Track( mePosMouse = 1 );
switch ( r ) {
  case 0:
    break;


  case 1:
  // 「挿入...」ダイアログで定型文ファイルを指定する
  // 「挿入」ダイアログをキャンセルした場合は、「デフォルトの定型文ファイル」から挿入する

    // ■「挿入」ダイアログで起点にするフォルダを指定する■
    var folder = "%userprofile%\\desktop\\";
      // (\ はふたつ重ね \\ にする / 末尾にも \\ を付ける)
      // 起点フォルダを指定する必要がないならば "" にしておく

    var st = document.Text;
    var cb = ClipboardData.GetData();	// クリップボードのデータを退避
    if ( folder ) {
      ClipboardData.SetData( folder );
      new ActiveXObject( "WScript.Shell" ).SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
    }
    editor.ExecuteCommandByID( 2067 );	// 「挿入...」
    if ( document.Text == st )		// 「挿入」ダイアログをキャンセルした場合
      s.InsertFromFile( file, 0 );	// 「ファイルから挿入」
    ClipboardData.SetData( cb );	// クリップボードのデータを復帰
    break;


  case 2:
  // テキスト入力ダイアログで定型文ファイルのフルパスを指定する
  // 入力ダイアログをキャンセルした場合は、「デフォルトの定型文ファイル」から挿入する

    // 挿入する定型文ファイルをテキスト入力ダイアログで指定する
    var p = Prompt( "ファイルパス:", file ).replace( /^\"|\"$/g , "" );
    file = ( p.match( /^[a-zA-Z]:\\/ ) ) ? p : file;
    if ( file )
      s.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」
    break;


  case 3:
  // 選択範囲の文字列がファイルパスならば、そのパスの定型文ファイルの内容に置きかえる
  // 選択範囲がファイルパスでない場合は、「デフォルトの定型文ファイル」の内容で置きかえる

    var st = s.Text.replace( /^\"|\"$/g , "" );
    file = ( st.match( /^[a-zA-Z]:\\/ ) ) ? st : file;
    if ( file ) {
      s.Delete();
      s.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」
    }
    break;


  case 4:
  // クリップボードの文字列がファイルパスならば、そのパスの定型文ファイルから挿入
  // クリップボードがファイルパスでない場合は、「デフォルトの定型文ファイル」から挿入する

    var cb = ClipboardData.GetData().replace( /^\"|\"$/g , "" );
    file = ( cb.match( /^[a-zA-Z]:\\/ ) ) ? cb : file;
    if ( file )
      s.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」
    break;


  case 5:
  // 編集中のファイルに挿入するのではなく、定型文を貼り付けた「無題」のドキュメントを新規に開く

    // ■「デフォルトの定型文ファイル」以外の定型文ファイルを指定するなら以下の1行をアンコメントする
    // file = "C:\\hoge\\Template2.txt";	// \ はふたつ重ね \\ にすること

    editor.NewFile();
    editor.ActiveDocument.selection.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」
    // ドキュメントの先頭にカーソルを移動
    if ( topPos )
      editor.ActiveDocument.selection.SetActivePoint( mePosLogical, 1, 1 );
    Quit();
    break;


  case 6:
  // 定型文ファイルを一時的に開いてテキストをクリップボードに取り込む

    Redraw = false;
    editor.NewFile();
    editor.OpenFile( file, 0 );	// 0 はエンコードの「自動選択」
    ClipboardData.SetData( editor.ActiveDocument.Text );
    editor.ActiveDocument.Close();
    Redraw = true;
    break;


  default:
  // あらかじめ用意してある各種定型文ファイルを "フルパス" で指定

    // ■番号 r はメニュー項目の定義にあわせる■
    // ■"ファイルパス" は適宜変更する(\ はふたつ重ね \\ にすること)■
    // ※不要な項目はメニューの定義の行をコメントアウトする
    file = ( r == 7 )  ? "C:\\hoge\\Template.txt" :	// 定型文
           ( r == 8 )  ? "C:\\hoge\\Signature.txt" :	// 署名(連絡先)
           ( r == 9 )  ? "C:\\hoge\\CopyRight.txt" :	// コピーライト
           ( r == 10 ) ? "C:\\hoge\\\Template2.txt" :	// 定型文2
           ( r == 11 ) ? "C:\\hoge\\\Template3.txt" :	// 定型文3
           /* else */    file;
    s.InsertFromFile( file, 0 );	// 0 はエンコードの「自動選択」
    break;

}
if ( topPos )
  s.SetActivePos( pos );	// キャレットをマクロ開始前の座標に戻す

エンコード定数[編集]

meEncodingNone		=>	0		自動選択
meEncodingUTF8		=>	65001	Unicode (UTF-8) 
meEncodingUTF8BOM	=>	650011	Unicode (UTF-8 BOM有) 
meEncodingUTF8NoBOM	=>	650010	Unicode (UTF-8 BOM無)
meEncodingShiftJIS	=>	932		日本語 (シフト JIS)
スポンサーリンク