Office Automation :: Invalid Index. (Exception From HRESULT: 0x8002000B (DISP_E_BADINDEX))
Apr 20, 2009
I have a windows form application in Vb 2008 pulling data off SQL Server 2005. I need to be able to create an Excel report on the fly and dump the results from a query onto the first Excel sheet. After that I run another query and need to dump the results to the next sheet in the same workbook. Problem is that this query may spit back more that 65356 rows. Therefore I need to put the first 65000 rows in the second sheet and then the rest in the next sheet and so on and so forth.
Unfortunately, when I fix the sheet_var = 2 to start dumping in the second sheet, I get an index error. Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
The error is occuring in this line: oSheet = obook.Worksheets.Add(After:=obook.Worksheets("Page " & sheet_count))
Here is the code:
Code:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
I had a working program a while ago, but now it is giving me an error when I try to insert some data to my Excel-file.I get this error: Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD)) For example, one of my Excel referencing codes is:
Dim XL_App As New Excel.Application Dim XL_WB As Excel.Workbook = XL_App.Workbooks.Open("C:Program FilesIAAExcelitTuntilappu.xls", , True) Dim XL_WS1 As Excel.Worksheet = XL_WB.Worksheets(1)
The above code used to work, but now it gives me the error...I recently updated my Office from 2003 to 2010. How can I fix it?
I've converted an application for connecting to a vpn server and starting a remote desktop connection from vb6 to vb.net. But now when I'm trying to run the program I get an ArgumentNullException I've tried searching for a solution but I've been unable to find one. Below is my code:
What I'm trying to do is create an excel chart in a spreadsheet that I've just created using VB.Net code. I get the spreadsheet and chart created fine but then I get this error. An unhandled exception of type 'System.MissingMemberException' occurred in microsoft.visualbasic.dll. Additional information: Public member 'xlColumnClustered' on type 'Integer' not found. [Code]
Error: System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT: 0x800A03EC is thrown after execeution of Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation(XlCalc ulation RHS)
Out of nowhere COM start throwing exception when I set change excel's Calculation property. Line of code that followed set_Calculation was.Workbooks._Open. This used to cause exception every second try. Than I changed order, first open workbook and than set calculation property. Amount of exceptions start decreasing than I added thread.sleep(200) and exception is not thrown anymore. This happens only on one some of user machines while others are fine.Application itself is single threaded so this delay should be of importance if and only if set_Calculation is executed asynchronously. What I'm missing here?
the FinalReleaseAnyComObject sub seems to be failing to do precisely what it is intended to which seems odd.
Code: 'Adapted From: http://www.xtremevbtalk.com/showthread.php?t=160433 '------------------------------------------------------------------- Public oApp As Excel.Application Public oWB As Excel.Workbook
[code]....
Exception Message: "Exception has been thrown by the target of an invocation."Inner Exception Message: "COM object that has been separated from its underlying RCW cannot be used."The exception is thrown when stepping to the next FinalReleaseAnyComObject within MySubFinal, not within FinalReleaseAnyComObject nor upon returning to MySubFinal from it. As noted in the code, if I bypass the sub and just in-line it then it completes without exception, which suits me fine. In testing I also noticed that if I comment out Worksheet_Change, i.e. declare WithEvents but no associated handler, then I also get no exception, but of course this entirely defeats the purpose and is unacceptable.
In case it matters or if anyone is willing to attempt to reproduce this, this is in the context of a COM Add-In where MySubInit is called from OnStartupComplete and MySubFinal is called from OnBeginShutdown. I am working with VB 2008 Express and Excel 2007.
It appears that when one creates an instance of Excel, using CreateObject, (Late binding), the suggested Excel closing function (with GC.collect etc) does not work. I have tried several suggestions, and the only one that works is process.kill method. Do you see any problem in using this? BTW: the reason we are using late binding is that we cannot use Office PIAs....not sure which version of Office would be installed on the client site. We work with O2003, but the client might still be at 2000 or 2002.
When I try to create a instance of a COM class it throws an exception as Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
When I try to create a instance of a COM class it throws an exception as Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
I have written an automation addin in Excel with C# (addin.dll). To use the addin, I need to 1. register it using "regasm /codebase c:...addin.dll"2. select in ExcelOptionsAddInsExcel AddinsAutomation the respective addin from the list
I would like to automatize 1) and 2), so that the user just needs to run an exe-file in order to use the addin. 1) should be no problem, but how can one automatize 2)?
Ok basically what I need to do is the following:Read FirstExcelDoc (attached)For every row in that: Retrieve data from sql server db based on info in the Orange columns of FirstExcelDoc Let's say I retrieved data elements A, B, C, D, and E from sql server. Then I need to enter those same data elements A, B, and C in another excel spreadsheet (which has formulas etc) After inputing A, B, and C in that spreadsheet, read a couple of calculated fields and compare those results to data elements D and E retrieved originally from SQL Server DB. Finally, output the results in the Blue columns of the FirstExcelDoc spreadsheet for that row.Loop through and do the same thing for row 2 of the FirstExcelDoc and keep on until you see "END TEST" in the FirstExcelDoc.
I'm looking for a method of doing this efficiently. I have read several articles over the past few days as well as those from Mike R. but just need some direction to get started on this.To start of I'm looking for whether to read the entire FirstExcelDoc spreadsheet or just read the info for first policy number(2nd row) and process it and write out the blue column info for that row and then loop through and come back and read the second policy number (3rd row) etc... Please attach a code snippet for either way of reading the data.
I'm using excel via interop in application.Sometimes users kill application that created excel instance and that results in excel instance sitting in memory without any chance of disposing it.First I tried to tackle this using ROT(running object table) looks like not all instances of excel are registered there.Than I tried to somehow mark excel process after it is started via interop.[code]This works as long as excel is visible but in my case excel window is invisible.All I need is to somehow mark process that started via automation with the parent PID, so that later I can kill it if parent does not exist.
I have successfully automated a PowerPoint Metrics presentation with VB.Net. However, since there were many complicated calculations, it took quite some time to make the 120+ slide presentation - so I recently tried to revamp the application to be multi-threaded.
I've got VS2008 and Office2010, but I don't have Office2007. Therefore, I have the Word14 Object Library but not the Word12 Object Library. Will the code that I create for Office2010 automation also work where clients only have Office2007 or will they have to upgrade their office suites?
We have a vb program which is run on our server by scheduled task every day. The program opens about 30 excel files, refreshes the data connections, pivot tables and then saves the document in another location.
This may run fine for a couple days but sooner or later the process starts crashing, usually with this error: RPC_E_SERVERFAULT.
My question is, Is it expected that continually opening/closing/refreshing workbooks will inevitably cause the Excel object to crash at some point.
i was wondering if someone could give me the final explanation on what i might be doing wrong here.I spent a lot of time reading around the net and the forum about how to add Threading capabilities to a VB project.
Nos, i've got .NET 4 installed, and i've added the system.tsr and mscorlib.dll files as reference in, say, Excel 2007 (see screenshot).However, when i try to make a thread with anything as basic as "Dim Thread1 As System.Threading.Thread", i get a user-defined type not found error.Indeed, when i use the object browser to see what's in the System file, theres nothing remotely linked to any Threading, and in the mscorlib file, nothing under "Threading" either, just a few Thread related functions, but nothing defining a data type
I've developed shared addin for Microsoft Word. I distribute this addin with my application and using Inno setup for installation. The Inno setup installs my application and then runs "myAddin.msi" file in order to install addin.
how to uninstall this addin programatically?
Right now, in order to uninstall addin, the user has to to it manually through control panel.
how do i use the webbrowser to display the word or excel docs. just like the pdf viewer... i tried the webrowser1.navigate but it didnot work, if it does its opening a new window, im using office 2010..
How do I use the webbrowser to display the word or excel docs. just like the pdf viewer. I tried the webrowser1.navigate but it didnot work, if it does its opening a new window, I am using office 2010.
I've made Add-in for Word 2007 in VS2005.It worked well with Word 2007 and now it works well with Word 2010 32 bit.However it doesn't work with Word 2010 64 bit. The installation is successful, but the ribbon button doesn't show up.
Do you have any experience with add-ins for Office 64 bit?
I'm having an issue where my excel.exe process doesn't close until I close my .net application. I'd like to avoid using Process.Kill() if at all possible.
Code:
Private Sub WriteRowsToXls(ByVal rows As DataRowCollection, ByVal xlsPath As String, ByVal showStatus As Boolean, Optional ByVal AddTotals As Boolean = True) Dim xlsApp As New Microsoft.Office.Interop.Excel.Application
[CODE]............
This method references a couple of other methods I use for repeated formatting tasks, I'll include those methods below. (I added the FinalReleaseComObject into the other methods after reading Mike's thread but the issue persists)
Code: Private Sub SetRangeValidation(ByVal rng As Range) With rng.Validation .Delete()
[CODE]..............
Method SetRangeAllBorders does about the same as these other methods but my post is too long to add it. The only other things not shown in these code snippets are a few string variable that are defined in the class, studentWS, studentsWSPW, paymentsWS and paymentsWSPW My App creates an instance of the class, loads some data, runs the method above, and then sets the class to nothing. I'm using .NET 3.5 automating Excel 10
This might seem a ridiculous question but I just want to make 100% sure before I start committing any funds to software purchases. Can I use VB2008to develop automation routines to control Office2010 applications or must I absolutely use VB2010 to do so?I ask this because I installed an Office 2010 pro on my station which already has VB2008 and I do not have any Word14 reference in the COM section of the list of references...
I have used VB.NET and Microsoft Offices Interop to create an application that will run on a server and will print files for different users.My problem is that I need to find a way to impersonate different users so that when MS Word opens and prints, the resulting print job is recorded under that user. I found this link that lets you run .net code as a different user - unfortunately it doesn't work with this code. The username recorded is still the user that is logged on the server.Code Removed by moderator. Any ideas how I can make the Office app I'm automating run under a different user to the .net program that is calling it?
I would like to create Shared add-in that works with Word, Excel, Outlook and Power Point. I've found nice article that provides step by step instruction for creating shared add-in for Word: [URL] I've followed instructions and it worked. However, I am looking for a way to create one add-in that works with Word, Excel, Outlook and Power Point, not only Word. I didn't find any reference on the WEB.
I am working on customization of a SP3D (A 3D CAD software) using VB 6.0.Now I am trying to shift to VB.Net.In VB we use to access the VB 6.0 command by ProgID.When I call a VB.Net command from SP3D I get a message Exception from HRESULT : 0x80040461.Syntax for the command - Assy.Name, Namespace.ClassNameBut when I export the Assy. to a Type Library and call the same command using ProgID it works fine.
I am working on customization of a SP3D (A 3D CAD software) using VB 6.0. Now I am trying to shift to VB.Net. In VB we use to access the VB 6.0 command by ProgID. When I call a VB.Net command from SP3D I get a message Exception from HRESULT : 0x80040461. Syntax for the command - Assy.Name, Namespace.ClassName But when I export the Assy. to a Type Library and call the same command using ProgID it works fine.
I've recently converted some VB 6 code over that used the old non-structured exception handling. I also have some .NET classes that raise custom exception classes. When the code was VB6 I used to expose my .NET classes using COM interop and errors raised from .NET classes were being caught correctly in VB6. Now that everything is .NET the old non-structured exception handling is still there in the converted classes. But now the Err.Number is not reflecting the HResult of the error raised. I wrote a simple little Windows Application form with 2 buttons to simulate the problem. Here is the code snippet:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click On Error GoTo ErrHandler Err.Description = "Test Error"
[code]....
If you click Button1 you get the following message:
-2147215379 : Test Error
If you click Button2 you get the following message: