プロが教えるわが家の防犯対策術!

マクロを使った計算表を作って他の人に利用してもらっています。

計算を進める際途中経過をH~Z列までを使って計算し、その結果をA~G列を表示しています。途中経過のH~Z列やA~G列の計算式は見せたくないため、非表示にしたのち保護してあります。利用者は図表をコピーして利用できるよう、コピーが可能になるようにコピー禁止はしておりません。

ところが計算シート全体を他のシートにコピペすると、隠したはずのH~Z列を含むすべての列およびA~G列の計算式がすべて表示されてしまいます。
有料・無料の保護ソフトを試しましたが、どれもうまく作動してくれません。

そこでVBを使えばうまくできるものかと考えました。VBは全く分かりませんが6.0の環境は整っています。

当面のやりたいことは、コピペをした際に保護が破られないだけのことなのですが、VBを使えばそれが可能か否かを教えていただけませんか。可能ならばコードもお教えいただければ大変ありがたいです。

よろしくお願いします。

質問者からの補足コメント

  • 1~6まで、種々のご指摘をいただきましてありがとうございます。

    ただ私がお聞きしたいのは、VBを使えばそのようなことができるのかどうかです。
    VBに取り組むべきかどうかを考えたいのです。

    よろしくお願いします。

      補足日時:2016/10/01 07:00

A 回答 (12件中1~10件)

自分なら別のシート上で計算を行い、計算に使ったシートを非表示にする。


でなければ計算その物をVBA内で行う。
    • good
    • 0
この回答へのお礼

銀鱗様

おっしゃる通りですが、先に述べましたように構成上それが容易にはできないので困っております。

容易にはできないのを無理してやるよりは、VBで簡単にできるようであればしたいなというのが相談の趣旨です。

お礼日時:2016/09/30 15:29

外野が失礼


AN10-11にスレ主さんは 誤解があるようです。
セル式に =関数(A1,B1,C1)として(必要なセル番地の値のみ関数に渡す)
標準モジュールに 関数(A,B,C) で、セル式の数値を受け取る、そして、セル式の計算式をコードで書けば、見えるシートの =関数 を見ても、参照セル番地が分かるだけで、VBAに書いた計算式は 見えないのだから、目的は達しているハズ・・・

VBにこだわっておられるようですが、VBでやるなら、標準モジュールに書いたその関数をVBでやるだけで、エクセルからVBに渡す手順が 面倒なだけ。かつ、
VBでやると、配布の時にインストール作業という、もっと面倒が増えますよ。

この辺が、エクセルは必要な部品一式(DLLなど)インクルードして、配布できますが、VBはコードだけで、必要DLLは 含まれませんから、インストールでDLLを相手のPCに移す面倒な手間が有りますよ。
    • good
    • 0
この回答へのお礼

2014itochan様

VBにこだわっている訳ではないのですが、それを使えば初期の目的が達せられるのかと思い、質問させていただきました。どうも見当違いのようでした。

一方市販のエクセルアドインを使用したソフトを見ると、シートの保護およびブックの保護がされていません。
ですから必要な計算は全部VBAの中でされているものと思われます。

皆様のおかげでだんだんやるべき方向が見えてきました。ありがとうございました。

お礼日時:2016/10/04 10:26

No.10 追記



マクロ(VBA)を使えばいっぺんに式を変換することも出来ます。
    • good
    • 0

No.1 をもっと簡単な汎用性のあるものを使ったら良いかもしれません。

修正箇所は減りませんが変更内容は簡単です。

標準モジュールに
-----------------------------------------------
Function ひつじ(x)
ひつじ = x
End Function
-----------------------------------------------
※ もちろん「ひつじ」は関数と同じにならなければ適当なアルファベットに変更してもいいです。

☆ 使い方
「=A1+B1」と式が入っていたら「=ひつじ(A1+B1)」とするだけです。(「ひつじ(」と「)」を追加するだけです)
    • good
    • 0
この回答へのお礼

GooUserラック 様 No.9、10に関して

おかげさまでセルの式を表示させなくなりましたが、依然としてシートおよびブックの保護が外れ、隠したはずの列が表示されてしまう問題が残ります。

お礼日時:2016/10/01 18:37

少し使いにくくなりますが


このシートとすべてのユーザーに許可する操作を「ロックされていないセル範囲の選択」のみチェックを入れたらいかがですか?
    • good
    • 0

「VBを使えばそのようなことができるのかどうかです」とは「シートのコピーとかを禁止出来るか?」と言う事ならば、先ほどの機能呼び出すだけで同じ事しか出来ません。

