Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

vb.net Office Excel Interop Assembly Fails

Posted on 2010-09-21
9
1,273 Views
Last Modified: 2013-11-26
I get the following error when trying to export my dataset to excel.  

Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).

Apparently the interop assemblies are not registered.  Failure occurs on the 'excelApp.Workbooks.Add" is executed.  I have added the reverence to Microsoft.Office.Interop.Excel (Version 12.0.0.0).  I have Office 2007 on my PC.  I have used this exact code in the past and it worked fine.  Do I need to register the asseblies again?  If so, how.  I have already repaired Office 2007 and that did not work.  I'm running Visual Studio 2008 with.net framework of 3.5

Thanks for the help.
Select Case TC_ServiceData.SelectedIndex
            Case Is = 1
                Me.Cursor = Cursors.WaitCursor
                Dim excelApp As New Microsoft.Office.Interop.Excel.Application()
                Dim excelBook As Microsoft.Office.Interop.Excel.Workbook = excelApp.Workbooks.Add
                Dim excelWorksheet As Microsoft.Office.Interop.Excel.Worksheet = _
                    CType(excelBook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet)
                excelApp.Visible = False

                With excelWorksheet
                    'Creates connections to pull data to DataSet

                    Dim dr As DataRow
                    Dim i As Integer = 2
                    .Range("A1").Value = "TECHNICIAN"
                    .Range("A1").Font.Bold = True
                    .Range("A1").ColumnWidth = 15
                    .Range("B1").Value = "CALL DAY"
                    .Range("B1").Font.Bold = True
                    .Range("B1").ColumnWidth = 15
                    .Range("C1").Value = "TIME"
                    .Range("C1").Font.Bold = True
                    .Range("C1").ColumnWidth = 15
                    .Range("C1").Value = "STATUS"
                    .Range("C1").Font.Bold = True
                    .Range("C1").ColumnWidth = 15
                    .Range("C1").Value = "CALL NUMBER"
                    .Range("C1").Font.Bold = True
                    .Range("C1").ColumnWidth = 15
                    .Range("C1").Value = "CUSTOMER"
                    .Range("C1").Font.Bold = True
                    .Range("C1").ColumnWidth = 50

                    'Populate Excel spreadsheet
                    Try
                        For Each dr In mDataSet.Tables(0).Rows

                            .Range("A" & i.ToString).Value = dr("controlId")
                            .Range("B" & i.ToString).Value = dr("orderId")
                            .Range("C" & i.ToString).Value = dr("pickupDate")
                            i += 1


                        Next
                    Catch ex As Exception
                        Me.Cursor = Cursors.Default
                        MessageBox.Show(ex.Message)
                    End Try
                    'Make Excel visible
                    excelApp.Visible = True
                    Me.Cursor = Cursors.Default
                End With
                Me.Cursor = Cursors.Default
            Case Is = 1


        End Select

Open in new window

0
Comment
Question by:toddpotter
  • 4
  • 3
  • 2
9 Comments
 
LVL 17

Expert Comment

by:nepaluz
ID: 33726801
0
 

Author Comment

by:toddpotter
ID: 33727215
No. That didn't get me anywhere.
0
 
LVL 17

Expert Comment

by:nepaluz
ID: 33727256
Hmmmm! OK.
0
MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

 
LVL 6

Expert Comment

by:xenacode
ID: 33732381
Office is just a bit temperamental like that sometimes.

Try declaring excelApp as Microsoft.Office.Interop.Excel._Application (note the underscore). This sometimes works for similar issues.

It does sound like a PIA issue may be the cause. Have you got more than one version of the PIA installed?

Pete
Xenacode Ltd
0
 

Author Comment

by:toddpotter
ID: 33733360
Using the underscore did not work.

I have attached two screenshots - one of the assembly folder and one of my program list.  I have MS Office 2007 installed (with every option) and a seperate Microsoft Office 2007 Interop Assemblies.  I removed the 'Microsoft Office 2007 Interop Assemblies" yesterday and repaired office 2007 thinking there may be a conflict but it had the same results.  


assembly.PNG
programs.PNG
0
 
LVL 6

Expert Comment

by:xenacode
ID: 33733536
have you got anything in the GAC with a name like "Policy.12.0.Microsoft.Office.Interop.Excel"?
0
 

Author Comment

by:toddpotter
ID: 33733587
Yes Policy.11.0.Microsoft.Office.Interop.Excel
assembly2.PNG
0
 
LVL 6

Accepted Solution

by:
xenacode earned 500 total points
ID: 33733884
That one is OK but you also have a Policy.12.0.Office version 14 in your GAC that suggests someone has installed (part of) Office 2010. I'm guessing but that might be something to do with it. What that means is that any calls from an application to the Office 2007 PIA get redirected to the Office 2010 PIA. I can't confirm if that would give you this problem or not but, from my experience, VSTO add-ins can get really messed up when you have components from multiple Office versions installed simultaneously.
0
 

Author Comment

by:toddpotter
ID: 33734819
I had a copy of Microsoft Project Beta 2010 on my machine.  Once I uninstalled it, the app no longer errors on the excelapp.Workbooks.Add but when it catches a breakpoint VS hands and comes back with an error of:
---------------------------
Microsoft Visual Studio
---------------------------
A fatal error has occurred and debugging needs to be terminated. For more details, please see the Microsoft Help and Support web site. HRESULT=0x80131c08. ErrorCode=0x0.
---------------------------
OK  
---------------------------
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

791 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question