質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

5188閲覧

【JavaScript】PWがかかっているファイルは対象とせずスキップさせたい

maro_maro

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/11/12 14:08

編集2015/11/12 20:50

初歩的な質問で大変恐縮です。
VBAのド初心者でJavaScriptは全く未知の世界です。

業務で必要となり、検索で見つけたものです。
改変・再配布自由なプログラムです。
アレンジをご教示いただけますでしょうか。

【希望内容】
Excelファイルにパスワードをかけるプログラムのアレンジです。
PWがすでにかかっているファイルが混在していても、
当該ファイルはスキップし、かかっていないファイルにのみPWをかける。

PWを一気に、しかも処理時間も早く非常に便利なのですが、
業務で整理対象となるファイルにPWがかかっているものとないものが混在し困っています。

エラーとなった時点で、ファイルの更新時間で判断すればよいのですが、
混在していてもスキップして作業が終わってもらえると、
作業残がないかどうか確認作業が不要となり助かります。

お力添えいただけますでしょうか。
どうぞよろしくお願いいたします。

◆仕事に役立つJava Script入門/クジラ飛行机
http://pc.nikkeibp.co.jp/article/column/20101201/1028886/?P=2&rt=nocnt

★ReadMe.txtより

  • excelPassword -- Excelファイルにパスワードをかける

[概要]
Excelファイルをドラッグ&ドロップ一発で全てのファイルに
パスワードを設定することができます。

[ライセンス]
MIT License -- 自由に改変・再配布しても構いません。

[制作者]
クジラ飛行机 (http://kujirahand.com)

★プログラム内容

//---------------------------------------------------------
// ドラッグ&ドロップされたExcelファイルにパスワードをかける
//---------------------------------------------------------
// ドラッグ&ドロップされたファイルを確認する
var file_count = WScript.Arguments.Count();
if (file_count == 0) {
WScript.echo("ファイルがありません。");
WScript.Quit();
}
// Excelを起動する
var excel = WScript.CreateObject("Excel.Application");
excel.Visible = true; // 画面に表示する
excel.DisplayAlerts = false; // 警告が出ないようにする
// パスワードを入力する
var password = excel.InputBox("パスワードを入力してください");
// ドラッグ&ドロップされたファイルを1つずつ処理する
for (var i = 0; i < file_count; i++) {
setPassword(WScript.Arguments.Item(i));
}
excel.Quit();
WScript.echo("終わりました!");
//---------------------------------------------------------
// Excelファイルにパスワードを設定する関数
function setPassword(fname) {
var book = excel.Workbooks.Open(fname); // ブックを開く
book.Password = password; // パスワードを設定
book.SaveAs(fname); // ブックを保存
book.Close(); // ブックを閉じる
}
//---------------------------------------------------------

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScriptではエラーが発生した場合の処理を記述出来ます。
それを逆手にとり、エラーが発生した場合、後続の処理を行わず、
処理をスキップすることも可能になります。

setPassword関数を以下のように変更してください。

JavaScript

1function setPassword(fname) { 2 try{ 3 var book = excel.Workbooks.Open(fname,null,false,null,"",""); // パスワードに空を指定してブックを開く 4 book.Password = password; // パスワードを設定 5 book.SaveAs(fname); // ブックを保存 6 book.Close(); // ブックを閉じる 7 }catch(e){ 8 // エラー発生の場合、パスワードが掛っていると判断し処理をスキップ 9 } 10}

投稿2015/11/13 05:21

moredeep

総合スコア1507

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maro_maro

2015/11/14 12:32

お礼が遅くなり申し訳ありません。 ありがとうございます! 希望通りの挙動で、確認作業の手間がなくなり大変助かります。 マクロより作業時間が全然早くてJavaScriptすごいな~って思ってる 初心者には大変ありがたいご回答でした。 今後もご教示いただけたら幸いです。
moredeep

2015/11/16 00:15

遅くなりましたが蛇足です。 適当に読み流してください。 今回使用しているコードは、JavaScriptではなく、実は"JScript"です。 JavaScriptとJScriptはコードの書き方等基本的には同じものですが、 JScriptはWindows上でしか使用できません。(最近は他OSでも使えるようになってきているようですが。) 他OSを使用する場合はご注意ください。 あと、これはこのサイトの使い方についてですが、 エクセルを操作する等エクセルに関係のあるものは、 タグにExcelをつけた方がよいです。 Excelは特殊なので、JavaScriptを知っていてもエクセルの操作を知らない人は多いです。
guest

0

setPassword関数内で、
book.HasPassword(戻り値は、true or false)をチェックして、falseの場合だけpasswordを設定すれば良いのではないかと思います。

投稿2015/11/13 05:15

kazzzstudio

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maro_maro

2015/11/14 12:35

お礼が遅くなり申し訳ありません。 ご教示ありがとうございました。 業務で使いたいVBAでの参考になりました。 恐縮ですがJavaScriptの記述をご回答いただけた方をベストアンサーにさせていただきました。
guest

0

http://oshiete.goo.ne.jp/qa/4373463.html
おしえて goo あたりで、上記 url にパスワードが掛かっているエクセルを判定するvbscript が載ってるので、組み合わせて一つにして欲しいって質問したらどうですか。

パスワード指定で、ブランクを指定してオープン、開ければパスワード設定無し、開けないでエラーならパスワード有りというロジックです。

投稿2015/11/12 17:13

ipadcaron

総合スコア1693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maro_maro

2015/11/14 12:37

お礼が遅くなり申し訳ありません。 質問方法のご教示ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問