• 締切済み

Excel VBA Sheetのコピー?(制限あり)

お世話になります。 Private Sub CommandButton1_Click() '初期化 Sheet1 = Sheet2 End Sub 当然これではエラーになります。 Sheet1、Sheet2 は同じ表です。 ( セルの幅・高さ など全て同じ ) Sheet1 作業シート Sheet2 雛型シート Sheet1 に入力していますが、 間違ったりして訳が解らなくなった時 CommandButton1_Click で 雛型に戻したいのですが・・。( Sheet2→Sheet1 ) Copy Paste は使えません。 色々制限を掛けていて(ProtectSharingなど) ご教授をお願い致します。 説明不足もあると思いますので、分からない点は補足致します。

みんなの回答

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

共有ブックの保護に時間がかかるというのは、どの程度か わかりませんが、その時間は、許容範囲を超えているので しょうか? 簡単なブックでテストしましたが、保護の解除だけなら、 それほど時間はかかりませんでした。 私の知識では、保護を解除しない状態での代案は見当たり ませんでした。

starsip
質問者

お礼

kokorone さん ご回答有難う御座います。 保護・解除の時間は各20~30秒掛かります。 シートの保護は一瞬なのに、なぜ、共有保護は 20~30秒かは分かりませんが、VBAの記述量が多いのは確かです。 ( ですから、記述量の多さのせいかもしれません。 私もよく分かりません )  自分で使用するExcelファイルであれば、時間が掛かる部分があっても待っていられますが・・ ( VBAを理解してない人(エンドユーザー)でもストレスなく使ってもらいたかったので。) 理由があって、あえてシート保護でなく、共有保護を掛けましたが 共有保護を掛けないか、一度解除するか、など今一度考えてみます。 有難う御座いました。 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 急な出張が入ってご返礼が遅れました。 同じ理由で締め切りも遅れてしまいました。 申し訳ありません。 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

すると、全ての回答が全文表示されます。
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

#1です。 共有保護については、よくわかりませんが、 私のケースでは、シートの保護が掛かっています。 マクロ実行時に、一時的に保護を解除することはできないでしょうか? 実行後、保護を設定しなおせば、いかがでしょうか?

starsip
質問者

補足

kokoroneさん 再度のご回答有難う御座います。 シートの保護ですと、シートのコピー貼り付けは出来るのですが 共有保護を掛けるとシートのコピー貼り付けが不可になります。 おっしゃるとおり、一度Unprotectすれば良いのでしょうが シートの解除・保護は一瞬ですが、共有保護の解除・保護は 時間がかかるので・・。 Sheet1.Cells(1, 1).Value=Sheet2.Cells(1, 1).Value なども考えましたが、ユーザーが間違って書式変更やセの結合などを 行なった場合もあり得るので、雛型に戻す方法としてSheet2をSheet1へ コピー貼り付けを考えています。 それとも、他になにか方法があるでしょうか。

すると、全ての回答が全文表示されます。
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

勘違いだったら、失礼します。 Sheet2 雛型シートをそのまま、コピーしてしまえばいいんですよね。 (コピーする前に、Sheet1を消してしまいますが。) For Each sht In Worksheets If sht.Name = "Sheet1" Then Sheets("Sheet1").Delete Exit For End If Next Sheets("Sheet2").Select Sheets("Sheet2").Copy Before:=Sheets("Sheet2") ActiveSheet.Name = "Sheet1"

starsip
質問者

お礼

会社PCで試しましたが、やはり共有保護を掛けた状態では Delete でエラーが返ります。 共有保護を掛けなければ、おっしゃる方法に問題ありませんでした。 共有保護を掛けた状態ではシート自体の操作(削除や貼付)が無効のようです。 やはり共有保護を解除するしか、方法がない気がしてきました。

starsip
質問者

補足

ご回答有難う御座います。 実際のExcelファイルは、会社PCにあります。 会社PC XP Excel2003 検証したいと思いましたが、自宅PCと環境が違っていて・・( 今自宅です 98 Excel2000 ) 共有保護を掛けているので、Paste の行でエラーになります。 共有保護を掛けるとシートの操作が出来ないみたいと考えました >Sheets("Sheet1").Delete >Sheets("Sheet2").Copy Before:=Sheets("Sheet2") 上記で可能なら嬉しいです。 明日、試してみます。

すると、全ての回答が全文表示されます。

関連するQ&A