この人頭いいなと思ったエピソード

エクセルに検査マシンからのデータを吐き出させています。(アプリにて)
テンプレートのエクセルシートは、社名や罫線を入れております。
シート内の”特定のセル”に文字が入力されたら、以後のデータを書き換えられないようにしたいです。
アプリで検査終了時に”特定のセル”に文字列を入力させると、以後データを改ざんできないようにするためです。
このようなことできますか?

A 回答 (2件)

こんにちは


状況や条件がよくわかりませんが、推測混じりで考えてみました。

>アプリで検査終了時に”特定のセル”に文字列を入力させると、
>以後データを改ざんできないようにするためです。
タイミング的にはそのアプリからシートの保護をかけてしまうのが一番良いように思います。
直接にはできないようであれば、エクセル側にシートの保護をかけるマクロを用意しておいて、アプリからそれを実行させるなどの方法も考えられるかと。

まったく別個に動作するもので成立させたいという場合は、アプリ側ではエクセルを立ち上げて記入していると推測しますので、(あまり効率的とは言えませんが)save時のイベントマクロで保護をかける方法もありそうです。
(試していないので、イベントが発生するかどうかは確認していません)

あるいは、タイミングがまったく異なってしまいますが、(ユーザの)open時のイベントマクロを利用することでも、結果的には同様の効果を得ることができると思います。
ただし、これらのマクロは一度処理した後も、何度でも実行される可能性があるので効率的とは言えません。とはいえ、たかだか数行のマクロで足りそうなので、大したことにはならないとも言えます。

ところで、データの書き込みは1度きりではないと想像しますが、出力(書き込み)を同じシートに行うようなことは発生しないのでしょうか?
常に、ブック(あるいはシート)を変えて、新しいシートにデータを吐き出すのであれば、保護をかけても問題はないと思いますが、次のデータセットで上書きするような仕組みになっている場合は、保護を外してから書き込まないとならなくなります。
そのような場合は、「保護をかける」という仕組みではなく、最初から保護をかけた状態にしておいて、「(正当な)書き込みの際にだけ保護をはずして、記入後に再度保護をかける」ような仕組みにしておくほうが良いように思います。
    • good
    • 0

マクロでそのようなものを作った事があります。


同時に、
・印刷不可
・コピペ不可(他のファイルへの複製防止)
・閲覧した人(PC)の履歴を隠しシートに残す。
なども行いました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報