Microsoft 製品に組み込まれている Visual Basic の実装。
もしかして、この関数を使うさい、
=isbookopen("yyy")
のように、ファイル名だけを使われてませんか?
=isbookopen("yyy.xlsx")
にしてみてください。
ただし、このVolatileってのは結構厄介で、なにか変る度に呼ばれます。
変わる度ってことなんでしょうが、テストした、このマクロだけを入れて、手動で対象ブックを開いた場合3回くらい呼ばれているようです。
ですから、実際に関数は正しく動いていても、一度正しく値がセットされ、それから更に呼ばれて値が変わりおもってらっしゃるのと違う結果が残るなんてことが普通に起こります。
具体的な例は覚えてませんが昔Volatileで理解不能な動きに見えて納得するまでに大汗をかいたことがあります。
もし、ファイル名を拡張子まで入れておられるのでしたら、↑の現象を疑う必要がありそうです。
参考まで。