「特定のフォルダで「ファイルを開く」ダイアログ」の版間の差分
ナビゲーションに移動
検索に移動
修正 |
空行と改行の除去 |
||
| (2人の利用者による、間の9版が非表示) | |||
| 1行目: | 1行目: | ||
__toc__ | |||
基本的に [ファイル] メニュー >> ['''開く...'''] で呼び出される「ファイルを開く」ダイアログは、"アクティブなドキュメントの親フォルダ" か "さいごに開いたファイルの親フォルダ"、または "Mery 起動時の作業フォルダ" などが起点となります。 | |||
このマクロでは「ファイルを開く」ダイアログを呼び出したさい、つねに '''特定のフォルダ''' に強制移動します。 | |||
* | * ソースコード内の設定項目でフォルダパスを指定してください。<br> ※キー入力のエミュレートだと日本語パスの場合にややこしいことになるので、クリップボード経由でフォルダパスを送信します。 | ||
== ソースコード == | |||
ベータ版 2.8.0 以前の Mery (正式版 Ver 2.6.7 も含む) では、こちらのコードをご利用ください。 | |||
<syntaxhighlight lang="javascript"> | |||
< | |||
#title = "開く..." | #title = "開く..." | ||
#tooltip = "ファイル選択ダイアログを開く" | #tooltip = "ファイル選択ダイアログを開く" | ||
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274 | // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274 | ||
/ | /** | ||
* --------------------------------------------------------- | |||
* 特定のフォルダで「ファイルを開く」ダイアログ | |||
* sukemaru, 2018-12-01 - 2020-12-19 | |||
* --------------------------------------------------------- | |||
* 指定したフォルダを起点にファイル選択ダイアログを開く | |||
* ファイルの種類: すべてのファイル | |||
*/ | |||
// ■フォルダを指定する■(\ | // ■フォルダを指定する■(\ はふたつ重ね / 末尾にも \\ を付ける) | ||
var folder = "%USERPROFILE%\\デスクトップ\\"; | var folder = "%USERPROFILE%\\デスクトップ\\"; | ||
var shell = new ActiveXObject( "WScript.Shell" ); | var shell = new ActiveXObject( "WScript.Shell" ); | ||
var fso = new ActiveXObject( "Scripting.FileSystemObject" ); | var fso = new ActiveXObject( "Scripting.FileSystemObject" ); | ||
folder = shell.ExpandEnvironmentStrings( folder ); | folder = shell.ExpandEnvironmentStrings( folder ); | ||
// クリップボードのデータを退避させて、フォルダパスをセットする | // クリップボードのデータを退避させて、フォルダパスをセットする | ||
if ( fso.FolderExists( folder ) ) { | if ( fso.FolderExists( folder ) ) { | ||
var cb = ClipboardData.GetData(); | var cb = ClipboardData.GetData(); | ||
ClipboardData.SetData( folder ); | ClipboardData.SetData( folder ); | ||
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N) | |||
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」 | // キー入力をエミュレート(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" ); | shell.SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" ); | ||
} | } | ||
// ファイルメニューのコマンド「開く...」 | // ファイルメニューのコマンド「開く...」 | ||
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 ); | editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 ); | ||
// クリップボードのデータを復帰 | // クリップボードのデータを復帰 | ||
if ( cb ) | if ( cb ) | ||
ClipboardData.SetData( cb ); | ClipboardData.SetData( cb ); | ||
</ | </syntaxhighlight> | ||
== Mery 2.8.1 以降用 == | |||
Mery ベータ版 Ver 2.8.1 以降で、「クリップボード履歴」(最大16件) の内容を維持します。<br> | |||
ベータ版 2.8.0 以前の Mery (正式版 Ver 2.6.7 も含む) では使用できません。 | |||
<syntaxhighlight lang="javascript"> | |||
#title = "開く..." | |||
#tooltip = "ファイル選択ダイアログを開く" | |||
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274 | |||
/** | |||
* --------------------------------------------------------- | |||
* 特定のフォルダで「ファイルを開く」ダイアログ | |||
* sukemaru, 2018-12-01 - 2020-05-10 | |||
* --------------------------------------------------------- | |||
* 指定したフォルダを起点にファイル選択ダイアログを開く | |||
* ファイルの種類: すべてのファイル | |||
* | |||
* 2020-05-10: Mery 2.8.1 以降の | |||
* ClipboardData 系メソッドの追加引数を利用して、クリップボード履歴を保持 | |||
* 【動作要件】 Mery ベータ版 Ver 2.8.1 以降 | |||
*/ | |||
// ---------- ▼ 設定項目 ▼ ---------- // | |||
// ■フォルダを指定する( \ はふたつ重ね / 末尾にも \\ を付ける) | |||
var folder = "%USERPROFILE%\\デスクトップ\\"; | |||
// ---------- ▲ 設定項目 ▲ ---------- // | |||
var Fso = new ActiveXObject( "Scripting.FileSystemObject" ); | |||
var WshShell = new ActiveXObject( "WScript.Shell" ); | |||
folder = folder ? WshShell.ExpandEnvironmentStrings( folder ) | |||
: edtor.ActiveDocument.Path; | |||
// クリップボードのデータを退避させて、フォルダパスをセットする | |||
var cb = ClipboardData; | |||
var data0 = cb.GetData( 0 ) || cb.GetData() || ""; | |||
var data15 = cb.GetData( 15 ) || ""; | |||
if ( folder && Fso.FolderExists( folder ) ) { | |||
cb.ClearData( 0 ); | |||
cb.SetData( folder ); | |||
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N) | |||
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」 | |||
WshShell.SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" ); | |||
} | |||
// ファイルメニューのコマンド「開く...」 | |||
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 ); | |||
// クリップボードのデータを復帰 | |||
cb.ClearData( 0 ); | |||
if ( data0 ) { | |||
cb.SetData( data0 ); | |||
// if ( data15 ) { | |||
// cb.SetData( data15, 15 ); | |||
// } | |||
} | |||
else { | |||
cb.ClearData(); | |||
} | |||
</syntaxhighlight> | |||
== メモ == | == メモ == | ||
* | Windows XP でしか動作確認していません | ||
* | == 変更履歴 == | ||
* 1.0.3 (2020-05-10) | |||
* 2018 | ** Mery 2.8.1 以降の ClipboardData 系メソッドの追加引数を利用してクリップボード履歴を保持 | ||
*** 外部アプリケーションで OS のクリップボードを監視・管理しているケースを想定していません | |||
* 1.0.2 (2018-12-19) | |||
** フォルダ指定の var folder = のうしろのダブルクォートが二重になっていたので修正 | |||
** % % で囲った環境変数の展開 | |||
* 1.0.1 (2018-12-05) | |||
** フォルダの実在確認とクリップボードデータの復帰のためのコードを追加 | |||
* 1.0.0 (2018-12-01) | |||
** 初版 | |||
2024年9月9日 (月) 10:20時点における最新版
基本的に [ファイル] メニュー >> [開く...] で呼び出される「ファイルを開く」ダイアログは、"アクティブなドキュメントの親フォルダ" か "さいごに開いたファイルの親フォルダ"、または "Mery 起動時の作業フォルダ" などが起点となります。
このマクロでは「ファイルを開く」ダイアログを呼び出したさい、つねに 特定のフォルダ に強制移動します。
- ソースコード内の設定項目でフォルダパスを指定してください。
※キー入力のエミュレートだと日本語パスの場合にややこしいことになるので、クリップボード経由でフォルダパスを送信します。
ソースコード[編集]
ベータ版 2.8.0 以前の Mery (正式版 Ver 2.6.7 も含む) では、こちらのコードをご利用ください。
#title = "開く..."
#tooltip = "ファイル選択ダイアログを開く"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274
/**
* ---------------------------------------------------------
* 特定のフォルダで「ファイルを開く」ダイアログ
* sukemaru, 2018-12-01 - 2020-12-19
* ---------------------------------------------------------
* 指定したフォルダを起点にファイル選択ダイアログを開く
* ファイルの種類: すべてのファイル
*/
// ■フォルダを指定する■(\ はふたつ重ね / 末尾にも \\ を付ける)
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 );
Mery 2.8.1 以降用[編集]
Mery ベータ版 Ver 2.8.1 以降で、「クリップボード履歴」(最大16件) の内容を維持します。
ベータ版 2.8.0 以前の Mery (正式版 Ver 2.6.7 も含む) では使用できません。
#title = "開く..."
#tooltip = "ファイル選択ダイアログを開く"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",274
/**
* ---------------------------------------------------------
* 特定のフォルダで「ファイルを開く」ダイアログ
* sukemaru, 2018-12-01 - 2020-05-10
* ---------------------------------------------------------
* 指定したフォルダを起点にファイル選択ダイアログを開く
* ファイルの種類: すべてのファイル
*
* 2020-05-10: Mery 2.8.1 以降の
* ClipboardData 系メソッドの追加引数を利用して、クリップボード履歴を保持
* 【動作要件】 Mery ベータ版 Ver 2.8.1 以降
*/
// ---------- ▼ 設定項目 ▼ ---------- //
// ■フォルダを指定する( \ はふたつ重ね / 末尾にも \\ を付ける)
var folder = "%USERPROFILE%\\デスクトップ\\";
// ---------- ▲ 設定項目 ▲ ---------- //
var Fso = new ActiveXObject( "Scripting.FileSystemObject" );
var WshShell = new ActiveXObject( "WScript.Shell" );
folder = folder ? WshShell.ExpandEnvironmentStrings( folder )
: edtor.ActiveDocument.Path;
// クリップボードのデータを退避させて、フォルダパスをセットする
var cb = ClipboardData;
var data0 = cb.GetData( 0 ) || cb.GetData() || "";
var data15 = cb.GetData( 15 ) || "";
if ( folder && Fso.FolderExists( folder ) ) {
cb.ClearData( 0 );
cb.SetData( folder );
// キー入力をエミュレート(Ctrl+V, Enter, Delete, Alt+T, DownArrow, End, Enter, Alt+N)
// Alt+T = 「ファイルの種類(T):」 / Alt+N = 「ファイル名(N):」
WshShell.SendKeys( "^V~{DEL}%T{DOWN}{END}~%N" );
}
// ファイルメニューのコマンド「開く...」
editor.ExecuteCommandByID( MEID_FILE_OPEN = 2062 );
// クリップボードのデータを復帰
cb.ClearData( 0 );
if ( data0 ) {
cb.SetData( data0 );
// if ( data15 ) {
// cb.SetData( data15, 15 );
// }
}
else {
cb.ClearData();
}
メモ[編集]
Windows XP でしか動作確認していません
変更履歴[編集]
- 1.0.3 (2020-05-10)
- Mery 2.8.1 以降の ClipboardData 系メソッドの追加引数を利用してクリップボード履歴を保持
- 外部アプリケーションで OS のクリップボードを監視・管理しているケースを想定していません
- Mery 2.8.1 以降の ClipboardData 系メソッドの追加引数を利用してクリップボード履歴を保持
- 1.0.2 (2018-12-19)
- フォルダ指定の var folder = のうしろのダブルクォートが二重になっていたので修正
- % % で囲った環境変数の展開
- 1.0.1 (2018-12-05)
- フォルダの実在確認とクリップボードデータの復帰のためのコードを追加
- 1.0.0 (2018-12-01)
- 初版
スポンサーリンク