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"]];

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.?

  • $\begingroup$ Have you tried consulting the documentation centre ? $\endgroup$
    – Sektor
    Jan 20, 2014 at 11:39
  • $\begingroup$ Yes, and from that documentation I see no difference. i.e. two different ways to achieve the same end result. I was confused by the discussion between @AlexeyPopkov and Jacob which I took to suggest there is a difference between the two methods with regards to what happens in the FrontEnd vs kernel. $\endgroup$
    – tbtom
    Jan 20, 2014 at 15:22
  • $\begingroup$ NotebookEvaluate returns the last expression evaluated. Also, to make them more comparable you may have to add NotebookOpen[..., Visible->False] $\endgroup$
    – Rojo
    Jan 20, 2014 at 22:28
  • $\begingroup$ I suppose this may be the same case: mathematica.stackexchange.com/a/120963/5478, but I don't have time to try it now. $\endgroup$
    – Kuba
    Aug 3, 2016 at 7:27


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.