「右クリックメニュー」を出さない事は出来ますが、メニューやリボンの方のコピーとかは出来てしまいます。
    • good
    • 0
この回答へのお礼

GooUserラック 様

「VBを使えばそのようなことができるのかどうかです」は少しあいまいな表現で申し訳ありません。

「そのような・・・」とは、質問欄に記した内容です。すなわち、
1.コピペはできる
2.コピペしても式の内容が表示されず、かつシートおよびブックの保護が外れない。隠したはずのH~Z列は隠れているということです。

やはりVBを使ってもそのようなことはできないですかね。

お礼日時:2016/10/01 18:00

No.6 へのお礼に関して



もう一度確認しておきますが、セルの書式設定で「ロック」「表示しない」にチェックを入れた状態でシート保護をかけると全選択・列選択・行選択のどれでも、コピーは出来ますが、式ではなく結果のみコピーされます。
この状態で「シートの移動またはコピー」を行うと確かに式ごとコピーされてしまいすが、ブック保護をかけると「シートの移動またはコピー」が選択できなくなりませんか?

シートの保護ですが
「シートとロックされたセルの内容を保護する」にチェック
このシーへとすべてのユーザーに許可する操作は
「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」のみチェックを入れた状態になっていますか?
    • good
    • 0
この回答へのお礼

GooUserラック 様

度々のご教示誠にありがとうございます。


’’もう一度確認しておきますが、セルの書式設定で「ロック」「表示しない」にチェックを入れた状態でシート保護をかけると全選択・列選択・行選択のどれでも、コピーは出来ますが、式ではなく結果のみコピーされます。’’

//確かに結果のみコピーされます。しかしシートおよびブックの保護は外れており、隠したはずのH~Z列を含むすべての列が表示されてしまいます。これを表示させないようにしたいのです。//

’’「ロックされたセル範囲の選択」「ロックされていないセル範囲の選択」のみチェックを入れた状態になっていますか?’’

//ハイ、そのように設定しております。//

お礼日時:2016/10/01 17:53

No.2 の補足



念の為ですが、エクセルの保護ですがシートの保護とブックの保護があります。こちらで試した限りブックの保護でシート構成を変更出来なくするとシートのコピーが出来なくなるのですが、出来てしまいますか?
    • good
    • 0
この回答へのお礼

GooUserラック様

シートの保護とブックの保護をしていても、全選択・列選択・行選択のどれでも、コピーできてかつ、他シートに張り付けると両方の保護が外れます。2003、2010の場合です。

お礼日時:2016/10/01 06:45

VBAを使わなくてもおそらくやりたいことは可能だと思います



おそらくですが、こういうことでは?
1.ユーザーが入力するセルを設ける
2.途中演算セルは作成者や管理者のみが見られるようにしたい
3.出力セルはユーザーがコピーして用いたい
そこに、非表示にしても範囲コピーをすると非表示セルがコピーできてしまうエクセルの仕様があって上手く望んだ形にできない

と言うことでしたら、以下の画像のようにすればいいと思います。
シートの保護はパスワードをつけてください
「エクセルで保護したのをコピペで破られない」の回答画像4
    • good
    • 0
この回答へのお礼

strum_f 様

検証に手間取りまして遅くなり、失礼しました。

おっしゃるようにすると入力を許可した部分のみ、コピペできます。
しかしこの計算表の利用者は計算結果をレポートとして利用する場合、計算結果のセルのみでなく、計算条件の部分もコピペしたいのです。

お礼日時:2016/10/01 06:56

VBではなく VBAですね.


(No.1の回答の方のユーザ関数も含めて)VBAが私も一番いいと思います.

とりあえずの解決としては,
作業用のセルは別シートにして,結果だけ表示用のシートにする とか.
結果のシートで計算式を見ても,他のシートへの参照(=Sheet2!A1 みたいに)でるだけですから.
    • good
    • 0
この回答へのお礼

tantanmm様

ありがとうございます。

私も作業用のセルを別シートにするのが良いと考えますが、構成上それが簡単にはできないので困っております。

VBAでシート保護をかけているのですがコピペができてしまいますし、他のサイトでもそういうように記されています。
例えば
http://detail.chiebukuro.yahoo.co.jp/qa/question …
https://oshiete.goo.ne.jp/qa/4602628.html

なのでVBを使ったら解決できるのならそうしたいと考えております。

お礼日時:2016/09/30 15:20

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