If you have focus on B you can do a hard recalculate, ctrl+shift+F9, whether or not A is saved. If you can get a handle for B within a macro in A, you could have that macro do a hard recalculate via the DispatchHelper passing in B.
Sub SaveEvent()
Dim Frame As Object
Dim Dispatcher As Object
FileBComponentHandle = ...
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Frame = FileBComponentHandle.CurrentController.Frame
Dispatcher.executeDispatch(Frame, ".uno:CalculateHard", "", 0, Array())
End Sub
Maybe? I didn’t have any luck getting that handle via, say, Frame.LoadComponentFromURL using
Sub HardUpdateSink()
Dim URL As Variant
Dim Frame As Object
Dim Dispatcher as Object
Dim Sink As Object
Dim Prop(1) As New com.sun.star.beans.PropertyValue
URL = convertToURL("'file:///C:/.../Sink.ods'")
Dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Prop(0).name="FilterName"
Prop(0).value="calc8"
Sink = ThisComponent.CurrentController.Frame.LoadComponentFromURL(URL, "_blank",0, Prop())
Dispatcher.executeDispatch(Sink.CurrentController.Frame, ".uno:CalculateHard", "", 0, Array())
End Sub
Boiled down to LO saying I didn’t have sufficient user rights. Maybe others can shed light on that. It’s a little out of my comfort zone.