Thursday, January 5, 2012

Get data from a SQL Server Stored Procedure into Excel automatically


Do you want to get data from a stored procedure in SQL Server and have it drop right into MS Excel automatically? I recently needed just that, so follow this simple tutorial to get the job done right away...

How to run a SQL Stored Procedure from Excel without using VBA, and even include dynamic parameters that can be stored in cells in Microsoft Excel!!!

To pull data from a SQL Server Stored Procedure in Excel using parameters, do the following:

Excel 2007 Instructions:

1.  Select the Data tab on Excel's Ribbon, then within the Get Exernal Data group choose the "From other Sources" drop-down.  Then Choose "From Microsoft Query"

2.  Within "Choose Data Source" pop-up box, select your SQL Server, then hit OK.

3.  Close the "Add Tables" popup if necessary.

4.  Click on the "SQL" button, or choose View > SQL to open the SQL pop-up editor.

5.  Enter the following syntax:  {CALL myDatabaseName.dbo.myStoredProc (?, ?, ?)}

    For example:  {CALL northwind.dbo.spGetMaxCost (?, ?, ?)}

    Be sure to include the squiggly braces around the call statement. Each Question Mark (?) indicates a parameter. If your stored procedure calls for more or less parameters, add or subtract question marks as needed.

6.  Hit the OK button. A question box should pop-up saying "SQL Query can't be represented graphically, continue anyway?", just hit the OK button.

7.  You will now be asked for sample parameters for each question mark you included above. Enter valid parameter values for the data you are querying.

8.  Once you have entered the last parameter, you should get some results back in Microsoft Query. If they look good, close Microsoft Query.

9.  You should now be looking at an "Import Data" pop-up. Click the Properties button, which will bring up the "Connection Properties" pop-up.

10.  Select the Definition tab, then select the Parameters button. You should now see a "Parameters" pop-up, where you can connect the parameter to a specific cell.

11.  Select Get the value from the following cell, and then connect to an appropriate cell in Excel that will hold your parameter, by clicking the little box with the arrow.

12.  If you want the data to refresh every time you change the cell containing the parameter, check the box stating "Refresh automatically when cell value changes"

13.  Continue as above for the other parameters. When finished, click OK, to return to the Connection Properties pop-up. Click OK to return to the Import Data pop-up, and click OK again.

14.  You should now have some data straight from your stored procedure.

Hope this helps someone out there!

Here are some common error messages that you may experience when trying to do this...

     No value given for one or more required parameters.

     Parameters are not allowed in queries that can't be displayed graphically.

     Could not find stored procedure ...    

Tags and Common Search Phrases:

connect excel to stored procedure

Excel Get external data from stored procedure
Microsoft query to SQL Server stored procedure from excel
get data into excel from stored procedure
add parameters to excel for stored procedure