I am wondering what exactly are the differences in using
NotebookEvaluate[filename]
vs FrontEndExecute[FrontEndToken[nb, "EvaluateInitialization"]]
;
to evaluate cells in a given notebook.
In particular, I am referring to the discussion: Evaluate Initialization Cells of another notebook. Given my new status here, I couldn't see how I could continue with that conversation directly, so I decided to post a new queston.
The comments in the referenced question proposed these two solutions to the problem:
method 1.
filename = SystemDialogInput["FileOpen"]; NotebookEvaluate[filename, EvaluationElements -> "InitializationCell"]
method 2.
filename = SystemDialogInput["FileOpen"]; nb = NotebookOpen[filename]; FrontEndExecute[FrontEndToken[nb, "EvaluateInitialization"]]; NotebookClose[nb]
I am trying to solve the same problem. Taken at face value, it seems both approaches are valid. Are there any subtleties that make one preferred to the other, issues of scope/context, etc.?
NotebookEvaluate
returns the last expression evaluated. Also, to make them more comparable you may have to addNotebookOpen[..., Visible->False]
$\endgroup$