- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2003 VBAを表示ロック)
EXCEL2003 VBAを表示ロックする方法とは?
このQ&Aのポイント
- EXCEL2003でVBAを表示にロックする方法を教えてください。
- 質問文章のVBAコードには改善点はありませんか?
- Sheets("Form")にあるワークシートモジュールを複製したシートにもVBAを表示ロックしたいです。方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
FileCopy ステートメントでコピーしてから、コピー先のBookの内容を変更したら どうでしょ? ※ゴメン、試してません。
その他の回答 (1)
- quindecillion
- ベストアンサー率48% (87/180)
回答No.2
当方初心者すぎてお答えにならないかもしれませんし、検討違いな事を書いているかもしれませんが、ご了承下さい。 >複製シートに名前をつけ、保存します という部分は別ブックとして保存をしているということだと思うのですが、記載マクロも同時にコピーできることから考えますと、その方法がてっとり早いような気がします。 上記は同一ブックならロックがかかったままになっているのでそう解釈しているからの考えなのですが・・・。 勝手な推論が有ってるとしますと、 元のシートを「ツール」-「VBAProjectのプロパティ」からロックするのではなく、マクロで設定してしまうというのはどうなのでしょうか? VBAからのVBAProjectのプロパティの編集は色々言われているようなのですが、 http://home.att.ne.jp/zeta/gen/excel/c04p68.htm こちらのサイトにあるように、出来るようなのでこういう方法はいかがでしょうか?
質問者
お礼
VBAからのVBAProjectのプロパティの編集ですか・・・。 エクセル2003からはVBAからのVBAProjectのプロパティの編集はできなくなったという思い込みがあったので試していませんでした。 No1さんのご回答で一応成功はしたのですが、今回は手作業で対応できましたがあらたに若干の問題が発生したため、今後のために試してみようと思います。 ありがとうございます。
お礼
早速のご回答、ありがとうございます。 新規作成をやめて、FileCopyですか・・・。 逆転の発想ですね。 これまでのThisWorkbookから、Sheets("Form")だけを、OriginBook.xls と別ファイルに独立させて以下のように試してみました。 Sub Sample() Dim myPth As String Dim myCl As Range Dim wb(1) As Workbook Set wb(0) = ThisWorkbook myPth = wb(0).Path With wb(0).Sheets("DATA") For Each myCl In wb(0).Sheets("Branch").Range("B2:B10") FileCopy myPth & "\OriginBook.xls", myPth & "\" & CStr(myCl.Value) & ".xls" Set wb(1) = Workbooks.Open(myPth & "\" & CStr(myCl.Value) & ".xls") .Range("A1:G1").AutoFilter Field:=2, Criteria1:=myCl.Value .UsedRange.SpecialCells(xlCellTypeVisible).Copy wb(1).Sheets("Form").Range("A1") wb(1).Sheets("Form").Name = CStr(myCl.Value) wb(1).Protect Password:="password" wb(1).Close True Set wb(1) = Nothing .ShowAllData Next myCl End With End Sub ちゃんとProjectがロックされたままです。 ありがとうございました。 ただ、あらたに別の問題が出てきました。 それはまた別質問で立てようと思います。