概要
パスワードが設定されたExcelを開くたびにパスワードを手入力するのが面倒だったので、指定したパスワードで開いてくれるバッチを用意した。
実行環境
- Windows10
- Office2013
参考URL
コード
以下のコードをコピーして、開きたいExcelのファイルパス(絶対パス)とパスワードを書き換えてOpenPassExcel.bat
とかの名前で保存する。
(参考URLがVBSなのにJScriptで書いているのは完全に私の好みです・・・)
OpenPassExcel.bat
@if (0)==(0) echo off
cd %~dp0
rem ファイルパスとパスワード
set xlsx="開きたいExcelファイルの絶対パス"
set pass="開きたいExcelファイルのパスワード"
rem ファイルが見つからなければ終了
if not exist %xlsx% (
echo ファイルどこ行った・・・
timeout 10
exit /b
)
rem 自分自身をJScriptとして実行
cscript //nologo //E:JScript "%~f0" %xlsx% %pass%
exit /b
@end
// main処理呼び出し
main();
// main処理
function main() {
var args = WScript.Arguments;
if (args.length == 0) {
print("引数がありません");
WScript.Quit(-1);
}
// Excelファイルパス
var xlsx = args(0);
// Excelファイルのパスワード
var password = args(1);
print(xlsx + "を開きます");
// パスワード付きのExcelを開く
OpenExcelFile(xlsx, password);
};
// コンソール表示用
// str: 表示する文字列
function print(str) {
WScript.Echo(str);
};
// パスワード付きのExcelを開く
function OpenExcelFile(xlsx, password) {
var excel = WScript.CreateObject("Excel.Application");
var book = excel.Workbooks.Open(xlsx, null, false, null, password);
excel.Visible = true;
};
その他
ダブルクリックでサクッと実行したかったのでshebang記法でバッチファイルにJScriptを埋め込んで1ファイルにしている。
呼び出し用のバッチ(.bat)と実処理用のスクリプト(.jsとか.vbs)に分けたり、Excelとパスワードを外部定義にしてもいい。
スクリプトにファイルパスを直書きする場合は\
を\\
にエスケープする必要があるので注意。