gpt4 book ai didi

vb.net - 在 Debug模式下获取工作表数 - MS Excel PIA

转载 作者:行者123 更新时间:2023-12-04 20:14:27 26 4
gpt4 key购买 nike

我无法访问 .CountSheets 属性。我正在使用 Excel 互操作。我处于 Debug模式,我正在尝试这个:

?xlSheets.Count

这导致:

(1) : error BC30456: 'Count' is not a member of 'Sheets'.



我不知道出了什么问题,因为 I see in MSDN that there is such property !

这很好用: ?xlSheets(1).Name 。但是 Count 失败了......是否有可能获得工作表的数量?

These guys had a similar problem - 他们想要 .Worksheets.Add(.Worksheets.Sheets.Count) 。最后他们没有得到计数,他们去了 .Worksheets.Add(After:=.Worksheets(3)) ...

更新:

令我非常高兴的是,经过进一步的尝试/实验,很明显, Debug模式下的 Sheets.Count 仅在代码 中没有这样的行时才起作用。

在调试这段代码时,我可以访问 Sheets.Count ,因为代码中存在这一行。
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkbooks As Excel.Workbooks
Dim xlSheets As Excel.Sheets

Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click
xlApp = New Excel.Application
xlWorkbooks = xlApp.Workbooks
xlWorkBook = xlWorkbooks.Open("C:\Temp\Template.xlsm")
xlSheets = xlWorkBook.Sheets

MessageBox.Show(xlSheets.Count)

xlWorkBook.Close()
xlApp.Quit()

'Clean Up
releaseObject(xlSheets)
releaseObject(xlWorkBook)
releaseObject(xlWorkbooks)
releaseObject(xlApp)
End Sub

Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
GC.WaitForPendingFinalizers()
End Try
End Sub

End Class

但是当我用 MessageBox.Show(xlSheets.Count) 替换 MessageBox.Show(xlSheets.Creator) 时,尝试 ?xlSheets.Count 时会出现错误。我还不知道这种行为的原因(我来自 Debug模式似乎更灵活的 VBA 环境),但至少在运行时有效......

如果有人知道如何解决这个问题,请告诉我,因为我在 Debug模式下测试小东西时感觉受限!

最佳答案

使用项目 > 属性 > 引用。找到并选择“Microsoft Excel xx.x 对象库”条目。在“属性”窗口中,将“嵌入互操作类型”属性设置为 False。使用 Build > Rebuild 来重建您的应用程序。现在它将按您预期的方式工作。

简而言之,此选项是对 COM 互操作库(如 Microsoft.Office.Interop.Excel)的强大优化,您不再对库有运行时依赖。编译器将库中的互操作类型复制到程序的可执行文件中,只复制运行程序实际需要的那些。解释您的发现,当您不在程序中使用 Count 属性时,它实际上丢失了。

你不想这样,在你完成测试后将属性设置回 True 。

关于vb.net - 在 Debug模式下获取工作表数 - MS Excel PIA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31196120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com