シートの保護で入力場所以外をロックしましたが、そのシートをコピーするといくらでも修正(改ざん)できます。
いじられたくないシートなので、更にシートのコピー自体を禁止する方法がどうしても分からず困っています。
皆様の知恵を拝借願えませんでしょうか。

Excel 2000 professionalを使っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは!



>そのシートをコピーするといくらでも修正(改ざん)できます
改ざんをどこまで心配するかの限度だと思うのですが
例えコピーされなくても表示される限り、他のBookに
一から作ることも可能ですから・・・

妥協範囲としては、数式までの保護が限度だと思います。
ご存知だと思いますが、
 数式が入力されている範囲を選択後、書式設定 保護タブ 表示しない
で数式は表示されず、コピーしてもその時の値のみ複写
されます。


[もっと極端な方法]
シートは オプション 表示 枠線のチェックを外し
罫線にてにて対応

入力セル以外は、別シート(セル幅高さが同一構成)で
入力セルをリンクして、処理し結果をカメラ機能で貼り付け
([ALT]キーを押しながら位置を微調整でセルにピッタリの位置になります)
その画像の書式設定を 保護

別シートは 書式 シート 表示しない
シートの保護 と Bookの保護 を行う
    • good
    • 0
この回答へのお礼

こんにちは~

えーとですね、例えば輸出用の資料のフォームをExcelで作りました。結構重要な資料なのでサイズや重量、商品価格などを1mm、1kg、1円たりともいじれないようにしたいのでしょが、ある部分だけはフリーにいじれるようにしたいのです。(パターン1)

他には料金表なんですが、A列に標準料金/D列に1割引料金/G列に2割引料金を表示します。(B/C/E/F/H/Iは参照元の値や計算式が入る)
料金表示は3行からで、1.2行は割引率の入力数値、参照元になっておりここは自由に改変可能。(パターン2)

問題は、保護をかけることで解決したと思ったのが、行と列の交点をクリックして右クリックすると、コピーが可能で、他のシートにそっくり貼り付けできる点です。

これでは折角作った表が他の人に色々といじられてしまいます。問題は、コピーのコマンドが消える方法が無いか・・・だったりします。

でも、

>数式が入力されている範囲を選択後、書式設定 保護タブ 表示しないで数式は表示されず、コピーしてもその時の値のみ複写されます。

