【VBA】Excelファイルをサーバー上(特定のパス上)で上書き保存できないようにする

サンプルプログラム概要

・「ThisWorkbook」の「Workbook_BeforeSave」を使用する

・「名前を付けて保存」はできる

・ここでは対象のExcelファイルパスに「C:\Users\user」が含まれている場合、上書き保存を不可にする

サンプルプログラム

●ThisWorkbookに以下を記載する。

'変数の宣言を必須
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
        Cancel As Boolean)
    
    '保存不可にするサーバー名(パス)
    Const SERVER_NAME As String = "C:\Users\user"
    
    If InStr(ThisWorkbook.Path, SERVER_NAME) > 0 And SaveAsUI = False Then
    
        MsgBox "サーバー上では上書き保存できません。" & vbCrLf & _
               "以下のどちらかで保存してください。" & vbCrLf & vbCrLf & _
               "・ローカル上にコピーしてから保存" & vbCrLf & _
               "・「名前を付けて保存」でローカル上に保存" & vbCrLf & vbCrLf & _
               "※「名前を付けて保存」でサーバー上に保存できてしまいますが、" & vbCrLf & _
               "  止めてください。" _
               , vbExclamation
        Cancel = True
    
    End If
    
End Sub

結果

指定したサーバー上(パス上)では、上書き保存できなくなる。

タイトルとURLをコピーしました