When I open an excel file (generated through VBA code), I get an error
"Excel found unreadable content in <filename>. Do you want to recover the contents?"
Upon clicking yes, I get a message
'Repairs were made to PivotTable report 'pvtName' on '[filename.xls]Tab'.'
The pivot table in question is generated by the VBA code. Is there a way to figure out what repairs are being done on the pivot table, so that I can make the necessary changes in the code before the file is generated?
Thanks :)
This issue was resolved by making sure the file extension was .xlsm and the FileFormat 52 (Macro Enabled Workbook).
However, users with Excel 2003 won't be able to view the pivot table properly.
If someone has a better workaround, please let me know.
Related
I'm getting more and more Sheets in my workbook?
Does anybody know how I delete these additional sheets?
I'm running excel 365 and the file is located on a sharepoint.
Any help is appreciated.
Ok. I haven't had any luck regarding this issue. However, I found others dealing with the same issue. The solution I came up with might help, and is quite simple:
Save the document as a xlsx file. This deletes the phantom sheets. Then manually transfer forms and macros and save the document as an xlsm file. Not a pretty solution. But it works.
I am getting an error when opening excel: We found a problem with some content in XXX. Do you want us to try and recover as much as we can? if you trust he source of this workbook, click Yes."
clicking Yes, "fixes" the issue but deletes a lot of VBA code, two weeks worth.
Whatever the issue it was introduced yesterday, I do not want to redo two weeks worth of coding. Is there anyway I can view what was removed, or open the VBA in notepad++ or something without opening the excel?
I opened another excel workbook and tried all the different options for the argument XlCorruptLoad in the Workbooks.Open to open the corrupt workbook. I noticed that there were two non existing sheets created in the project explroer of the corrupt workbook that had the code in there. I am not sure if it did that s a result of what I did or it was there all along and I did not notice it
Note that the reason I had a corrupted data is because the code was extracting a list and putting it in a cell validation formula..i guess I overloaded it.
I have a Workbook D:\Sales.xlsx with a sheet named Orders. In this sheet there is a smart Table (Ctrl + T) named tblOrders.
In another Workbook E:\Reports.xlsx there is a sheet pvtOrders. When I create a pivot in this pvtOrders sheet and give D:\Sales.xlsx!tblOrders as datasource, it works fine while the source workbook Sales.xlsx is open in the same Excel instance. When the source is closed or opened in other Excel instance however refreshing of the pivot-Table is not working anymore. Excel prompts "Invalid reference" or similar (tested in Excel 2010, 2013).
The same problem is with a "normal" named range as source for the pivot table. However in this case there is no error prompt.
Is it a normal behavior? Is there a simple solution or at least a workaround without opening the source?
Thanks for any help
from my experience you need to have them open. have you considered merging both files? it might make things easier.
I've written a script that builds excel reports. These reports may include pivot tables. To refresh a pivot table on load, I added refreshOnLoad="1" parameter to pivotCacheDefinition1.xml file. It works good with only one minor thing that I do not like - when I open a report, excel asks me "do you want to replace the contents of the destination cells"? I press "ok" and it refreshes pivot tables. I do not like this pop-up window with this question, and I think it's obvious that if refreshOnLoad="1" is specified then contents should always be refreshed. So, my question is how to suppress this window from popping up?
EDIT
According to this thread:
Whenever Excel will find that the update of it will replace the content of any existing cell,it will warn you.It is important feature.
So, does it mean that Excel will always warn, when it sees that pivot table contents should be refreshed?
EDIT
It seems like my problem is similar to this one. However, I'm not using VB macros, I'm building my reports with some other programming language (which programmatically unzips xlsx file and deals with all those xml files inside).
EDIT
Well, I tried both Application.AlertBeforeOverwriting = False and Application.DisplayAlerts = False, but none of them works.
I haven't been able to reproduce the problem, so these are more suggestions than answers.
I think the commands you are trying are occurring too late - Excel needs to know "not to alert before overwriting" before it tries to refresh. If it refreshes on open, then you set the property, you have the wrong sequence of events.
Try:
Do NOT put refreshOnLoad="1" in your file.
Add the VBA routine Workbook_Open() to the workbook.
In the VBA routine, set the property Application.AlertBeforeOverwriting = False, then invoke the method PivotTable.Refresh.
This should resolve any "sequence of events" problems.
Current Excel Report is created using Jasper Server / Jasper Report 3.8.
In my case , I would like to create Pivot Excel automatically using Excel(Since Jasper Report Crosstab is not sufficient for my client requirement), so i have an idea to add VB Script that will create Pivot Table when the generated jasper report is opened for first time.
I have created the VBA script However I couldn`t find a way to integrate the VBA with Jasper Report (generated) so that when I generated the Report, the VBA is also included in the Report.
Could anyone tell me how to to add VB Excel Script in Excel Generated Jasper Report?
Added Constraint:
List item
The Data Source (Excel File Containing Data) is protected
I know the question has been answered and accepted, but I just cannot resist to add a thought .....
Could it be that this question is asking to put the cart in front of the horse?
You create an Excel File REP using a report generator. Then you want to use this data as the source of an Excel Pivot table. As I see it there are a couple of possibilities to do that:
Create another Excel file PIV containing a structure of REP with some sample data to create the Pivot definitions
Copy / Paste the REP data replacing the existing content each time you draw a new REP
refresh the Pivot
This can be automated in PIV, asking for the source file name etc., so there is actually no need to touch REP in any way. As an alternative to copy / paste you can just use an external link to REP when you specify the data source for the pivot table, and change this every time the user wants to analyze a new REP.
Hope this helps
I think MikeD has the right idea here. I've never used Jasper, but if it's a CSV or Excel file, why not write a block in your macro script that opens the Jasper report, makes the pivot table then saves it again.
It's honestly been years since I've done VBA but this code was what I found online for opening workbooks (ref: http://p2p.wrox.com/excel-vba/10510-opening-excel-file-vba.html)
Dim oExcel as Excel.Application
Dim oWB as Workbook
Set oExcel = new Excel.Application
Set oWB = oExcel.Workbooks.Open(<pathToWorkbookHere>)
Forgive the syntax on this as it's from 10 year old memories, but from there, you could do things like
oWB.Sheets(1).Cells.Copy
ThisWorkBook.Sheets("PIVOTDATA").Cells.Paste()
ThisWorkBook.Sheets("PIVOTTABLE").Cells.Refresh
ThisWorkBook.Saveas("<path to new report>", xlExcel12)
If your reports are done by date, you could programatically select either the latest, load the folder and parse all of them, or whatever you'd like. Your template file is the one running the script, and saves copies of itself in a "does not contain a macro" state, so your users never get the security warning.
If you correctly determine the filename programatically, set the code to run "ON OPEN" in the template macro, and run a thisworkbook.close at the end of the script, all you've got to do is create a batch file that opens your workbook automatically on the command line
excel.exe <template_filename>
then set a windows cron-job (called a scheduled task) to run automatically every day, right after your jasper report runs.
Sorry if some of this is "hit and miss" in terms of syntax. I've not been elbows deep in Excel VBA for over 10 years, but I wrote a system like this at the time that was generating hundreds of beautifully formatted excel reports every day ... pivot tables and all.
It's totally achievable and you're on the right track.
By looking the answer on Jasper Tracker, seem that this feature is not supported by jasper report and will not be including in new feature
this (Adding VBA Script to Excel Generated Jasper Report) is such a specific Excel feature that I'm pretty sure we will
never implement. This is mostly because JasperReports is not an XLS
generating library, but rather a reporting tool with Excel output
capabilities
See this link for detail.