首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图使用vb.net管理Excel,但我收到“无法从类型.转换COM对象”

试图使用vb.net管理Excel,但我收到“无法从类型.转换COM对象”
EN

Stack Overflow用户
提问于 2020-11-27 00:00:05
回答 1查看 819关注 0票数 0

我正在使用"Microsoft.Office.Interop"库创建一个excel文件。拥有office 365并将此dll导入到我的vb proyect中:"C:\Program (X86)\MicrosoftVisualStudio10.0\ for Office\PIA**Office12\Microsoft.Office.Interop.Excel.dll**“

所以,我犯了一个错误:

'Microsoft.Office.Interop.Excel.ApplicationClass‘类型的COM对象不能转换为接口类型'Microsoft.Office.Interop.Excel._Application'.操作错误发生,因为IID‘{000208D5-0000-C000-000000000046}’的接口的COM组件的QueryInterface调用生成了以下错误:IID“找不到”项。( HRESULT: 0x8002802B (TYPE_E_ELEMENTNOTFOUND)除外)。

--这是我使用库的代码:

代码语言:javascript
复制
Imports Microsoft.Office.Interop

Public Class Fexcel
    Public Sub importarExcel()
        Dim app As Excel.Application
        Dim libro As Excel._Workbook
        Dim hoja As Excel._Worksheet

        app = New Excel.Application
        libro = app.Workbooks.Add
        hoja = app.Worksheets(1)
        Dim direccion As String
    End Sub
End Class

这一行的错误是“导致”的:libro = app.Workbooks.Add

我放弃了对"Office12\Microsoft.Office.Interop.Excel.dll“的引用,并添加了以下内容:”C:\Program(X86)\MicrosoftVisualStudio10.0\ Visual for Office12\Microsoft.Office.Interop.Excel.dll(更改是office14文件夹)和它没有工作**。

我做了一个新的proyect,并将相同的代码添加到"Office14\Microsoft.Office.Interop.Excel.dll“和.它成功了。这里是这个新proyect的代码:

代码语言:javascript
复制
Imports Microsoft.Office.Interop
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim app As Excel.Application
        Dim libro As Excel._Workbook
        Dim hoja As Excel._Worksheet

        app = New Excel.Application
        libro = app.Workbooks.Add
        hoja = app.Worksheets(1)
        Dim direccion As String
    End Sub
End Class

,我仍然需要修复我的主proyect的错误,我不知道为什么会这样。

我查找了错误,他们说要做的事情是查找错误代码的注册表,看看是否安装了另一个版本的office,我没有其他版本的office。(我不想重新安装msOffice,因为我不认为它会起作用,告诉我如果我错了)

我认为这个错误是由我的主要观点引起的;在重要的情况下,我不认为这是visual 2010或office或注册表的问题,但是如果您认为您有解决方案,请告诉我。

编辑:,我已经激活了我的proyect的严格模式(并且有243个错误)。现在,我已经初始化了Excel对象应该如何实现。

代码语言:javascript
复制
`
Dim app As Excel.Application
Dim libro As Excel.Worksheet
Dim hojaCompr As Excel.Worksheet
Dim hojaVent As Excel.Worksheet
Dim hojaGen As Excel.Worksheet
app = New Excel.Application

Dim direccion As String

libro = CType(app.Workbooks.Add, Excel.Workbook)

错误是由于试图在没有CType()函数的情况下定义工作簿对象以将Excel.applicationClass类型转换为Excel.Workbook类型引起的。

谢谢你的帮助!!

EN

回答 1

Stack Overflow用户

发布于 2020-11-27 15:53:30

我修好了。我将将要使用的对象定义为"Object",更改了"app = New Excel.Application“,仅此而已。

代码语言:javascript
复制
Imports Microsoft.Office.Interop

Dim app As Object
Dim libro As Object
Dim hoja As Object

'Start a new workbook in Excel    
app = CreateObject("Excel.Application")
libro = app.Workbooks.Add

hoja = libro.Worksheets(1)

libro.SaveAs("C:\Users\Ricardo\Documents\book.xlsx")' I will use an getSaveFilename, not this
app.Quit()

谢谢你的帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65030581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档