VBA ブックの共有の解除




VBAを使ってエクセルブックのの共有の解除をする方法です。
エクセル上だと[リボン]→[校閲]→[ブックの共有]→[複数ユーザーによる同時編集と、ブックの結合を許可する]のチェックを外すことと同じ動作を再現します。


ステートメント構文など
WorkBook.UnprotectSharing(SharingPassword)
WorkBook.ExclusiveAccess



サンプルコード(パスワード設定なし)
Sub kyoyu()
    ActiveWorkbook.UnprotectSharing
    ActiveWorkbook.ExclusiveAccess
End Sub


実行結果イメージ


解説
例としてActiveWorkbookに対して共有の解除をする処理をしています。

UnprotectSharingは共有保護を解除しブックを保存するメソッドです。
が、
単体だとなぜか動きません。
そこでExclusiveAccessで共有ファイルとして開いているブックを他のユーザーが変更できないようにしています。

この二つのメソッドを実行すると保護の解除の処理にすすみます。
「このブックの保護を解除すると、ファイルの変更の履歴が削除されます。また、共有を無効にすると、上書きせずにこのファイルを保存することはできなくなります。このファイルの保護を解除してもよろしいですか?」

というコメントが出て、「はい」か「いいえ」を選択し「はい」の場合は保護を解除します。
このアラートを出したくない場合は事前にApplication.DisplayAlerts = Falseと記述しておけば、 アラートなしで共有化が解除になります。




サンプルコード(共有パスワード設定あり)
Sub kyoyu()
    ActiveWorkbook.UnprotectSharing Sharingpassword:="1234"
End Sub




解説

UnprotectSharingのパラメータSharingpasswordを記述することによって エクセル上でいう「ブックの保護と共有」の「共有の解除」を実行します。
これで終わりです。

この場合はExclusiveAccessを記述していると
「ExclusiveAccessメソッドは失敗しました」というエラーが出てしまうので記述はいらないみたいです。


関連・類似ページ
ブックの共有化
ブックの保存
警告や確認メッセージを非表示にする