で、一番近い結果を得られますのでそれで対応したいと思います。(一応それは試していたのですが、その時の値のみコピーされることまで確認していなかったので使えそうです。輸出用書類の方は必要事項を貰ってからPDFにでもして送るしか方法はなさそうですね。

ありがとうございます。

お礼日時:2001/12/02 13:39

EXCEL97で2000ではどうかわかりませんが、ファイルを保存するときオプションとしてパスワード設定できませんか。



読み込み・書き込みどちらにもパスワードが設定できるので
私の場合この方法でファイルを保護してます。
    • good
    • 0
この回答へのお礼

スミマセン。
ちょっと違います。
ありがとうございました。

お礼日時:2001/12/02 13:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシートをたくさんコピーするには?シートを日付順にコピーするには?

こんにちは、みなさん!!

エクセルのシートのコピーについて

Q1、シートのコピーはコピーするシートをクリックして
Ctrlキーを押しながら右側へドラッグすると1つコピーできますが、1つだけではなく、10個ですとか、20個など多数のコピーを1回ですることはできますでしょうか?

Q2、シート名が例えば「1月1日」とあった場合に、これを1月2日、1月3日・・・・・というように、連続してコピーすることはできませんでしょうか?

以上ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

> 1枚のシートのコピーを複数作成する、ということです。マクロ以外には方法はありませんでしょうか?

あまりエクセルは使わないのでわかりませんが、
おそらく無いでしょう。

普段、業務で使うブックにマクロがあるのがイヤなら、
マクロだけのブックを作り、使いたいときだけ、そのブックも開き、マクロの実行が終わったら閉じてしまう、という手もあります。

Qシートのコピーでリンク先をコピー先のシートのする方法

エクセル2003を使用しています。
「A」というブックのシートを「B」のブックにシートコピーしたいのですが、そのままコピーすると各セルのリンク先がAのブックに設定してある別のシートのままとなります。それをBの同じシート名にリンク先を変えることは出来るのでしょうか? よろしくお願いします。

Aベストアンサー

#2です。
補足ありがとうございました。
いい案は見つからないが
下記3案のうち、エクセルでのテンプレートの利用ぐらいがいいのではないかな。
ーー
●関数
Aブック

シート1      シート2                シート3
ーーーー      ------              ------
A1          =Sheet1!A! =コピー+張り付け=> =Sheet1!A!
                   範囲指定

                  =シートのコピ=>   =Sheet1!A!




ーーーーー     ーーーーーーー
=======================

Bブック
           ↓↓ ブックのシート1の「シートの他ブックへのコピー」

シート1       シート2
ーーーー      ------
A1          =[コピー元.xls]Sheet1!A1






ーーーーー     ーーーーーーー
コピー元
シート2(Sheet2)
F1には=LEFT(CELL("filename",F1),FIND("]",CELL("filename",F1)))
A1には=INDIRECT("'"&F1&"Sheet1'!A1")

ーーーーーー
上記をシートコピーでコピーし、新しいシートを新ブックに作る。
ーー
コピー先
シート2(Sheet2)が出来て
A1には
=INDIRECT("'"&F1&"Sheet1'!A1")
ーー
ただしF1には=LEFT(CELL("filename",F1),FIND("]",CELL("filename",F1)))
を後からでも入れる。
シートをふやし、シート名をシート1(Sheet1)にする。コピーしただけではシート1は無い。
結果シート2(Sheet2)のA1は123

==========
●テンプレート
コピー元を
名前をつけて保存ー
ファイルの種類ーテンプレート
コピー元T.xlt
--
必要な都度これを開いて、内容データを処理後、都合の良い名前で保存する。
===========
●VBA
指定範囲の全(各)セルの値と数式を調べ、例えば数式の設定ある場合(HasFormula)だけ、
コピー先の同一位置のセルに数式を設定する。
===
#1でヒントが出ている
コピー先での式の置換
式の中で
[・・]内を空白に置換
など出来るかもしれない。

#2です。
補足ありがとうございました。
いい案は見つからないが
下記3案のうち、エクセルでのテンプレートの利用ぐらいがいいのではないかな。
ーー
●関数
Aブック

シート1      シート2                シート3
ーーーー      ------              ------
A1          =Sheet1!A! =コピー+張り付け=> =Sheet1!A!
                   範囲指定

                  =シートの...続きを読む

QエクセルVBAで、シートをコピーした際、コピーされた新しいシートのほう

エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。
コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。

新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか?

いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、データ消去で対応していますが、これだと、シート名に表示される内訳(1)(2)・・という番号になるので、できれば、コピーしたほうのシートを指定して、Noを1増やし、データ消去できれば解決するとおもうので。。いま、使ってるVBAはこんな式です。
ちなみにK6はシートNo、("B10:H30")("J10:K30")は入力欄です。


Private Sub CommandButton1_Click()


ActiveSheet.Copy Before:=ActiveSheet
Range("K6").Value = Range("K6").Value + 1

Range("B10:H30").ClearContents
Range("J10:K30").ClearContents


ActiveSheet.Select

ActiveSheet.Name = Range("K6").Value


End Sub

エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。
コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。

新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか?

いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、...続きを読む

Aベストアンサー

一番最後尾にデータの入っていないシートを
連番とダブらないような名前で作っておいて
Private Sub CommandButton1_Click()
Sheets(Sheets.Count).Copy Before:=Sheets(Sheets.Count)
NEWWS = Sheets.Count - 1
Sheets(Sheets.Count - 1).Name = NEWWS
End Sub
というのはどうでしょうか。

QExcel VBA シートのコピー時に、シート上のコンボボックスもコピーしたい。

こんにちは。
Excel VBAについて質問させていただきます。
やりたいことは、
シートAにボタンとコンボボックスを配置し、
コンボボックスには氏名の一覧を設定しています。
そこで、ボタンを押すとシートAをボタンとコンボボックスごと
シートBという名前でコピーをしたいと思っています。

ActiveSheet.Copy Before:=Worksheets(1)
でシート・ボタン・コンボボックスのコピーはうまく出来たのですが、
コンボボックスに設定していた氏名の一覧はコピーされていませんでした。

コピー先のシートのコンボボックスにもう一度氏名の一覧を
設定するしかないのでしょうか?
それともシートのコピー時に何かいい方法があるのでしょうか。

宜しければアドバイスをお願い致します。
OSはWindows2000Pro
Excelは2000です

Aベストアンサー

こんばんは。再度の登場です。

先の回答は、ListFillRangeプロパティを使用したものですのでコピーしても値は保持されますが、
質問者のように、AddItemメソッドでセットしたものはコピーしても保持されませんので改めてセットする必要があります。

現在”コンボボックスの中身もコピー”されてるようですが、
その中身のコピーを実行するタイミングを誤ると上手くいかない場合があります。
シートのコピーと同時に”中身のコピー”をするとそれは一見上手くいってるようでも
ブックを閉じて再度開いたときにはクリアーされますので、
コピーしてできたシートがActiveになるたびにそのシートのComboboxにも値をセットしなければいけません。
WorkBookOpenイベントでセットしているのは「元のComboboxにのみ」Listをセットしているわけですから。

●要約●
以下、コピーされてできた新しいシートは、見積書2、とする
(方法1)
「見積書2」がアクティブになる度に「見積書」のComoboxのListをコピーする
(方法2)
WorkbookのOpenイベントの”Function SetComboBox()”を標準モジュールへ移し、
「見積書」「見積書2」それぞれのActivateイベントで、”Function SetComboBox()”を呼び出す
その場合、”Function SetComboBox()”のComboboxのコンテナである固有のシート名は使わずに、ActiveSheetに変更しておく
(方法3)
WorkBookのOpenイベントでは、リスト一覧を配列変数に作成しておき
「見積書」「見積書2」がActiveになったときそのシート上のComboBoxのListに配列変数をセットする
 
●もし興味があれば、配列変数をListプロパティに直接セットするコードをアップしてもいいのですが。。。
 
それから、敬称Comboのリストは決まっているようですから、
別なシートのどこかのセルに一覧を作っておき、
ListFillRangeプロパティにセットしておけばいいですね。

以上です。

 

こんばんは。再度の登場です。

先の回答は、ListFillRangeプロパティを使用したものですのでコピーしても値は保持されますが、
質問者のように、AddItemメソッドでセットしたものはコピーしても保持されませんので改めてセットする必要があります。

現在”コンボボックスの中身もコピー”されてるようですが、
その中身のコピーを実行するタイミングを誤ると上手くいかない場合があります。
シートのコピーと同時に”中身のコピー”をするとそれは一見上手くいってるようでも
ブックを閉じて再度開いたとき...続きを読む

Qシートをコピー、シート名を変更

Windows8でExcel2000を使っています。
こういうマクロはどう書けばいいんでしょうか?

同一ファイル内で、シートを複数枚コピー。
複数選択したセルに入力された文字列を、上記でコピーされたシート名に反映したい。

「原本」というシート名のシートがあり、それを元に一年分の表を作りたいのですが
今は手で11枚コピーを作った後1枚ずつ名前変更でやっています。
シート名にしたい文字列は現在なら「2015年01月」~「2015年12月」です。
セルに「2015年01月」~「2015年12月」を入力、選択した後マクロ実行で
シート名変更に反映できればありがたいです。

Aベストアンサー

ふつーに、必要な数だけシートのコピーと名前付けを繰り返すだけです。

sub macro1()
 dim h as range
 on error resume next

 for each h in selection
  worksheets("原本").copy after:=worksheets(worksheets.count)
  activesheet.name = h.value
 next
end sub



>入力、選択した後マクロ実行でシート名変更に反映

記入した内容が「シート名として適切ではない」場合(たとえば同じ名前のシートが既にある等を含む)の処置について考慮されていませんね。
必要に応じて自力で適切に工夫してみて下さい。


このカテゴリの人気Q&Aランキング

おすすめ情報