I think this script will do it:
ON [sysjobs].[job_id] = [sysjobhistory].[job_id]
WHERE [step_id] > 0;
Just add an extra part on the WHERE clause to capture your run_duration limit. That will tell you all jobs that have run on the server and when they ran, how long they ran for, etc. It shows basically the same thing that you'd see from the job history. You could filter that down to a specific job if you wanted as well by filtering on sysjobs.name or a specific job step.
As for exporting that to Excel, in Excel you can set SQL as a data source, put that query in (remove the USE [msdb] GO part and set the connection to be on msdb though) and then whenever you click on "Refresh All" on the data tab, it will pull in the current information.
I did where step_id > 0 because step id of 0 is for the job; you may want to include that.