「特定のフォルダで「ファイルを開く」ダイアログ」の版間の差分
ナビゲーションに移動
検索に移動
第2版 |
修正 |
||
| 17行目: | 17行目: | ||
// ■フォルダを指定する■(\ はふたつ重ね/末尾にも \\ を付ける) | // ■フォルダを指定する■(\ はふたつ重ね/末尾にも \\ を付ける) | ||
var folder = | 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 cb = ClipboardData.GetData(); | |||
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):」 | ||
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 = のうしろのダブルクォートが二重になっていたので修正
- % % で囲った環境変数の展開
スポンサーリンク