VBA as data source for Excel - excel

I would like to have VBA generate some data for an Excel Pivot table. VBA will then recalulate the data and the pivot will update based on that.
Question: Is it possible to have VBA be a direct data source for the pivot or do I need to write down in a file from VBA and have the pitot refresh itself from there?
The direct data source gives me the advantage that I can create multi-dimensional data and not only a 2D matrix.
I can see I can choose a lot of data sources and I could write some data in one of these formats from VBA.
So for example I could choose to generate an xml file from VBA, and then have a pivot table use that xml file as its source. I guess it would be a bad idea to emulate the OLAP cubes from the SQL Server in VBA!
Damian

For OLAP cubes, the Microsoft Excel is a very good viewer, but if you have access to Analysis Server tool, you will prefer use it.
But, Excel can connect to SQL Server by itself. Have you tried? It is in Data menu.

Related

Excel PowerPivot - change data source type

I have an Excel 2016 with 30 graphs based on PowerPivot. PowerPivot fetches the data from another Excel sheet, but I want it to get the data from a SQL server table instead.
How can I change the data source type in PowerPivot? I've tried looking in the Excel xml without any luck. Would be a lot of work re-creating all graphs over again just to switch data source
Thanks
Dennis
One suggestion I would make for the future, if all the users are using 2016 is to use Power Query which comes standard with that version of excel. In the Power Query loading data into Power Pivot scenario, all Power Pivot cares about is the column names. This means that the query can be changed between data source types without causing issues, as long as the same column names are changed.
As an example, I have one file that based on a parameter flag rips data out of a series of excel files on a shared network drive or Share Point. Both of which would be different data sources. The first opening a folder as the data source, then excel files listed within the folder. The other opening a share point list as its data source, then navigating though excel files.

Has anyone achieved to use ODBC connection from Excel file into Powerpivot?

I have installed Powerpivot for Excel 2010. I don't have Access 2010 so I thought could I arrange the data in the similar manner as I would for a database.
I'm wanting to query an excel file that has rows of self-generated data into Powerpivot in order to perform simple pivot table. In a sense attempt to get an overview of information about a data set.
At the moment, I'm unable to get set up correctly the ODBC I'm hoping I need to accept an Excel file and to get PowerPivot to accept a database from an Excel file.
Edit: I come to understand that I need to set up a table correctly in Excel so that the ODBC works correctly. Does the picture I provided be right manner to set up a table or any other manner?
Has anyone attempted to do this and if so what would the steps be?
Thanks,
Peter.
Peter, I am working on the basis that your data is in a recognizable table on a worksheet (and that you are not interested in using the standard Excel import method through 'From Other Sources')
If you create the connection to the Excel file in a very particular way it is possible to then query it as if it were a database.
Create a Connection to the spreadsheet in question in Excel through Data>Connections>Add.
In the PowerPivot window on the Design tab click on existing connections and find the connection you just created. Select the connection and Open.
You need to name the connection and then you will be offered the normal import options. Select the sheet you want to get the table from (its actually not important which one you choose at this point).
Once the table has been imported you can re-enter the setup through the 'table properties' on the design tab and you will now be able to 'Switch to' the query editor at which point you can not only write SQL to query your DB but reference any other .xlsx you like.
Jacob
the easiest way is to use a linked table from the excel sheet which has the data - is there any reason why you have not considered this as an option?

How to get Excel to interact with .NET or PowerShell or OData

I have a few thousand rows of history data that I want Excel to access. This data will be used in creating a summary report, sparklines, and a table data.
My question is how should I go about adding new rows to the datasource? Powershell is required to extract data from the source (Exchange Server)... but then how do I surface that extracted data to Excel2010?
Here are my ideas:
1) Powershell can run externally and save the data to the XLSX (as long as the spreadsheet is closed) using Open XML libraries
2) Use Excel vb macros to call COM via interop (C# object) to get the data from Powershell. The returned values go to the XLSX (Ugly)
3) ????
(Advanced, not sure if this idea will work with above mentioned features)
If I were to move these rows to an external sheet, or SQL table, then I'd rather use other ways of importing the data into excel. I dont' know if this will work with sparklines, or tables. Perhaps I could use OData since it appears to be the most lightweight and firewall friendly.
If you have the external data in SQL Server, Access or another Excel file, it's trivial to access it using Data>Connections. The data will automatically be formatted as an Excel table with all of Excel's features available.

MS Excel - Pivot Table - Accessing the source data when it isn't a tab in the spreadsheet

I have a spreadsheet that is emailed to me by an outside vender. It contains a bunch of pivot tables. I really couldn't care less about the pivot tables, I just want the underlying data. The data comes from a sql server that I don't have access to, but the data is stored within the spreadsheet. Is there anyway that I can access the data, (I think it's the PivotCache) directly without drilling into one of the pivot tables?
I'd love some sort of ODBC/ADO.Net command that I can use from SSIS. But am open to just about anything that doens't require me to open and save the workbook.
I'd also like to avoid macros if at all possible.
Here's the answer. Or at least what I did to resolve my problem.
There is really no way to accss the underlying PivotCache data except via pivot tables. So direct accss was out. I ended up using a script task with excel ole to dynamically create a pivot table with the data I needed at run time. Once the script task is done, I then use the new pivot table as my dataflow source. Excel can be a little tricky to automate, but it's worth it.

Save Excel sheet into SQL

Excel has a Get External Data ribbon bar in the Data tab where we can choose to import tables from SQL databases. This process worked out nicely for me. But my question is, is there any way to save this data back into SQL? Does Excel provide some API that facilitates the coding of such a function without parsing everything and doing it from scratch?
Thanks
It may not be the solution you are looking for, but I posted some VBA code a long while back that will take a range in Excel and convert it to XML and builds the SQL to put that data into a temp table in SQL Server. Here's a link if you are interested.
The easiest way to do this is to use the import function within SSMS. You can select which sheets to use, customise column mappings and so on. If creates an SSIS that you can then manipulate further if required. However that approach is a pull from Sql, not a push from Excel, if you want to do that you'd have to code some VBA to do it for you.
Non-programmatically:
http://office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx
Programmatically - I can only think of the OpenRowSet function in MSSQL:
http://www.mssqltips.com/tip.asp?tip=1540
http://www.sql-server-helper.com/tips/read-import-excel-file-p01.aspx
Using openrowset to read an Excel file into a temp table; how do I reference that table?

Resources