「特定のフォルダで「ファイルを開く」ダイアログ」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
第2版
Sukemaru (トーク | 投稿記録)
修正
17行目: 17行目:


// ■フォルダを指定する■(\ はふたつ重ね/末尾にも \\ を付ける)
// ■フォルダを指定する■(\ はふたつ重ね/末尾にも \\ を付ける)
var folder = ""%USERPROFILE%\\Desktop\\"";
var folder = "%USERPROFILE%\\デスクトップ\\";


var shell = new ActiveXObject( "WScript.Shell" );
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
folder = shell.ExpandEnvironmentStrings( folder );
// クリップボードのデータを退避させて、フォルダパスをセットする
// クリップボードのデータを退避させて、フォルダパスをセットする
var cb = ClipboardData.GetData();
if ( fso.FolderExists( folder ) ) {
var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
  var cb = ClipboardData.GetData();
if ( Fso.FolderExists( folder ) ) {
   ClipboardData.SetData( folder );
   ClipboardData.SetData( folder );
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N)
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N)
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」
   new ActiveXObject( "WScript.Shell" ).SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
   shell.SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
}
}
// ファイルメニューのコマンド「開く...」
// ファイルメニューのコマンド「開く...」
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 );
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 );
// クリップボードのデータを復帰
// クリップボードのデータを復帰
ClipboardData.SetData( cb );
if ( cb )
  ClipboardData.SetData( cb );
</source>
</source>


43行目: 43行目:
* 2018/12/05 (sukemaru)
* 2018/12/05 (sukemaru)
: 第2版: フォルダの実在確認とクリップボードデータの復帰のためのコードを追加
: 第2版: フォルダの実在確認とクリップボードデータの復帰のためのコードを追加
* 2018/12/19 (sukemaru)
: フォルダ指定の var folder = のうしろのダブルクォートが二重になっていたので修正
: % % で囲った環境変数の展開

2018年12月19日 (水) 18:42時点における版

基本的に [ファイル] メニュー >> [開く...] で呼び出される「ファイルを開く」ダイアログは、"アクティブなドキュメントの親フォルダ" か "Mery 起動時の作業フォルダ" などが起点となります。


このマクロでは「ファイルを開く」ダイアログを呼び出したさい、つねに特定のフォルダに強制移動します。

  • ソースコード内でフォルダパスを指定してください。

(※日本語パスの場合にもキー入力をエミュレートするとなるとややこしいので、クリップボード経由でフォルダパスを送信します)


ソースコード

#title = "開く..."
#tooltip = "ファイル選択ダイアログを開く"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274

// 任意のフォルダを起点にファイル選択ダイアログを開く
// ファイルの種類: すべてのファイル

// ■フォルダを指定する■(\ はふたつ重ね/末尾にも \\ を付ける)
var folder = "%USERPROFILE%\\デスクトップ\\";

var shell = new ActiveXObject( "WScript.Shell" );
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
folder = shell.ExpandEnvironmentStrings( folder );
// クリップボードのデータを退避させて、フォルダパスをセットする
if ( fso.FolderExists( folder ) ) {
  var cb = ClipboardData.GetData();
  ClipboardData.SetData( folder );
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N)
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」
  shell.SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
}
// ファイルメニューのコマンド「開く...」
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 );
// クリップボードのデータを復帰
if ( cb )
  ClipboardData.SetData( cb );


メモ

  • 2018/12/01 (sukemaru)
初版
  • 2018/12/05 (sukemaru)
第2版: フォルダの実在確認とクリップボードデータの復帰のためのコードを追加
  • 2018/12/19 (sukemaru)
フォルダ指定の var folder = のうしろのダブルクォートが二重になっていたので修正
% % で囲った環境変数の展開
スポンサーリンク