As you haven't posted the code you are using it is hard to know exactly what is happening.
I tried the following:
1. In a Master workbook I have a cell (B2) with a link to cell A1 in Update1.xls
1. The workbook named Update1.xls contains a link in cell A1 to the value in cell A1 of another workbook Update2.xls
2. Update1.xls is saved and closed (cell A1 shows the original value (999) of cell A1 in Update2.xls)
3. Update2.xls is opened and the value in cell A1 is changed (lets say from 999 to 911)
4. In my Master workbook I have a command button which will run a macro, which in turn runs a subroutine which opens Update2.xls, then Saves and Closes it.
5. By default Update1.xls updates its own linked cell from Update2.xls when it is opened.
6. The Update subroutine terminates after closing Update1.xls and returns control to the main macro.
7. The main macro now reads the value in cell B2 (this was the cell linked to Update1.xls)
8. The main macro creates my 'report' - in this example a message box, displaying the contents of cell B2
9. After clicking my command button, the main macro runs, opens, saves and closes Update1.xls and displays the value in B2
10. The value displayed was 911, i.e., Update1.xls had successfully opened, updated its link and closed, and the Master workbook's linked value had been updated, all before the main macro moved on to create the 'report'.
The above sequence appears to cover what you want to do.
Here is my macro, called from a command button:
Private Sub CommandButton1_Click()
Public Sub Update()