Excel (VBA)

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

 
(Windows 10 Pro : Excel 2019)
フォルダ内複数エクセルファイルシートの一括パスワード解除マクロにメニュー表示目盛線と見出しチェックの追加マクロを記載して欲しい
投稿日時: 22/06/01 14:45:19
投稿者: ふく@たろう

下記はフォルダ内エクセルファイルシートパスワード一括解除のマクロです。これに全シート表示の目盛線と見出しにチェックを入れるマクロ記載を追加して下さい。
 
Sub 選択フォルダ内保護全て解除()
Dim myFol As Object, myFile As Object, sh As Worksheet
Dim openFilePath As String
Const myPass As String = "p"
Set myFol = CreateObject("Shell.Application").BrowseForFolder(0, "フォルダを選択してください", 0)
If myFol Is Nothing Then Exit Sub
Application.ScreenUpdating = False
openFilePath = myFol.self.Path & "\"
With CreateObject("Scripting.FileSystemObject")
For Each myFile In .GetFolder(openFilePath).Files
If .GetExtensionName(myFile.Path) = "xlsx" Then
With Application.Workbooks.Open(myFile.Path)
For Each sh In .Worksheets
sh.Unprotect Password:=myPass
 
Next sh
.Unprotect Password:=myPass
.Save
.Close False
End With
End If
Next myFile
End With
MsgBox "終了しました"
End Sub

回答
投稿日時: 22/06/01 18:09:49
投稿者: simple

こんにちは。
まずご自分で簡単な例でマクロ記録をとってみてはいかがですか?
それを既存のマクロに挿入すればよいと思います。
 
不明であれば、マクロ記録の結果と、挿入したコードを再掲載してください。
なお、インデントをつけたほうがあなたにとって見やすく、今後の手当にも有益だと思います。

回答
投稿日時: 22/06/01 22:29:46
投稿者: simple

待っていても仕方がないので、コメントしておきます。
各シートに対して、
  選択して、ActiveWindowに対して、マクロ記録の結果のコード適用
を繰り返しても同じ結果が得られますが、
下記のような方法もあります。
参考までにコードを提示しておきます。
 

Sub 選択フォルダ内保護全て解除()
    Dim myFol As Object, myFile As Object, sh As Worksheet
    Dim openFilePath As String
    Const myPass As String = "p"
    Dim sv As WorksheetView                                 '■追加
    
    Set myFol = CreateObject("Shell.Application") _
                .BrowseForFolder(0, "フォルダを選択してください", 0)
    If myFol Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    openFilePath = myFol.self.Path & "\"
    With CreateObject("Scripting.FileSystemObject")
        For Each myFile In .GetFolder(openFilePath).Files
            If .GetExtensionName(myFile.Path) = "xlsx" Then
                With Application.Workbooks.Open(myFile.Path)
                    For Each sh In .Worksheets
                        sh.Unprotect Password:=myPass
                    Next sh
                    .Unprotect Password:=myPass
                    For Each sv In .Windows(1).SheetViews  '■追加
                        sv.DisplayHeadings = True          '■追加
                        sv.DisplayGridlines = True         '■追加
                    Next                                   '■追加
                    .Save
                    .Close False
                End With
            End If
        Next myFile
    End With
    MsgBox "終了しました"
End Sub

なお、各ブックにはWindowsがひとつしかないことを前提としています。
("新しいウインドウを開く"などしなければ前提を満たします)

投稿日時: 22/06/02 09:26:32
投稿者: ふく@たろう

simple様
 
大変、有難うございました。
まだVBAを勉強し始めて1ヶ月の為、中々編集が上手くいかず困って
いたところ助けていただき有難うございます。
 
仕事上、300件以上のファイルを同一作業しているため、今回の
対応で時間短縮する事ができました。