- 締切済み
Excel VBA ファイルが使用可能になれば 自動実行する仕組み
Excel のマクロで、読み取り専用から編集状態に入ったときに 自動実行される仕組みは作れないものでしょうか? どんなシチュエーションかというと… ------------------------------------------------------------ 1.Aさんが \\Folder\File1.xls を開く 2.Bさんが \\Folder\File1.xls を開くと、読み取り専用になって開く 3.Aさんがファイルを閉じる 4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) 5.Bさん【編集】するをクリックする この、5.Bさんが編集可能になった時点で、自動で実行するマクロを記述したいんです。 エクセルを開くときに自動実行するマクロありますよね。(Auto_Open() や、WorkBook_Open() など) そういう感じで 編集可能になったら走るマクロって可能でしょうか。 理由は、このファイルを開くと同時に上書き保存してるんですが (BuiltinDocumentProperties("Last author") ←の値をとるためです) 今度また別の人が開いたとき、今はBさんが編集しているのに 最終保存者=Aさんの名前で 使用者通知がされてしまうのです。 さらに補足しますと、マクロで制御しないと 「このファイルは Aさんが使ってます。読み取り専用で開く?」が 表示された後 「キャンセル」を選択すると 異常終了してしまうので "Last author"を取得する方法しかないんです。(他にあったりして?) 理想は、 4.Bさんに「使用可能」通知が来る(編集しますか?と聞かれる) の表示をさせずに マクロの制御で 「使用可能になりました。いったん閉じてから再度開き直してください」 という仕組みに出来たら最高です。 長くなりましたがよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- end-u
- ベストアンサー率79% (496/625)
んー…失礼しました。私のほうも再現できました。 1)Aさんが \\Folder\File1.xls を開く 2)Aさんが \\Folder\File1.xls を保存する 3)Bさんが \\Folder\File1.xls を開く(読み取り専用) 4)Aさんが(2)の後、保存せずにファイルを閉じる 5)Bさんが「使用可能」通知で[編集]クリックする このような条件の時は開き直さなくてもいい時があるみたいですね。 前編集者が開いて一度は保存しないとダメなようです。 その後に次の編集者が開いて、以降保存されてない場合は「読み取り専用」の解除だけでいけるようです。 この条件を満たしていれば、次の編集者が編集していても「読み取り専用」の解除だけで済むというのは意外でした。 ありがとうございます、勉強になりました。 #全てのパターンを試したわけではないので、他にも条件があるのかもしれません。 #あったらご教示お願いします。 #複数編集者のリレー状態だと上記条件だけではないようですし。 となると、どのように対応しましょうかね... 安易に考えると、Close時に必ず上書き保存するようにすればいいような感じですが、 実務面を考えるとちょっと危険な気もしますし。 保存しないつもりで仮作業を行うケース、などを除外するよう運用面で考慮(Closeに保存必須を了解事項としておくとか) ...というのもありでしょうか? ただ >今度また別の人が開いたとき、今はBさんが編集しているのに >最終保存者=Aさんの名前で 使用者通知がされてしまうのです。 これは、 AさんOpen→BさんOpen→AさんClose→CさんOpen の時に『使用者は'Aさん'です』という既定メッセージが出るという事でしょうか? Excel既定のメッセージを使うのであれば、その時点での編集者のBさんが表示されると思うのですが、 これもまた何かの条件によって違いがあります? あと、 >マクロで制御しないと >「このファイルは Aさんが使ってます。読み取り専用で開く?」が >表示された後 「キャンセル」を選択すると 異常終了してしまうので >"Last author"を取得する方法しかないんです。(他にあったりして?) この『異常終了』が回避できれば、Excel既定のメッセージを使う、という解釈で良いのでしょうか?
- end-u
- ベストアンサー率79% (496/625)
どんな環境ですか? winXP/xl97,2000,2003,2007で確認済みですが、開き直されます。 マクロのセキュリティなど確認してみてください。 念のためWorkBook_Open()とAuto_Open()だけの新規Bookでテストしてみるのも良いかもしれません。
- end-u
- ベストアンサー率79% (496/625)
Bさんが[通知]オプションで読み取り専用で開いた場合、「ファイル使用可能」通知の[編集]をクリックするとBookが開き直されますよね。 つまりWorkBook_Open()やAuto_Open()が使えませんか?
お礼
ありがとうございます。 あれからこんな実験してみました。 WorkBook_Open() の中で MsgBox "WorkBook_Open を通ってます" Auto_Open()の中で MsgBox "Auto_Open を通ってます" 「ファイル使用可能」通知の[編集]をクリックするとBookが開き直されるのであれば上記のメッセージが出るはず…? ところが結果は、出ませんでした。 きっとBookが開き直されたのではなく 「読み取り専用」モードが「編集」モードに切り替わったのではという気がします。