A very useful question.
One option is to make use of the Simulation Object and not let the model skip the experiment and run the model.

This will just give you some more control over your model execution and you can use some of the before and after simulation run code.
Image the following super-simple model

I have a single parameter and an event that traces the parameter and then stops the simulation.
Then on Experiment I have an Excel object, and a variable that is linked to the parameters on main, and a button that just calls run()

The excel file has some simple data in

Now on the experiment's Java section you only need to add the following code.

This ensures that the variable is updated with the correct data based on the run count, and that when you stop the model it will call the run function again if there is more values in the Excel sheet to load.
Note that the row index in Excel starts at 1 and that we have a header for our data so we want to start at row 2, hence I added 2 + getExperiment().getRunCount()
If you run this simple model you will see in the Console printed out the values from the Excel file.
10.0
20.0
30.0