« 一定時間だけ実行する | トップページ | Excelが保存時にエラーや強制終了した場合の対処法 »

2011年12月20日 (火)

使用中のファイルを開く、開かない

手動で使用中のブックを開こうとすると
次のようなダイアログが表示されます。

Vba20111015a

この場合、開きたいブックを
読み取り専用で開くかキャンセルします。

読み取り専用で開く場合は、
他の人がファイルの使用を終了したとき
通知を受け取るかを選択できます。

VBAで使用中のブックを開こうとすると
次のようなダイアログが表示されます。

Vba20111015b

まずこの警告ダイアログを表示させなくします。

Application.DisplayAlerts = False

上のコードでこの警告ダイアログは表示されなくなります。
この場合、開いたブックは読み取り専用になります。

他の人がファイルの使用を終了したとき
通知を受け取るにはOpenメソッドで
Notify引数をTrueにします。

Workbooks.Open Filename:="フルパス", Notify:=True

通知は次のダイアログです。

Vba20111015c

VBAで全部をやろうとしているときは
このダイアログが出ると中断されますので
通知を受け取らないほうがいいと思います。

使用中のファイルを開くコードはこちら

使用中のファイルを開くコード:

Sub macro111015a()
'使用中のファイルを開く
'読み取り専用

    Application.DisplayAlerts = False
    Workbooks.Open Filename:="フルパス", Notify:=False
    Application.DisplayAlerts = True

End Sub

次は、ブックが使用中なら開かない場合をします。

細かく言うと一回は開きます。
ブックを一旦開いて使用中なら閉じるという操作をします。

まず、ブックが使用中であるかを判別する方法です。

使用中のファイルは
読み取り専用でしか開けないことを利用します。
目的のファイルを一旦開いて
このファイルが読み取り専用なら使用中と判断します。

ファイルが読み取り専用かは、次のプロパティでわかります。

ActiveWorkbook.ReadOnly

Trueなら読み取り専用です。

コードはこちら

ブックが使用中なら開かないコード:

Sub macro111015b()
'使用中のファイルを開かない
   
    Application.DisplayAlerts = False
    Workbooks.Open Filename:="フルパス", Notify:=False
   
    If ActiveWorkbook.ReadOnly Then
        ActiveWorkbook.Close
    End If
   
    Application.DisplayAlerts = True

End Sub

共有フォルダに入ったExcelのファイルを
複数のパソコンで使おうとするとき、
強制終了が起きてExcelが終了することが多いです。
また、強制終了が起きたファイルは開けなくなることがよくあります。

複数のパソコンで1つのファイルを開いたり保存したりする場合は
バックアップをこまめにした方がよいです。

|

« 一定時間だけ実行する | トップページ | Excelが保存時にエラーや強制終了した場合の対処法 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 使用中のファイルを開く、開かない:

« 一定時間だけ実行する | トップページ | Excelが保存時にエラーや強制終了した場合の対処法 »