我正打算在打开的工作簿中调用第5张表。当我打开从程序工作簿我似乎能够做到这一点:来自WorkBook的调用表
Dim CurrentRun As New Excel.Application
Dim CurrentBook As Excel.Workbook
Dim CurrentSheet As Excel.Worksheet
Private Sub GeneralButtonOpener_Click(sender As Object, e As EventArgs) Handles GeneralButtonOpener.Click
CurrentRun.Visible = True
CurrentBook = CurrentRun.Workbooks.Add(MainTemplatePath)
CurrentSheet = CurrentBook.Worksheets(4)
CurrentSheet.Activate()
End Sub
但是我所有的努力在调用表,如果该文件已经打开失败:
Dim CurrentRun As Microsoft.Office.Interop.Excel.Application
Dim CurrentBook As Microsoft.Office.Interop.Excel.Workbook
Dim CurrentSheet As Microsoft.Office.Interop.Excel.Worksheet
CurrentRun = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
CurrentBook = CurrentRun.Workbooks
CurrentSheet = CurrentBook.Sheets(4)
CurrentSheet.Activate()
或
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim CurrentRun As Microsoft.Office.Interop.Excel.Application
Dim CurrentBook As Excel.Workbook
Dim CurrentSheet As Excel.Worksheet
CurrentRun = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
CurrentBook = CurrentRun.ActiveWorkbook
CurrentSheet = CurrentBook.Sheets(4)
CurrentSheet.Activate()
End Sub
我看了几个例子,但我不知道我要去哪里错了。这令我感到惊讶,因为在这个问题上似乎有很多问题。以太指示解决/解决这个问题的地方,或者我特别做错的东西,将不胜感激。
谢谢!
你是什么意思 “失败”。你的意思是应用程序似乎忽略了你,或者你的意思是它会抛出异常? – JDB 2013-03-20 21:33:09
@ Cyborgx37他们似乎都无视我/什么都不做。如果我得到一个异常,我会发布它。我尝试过使用它,如果我做一些愚蠢的事情,比如试图放置太大的索引(90),我可以摆脱索引错误。工作簿本身有10张,所以这不应该是一个问题。 – 2013-03-21 01:25:32
@ Cyborgx37进一步调试,如果我根本没有打开工作表并且使用装载了excel的标准书(并删除索引或添加工作表),我得到以下异常:'无法投射类型为'的COM对象' System .__ ComObject'改为接口类型'Microsoft.Office.Interop.Excel.Workbook'。此操作失败,因为IID为“{000208DA-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(异常来自HRESULT:0x80004002(E_NOINTERFACE)) .' – 2013-03-21 01:38:19