Excel

【Excel】VBAマクロで読み取り専用を解除する方法【Workbook_Open, SaveAs, FileSystemObject】

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、ExcelのVBAマクロを使用して読み取り専用の設定を解除する方法について解説していきます。

ポイントとしては`Workbook_Open`, `SaveAs`, `FileSystemObject`の関数を使用することです。

解説では初心者にも理解しやすいように、変数名を独特な表現で示しています。

実用時には、より標準的な英語の変数名に変更してご利用ください。

それでは詳しく見ていきましょう!

VBAマクロで読み取り専用を解除し上書き保存する方法

それではまず、読み取り専用を解除し上書き保存する方法について解説していきます。

「Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。」


Sub JyomiTorikesiToUwagakiHozon()
    Dim hozonPath As String
    hozonPath = ThisWorkbook.FullName
    If ThisWorkbook.ReadOnly Then
        ThisWorkbook.SaveAs Filename:=hozonPath, AccessMode:=xlExclusive
        MsgBox "読み取り専用を解除しました。"
    Else
        MsgBox "このファイルは読み取り専用ではありません。"
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面で`JyomiTorikesiToUwagakiHozon`関数を実行します。

このコードでは、現在開いているワークブックが読み取り専用の場合、その設定を解除して上書き保存します。

VBAマクロで読み取り専用を解除し別名保存する方法【betsu.xlsxという名前で】

続いては、読み取り専用を解除し別名で保存する方法について解説していきます。

「Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。」


Sub JyomiTorikesiToBetsuHozon()
    Dim hozonPath As String
    hozonPath = ThisWorkbook.Path & "\betsu.xlsx"
    If ThisWorkbook.ReadOnly Then
        ThisWorkbook.SaveAs Filename:=hozonPath
        MsgBox "読み取り専用を解除し別名で保存しました。"
    Else
        MsgBox "このファイルは読み取り専用ではありません。"
    End If
End Sub

コードのAlt+F8を押し、マクロ選択画面で`JyomiTorikesiToBetsuHozon`関数を実行します。

このコードでは、読み取り専用のファイルを別の名前「betsu.xlsx」で保存します。

 

VBAマクロで指定フォルダの全てのエクセルファイルの読み取り専用を解除し、別名保存する方法【betru1.xlsxなどの連番の名前で】

次に、指定フォルダ内の全エクセルファイルの読み取り専用を解除し、別名で保存する方法について解説します。

「Alt + F11にてVBE画面を開いて、以下コードをコピペし

ましょう。」


Sub ZenFileJyomiTorikesiToBetsuHozon()
    Dim targetFolder As String
    Dim fileName As String
    Dim fileIndex As Integer
    Dim fso As Object, folder As Object, file As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    targetFolder = "C:\YourFolderPath"  ' ここにフォルダパスを設定
    fileIndex = 1
    
    Set folder = fso.GetFolder(targetFolder)
    For Each file In folder.Files
        If fso.GetExtensionName(file.Name) = "xlsx" Then
            Workbooks.Open(file.Path).SaveAs Filename:=targetFolder & "\betru" & fileIndex & ".xlsx"
            fileIndex = fileIndex + 1
        End If
    Next file
    MsgBox "全てのファイルの読み取り専用を解除し、別名で保存しました。"
End Sub

コードのAlt+F8を押し、マクロ選択画面で`ZenFileJyomiTorikesiToBetsuHozon`関数を実行します。このコードは指定されたフォルダ内の全てのExcelファイルを開き、連番のファイル名で別名保存します。

【FileSystemObject, SaveAs】