2012-10-31 136 views
1

您好,我试图将数据从excel导入到Visual Basic变量,但即时通讯出现奇怪的错误。我确实添加了对microsoft excel com库的引用。 (从HRESULT异常:0x80040154的(REGDB_E_CLASSNOTREG))80040154未注册的类:使用Excel和Visual Studio 2010时出现“Class not registered”错误

Imports Microsoft.Office.Interop.Excel 

Module Module1 

Sub Main() 
    ExtraerCostos() 
End Sub 

Public Sub ExtraerCostos() 

    Dim numero As String 
    Dim aux As String 
    Dim costos(20) As Double 
    Dim cant As Integer 

    Dim excelApp As New Microsoft.Office.Interop.Excel.Application 
    Dim workbook As New Microsoft.Office.Interop.Excel.Workbook ' The error points to this line 
    Dim sheet As New Microsoft.Office.Interop.Excel.Worksheet 

    excelApp = CreateObject("Excel.Application") 
    excelApp.Visible = True 
    workbook = excelApp.Workbooks.Open("C:\workbook.xls") 
    sheet = workbook.Worksheets("Factura Detallada") 

    'Irrelevant code 
    numero = "111111111" 
    cant = 12 

    While numero.Length = 9 
     cant = cant + 1 
    End While 

    For i = 12 To cant 

     numero = sheet.Cells(i, 1).text 
     For j = 3 To 22 
      aux = sheet.Cells(i, j).text 
      If aux = "-" Then 
       costos(j - 2) = 0 
      Else : costos(j - 2) = Convert.ToDouble(aux) 

      End If 
      Console.WriteLine(costos(j - 2)) 
     Next 


    Next 

End Sub 
End Module 

检索COM类工厂具有CLSID {00020819-0000-0000-C000-000000000046}组件未能由于下面的错误。

回答

4

您不能以这种方式创建工作簿或工作表。 你必须使用Workbooks.Open或Workbooks.Add方法(你做,在ExtraerCostos的第10行)

使用

昏暗的工作簿Excel.Workbook

,并已被没关系

1

...你宣布它作为新的工作簿,但没有将其设置为一个值... 试试这个:

Dim workbook As Microsoft.Office.Interop.Excel.Workbook = Nothing 

何pe这有助于帮助

相关问题