Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Excel 2007)
新規作成したBOOKを読取専用で保存する
投稿日時: 17/08/23 09:43:36
投稿者: HT

新規作成したBOOKを読取専用で保存する処理を下記にて作成し実行しましたが
保存されたファイルのプロパティを見ると読取専用にチェックがついていません
読取専用とならない原因をご教授ください
 
なお、下記処理は、マクロを実行するexcel内のシートにデータを作成し
そのシートを別bookにcopyし、その別bookに読取専用設定してそのbookを保存する
というものです
 
Dim WS As Worksheet
 
WSにデータを作成
 
WS.Select
WS.Copy 'データ作成されたシートを別BOOKにCOPY
 
ActiveWorkbook.SaveAs Filename:= _
  "C:\test.xls", FileFormat:= _
   xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
   , CreateBackup:=False '上記別BOOKをtestという名前で保存
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly '読取専用設定
ActiveWorkbook.Close

回答
投稿日時: 17/08/23 13:53:51
投稿者: WinArrow
投稿者のウェブサイトに移動

名前を付けて保存(SaveAS)メソッドの構文
式.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)
 
ReadOnlyRecommended引数をTRUEにしてみてください。
 
これは、当該ブックを開くとき「読み取り専用」で開くか問合せするものです。
 
保存と同時ではなくて
ファイルのプロパティでみて「読み取り専用」チェックを入れる状態にするならば
一度、当該ファイルをとしてから
 
SetAttr "C:\test.xls", 1
 
を実行すればよいでしょう。
 
 

回答
投稿日時: 17/08/23 17:43:20
投稿者: WinArrow
投稿者のウェブサイトに移動

>ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
の命令は、開いたブックのアクセスモードを変更する命令で、
ファイル保存には適用されません。
 
アクセスモードとは、
更新モード→参照モード  または、 その逆ですが、
アクセスモードを読み取り専用にすると、
上書き保存できなくなります。
 

回答
投稿日時: 17/08/23 18:53:08
投稿者: Suzu

こんにちは。
 
「読取専用」と HTさんがおっしゃっているのは
 
対象ファイルをエクスプローラー等で表示し、
  右クリック - プロパティー で 開かれる
   Windows上における、ファイルのプロパティー ウィンドの
   属性:読み取り専用
 
の事であるなら、
 
その機能自体がExcelの機能ではなく、Windowsの機能ですから
Windowsに対して命令をする必要があり その命令が SetAttr ステートメント です。
 
読取専用にするのは、具体的にどんな事を期待しているのでしょうか。

投稿日時: 17/08/24 11:10:41
投稿者: HT

SetAttrで解決しました。ありがとうございました
依頼の背景は、マクロで作成したシートを別bookに手動copyし保存していましたが
そのbookは社内の複数人が参照し、上書き更新されてしまうことを防止するため
別bookに作成・保存の際、手動で読取専用にチェックをつけるようにしていましたが
このチェック設定を忘れることがあり、設定も自動化シタ、というものです