重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記の通りのマクロで、ブックの保護ができません。
なぜでしょう?
シート保護はできます。

Sub ファイル一覧作成_Click()

Const cnsTitle = "ファイル一覧作成"
Const cnsDIR = "\*.*"
Dim strPath As String
Dim strFilename As String
Dim Dstbook As Workbook
Dim filelist As Worksheet
Dim GYO1 As Long

' フォルダの場所を指定する
strPath = Range("B2").Value

' フォルダの存在確認
If Dir(strPath, vbDirectory) = "" Then
MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle
Exit Sub
End If

Set Dstbook = Workbooks("2019年調査ファイル保護・解除.xlsm")
Set filelist = Dstbook.Sheets("読み込むファイル一覧")

'前のデータ削除
filelist.Range("A2").CurrentRegion.Offset(1, 0).ClearContents

' strPathフォルダ配下のファイル一覧作成
' 先頭のファイル名の取得
strFilename = Dir(strPath & cnsDIR, vbNormal)
' ファイルが見つからなくなるまで繰り返す
GYO1 = 2
Do While strFilename <> ""
filelist.Cells(GYO1, 1).Value = strFilename
filelist.Cells(GYO1, 2).Value = strPath & "\" & strFilename
GYO1 = GYO1 + 1
' 次のファイル名を取得
strFilename = Dir()
Loop

'ソート
Range("A1").CurrentRegion.Sort key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

End Sub

Sub ブック保護_Click()
Dim Srcbook As Workbook
Dim Dstbook As Workbook
Dim Dstsheet As Worksheet
Dim filelist As Worksheet
Dim r As Range
Dim file_name As String

Set Dstbook = Workbooks("2019年調査ファイル保護・解除.xlsm")
Set filelist = Dstbook.Sheets("読み込むファイル一覧")
Application.ScreenUpdating = False
For Each r In filelist.Range("B2:B700")
file_name = r.Value
Set Srcbook = Workbooks.Open(fileName:=file_name, UpdateLinks:=0)
Srcbook.Protect Password:="20190828", Structure:=True, Windows:=False
Srcbook.Close SaveChanges:=True
Next r

Application.ScreenUpdating = True
End Sub

Sub シート保護_Click()
Dim Srcbook As Workbook
Dim Dstbook As Workbook
Dim Srcsheet As Worksheet
Dim Dstsheet As Worksheet
Dim filelist As Worksheet
Dim r As Range
Dim file_name As String

Set Dstbook = Workbooks("2019年調査ファイル保護・解除.xlsm")
Set filelist = Dstbook.Sheets("読み込むファイル一覧")
Application.ScreenUpdating = False
For Each r In filelist.Range("B2:B700")
file_name = r.Value
Set Srcbook = Workbooks.Open(fileName:=file_name, UpdateLinks:=0)
Set Srcsheet = Srcbook.Sheets("調査情報")
Srcsheet.Protect Password:="20190828"
Srcbook.Close SaveChanges:=True
Next r

Application.ScreenUpdating = True
End Sub

A 回答 (1件)

試してみましたが、なぜか?


Srcbook.Close SaveChanges:=True(変更があった場合、保存して閉じる)が機能せず

文字通り
Srcbook.Save
Srcbook.Close
としたら、ブック保護がかかりました。??
    • good
    • 1
この回答へのお礼

助かりました

回答ありがとうございます!
お早い回答で、すぐ役立ちました♪(๑ᴖ◡ᴖ๑)♪
ブック保護は、変更として認識されないんですかね。
いずれにせよ、やりたいことは、完遂できましたので、よかったです!

お礼日時:2019/08/29 13:16

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