【问题标题】:Referencing an excel sheet from a Windows Form in Document Level Customization在文档级自定义中引用来自 Windows 窗体的 Excel 工作表
【发布时间】:2013-03-22 04:51:06
【问题描述】:

我想我会尝试学习 VB.net 并从一些 VSTO (VS2012) 开始。我正在尝试使用单独的 Windows 窗体进行 Excel 文档自定义(加载时显示 .show)。我可以在加载文档时打开表单。我在 MSDN 上的文档中找到了很多关于如何将 Windows 窗体控件放入文档的示例(并弄清楚了如何做到这一点),但是我无法从 Windows 窗体中引用 Excel 文档的某些部分。

例如,在名为 Main Control 的 windows 窗体上,我尝试将此子控件添加到按钮:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Try
        Dim baba As Sheet1
        baba.Cells(1, 2).Value = "Llaslmasd"
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
 End Sub

我也试过了:

        Dim baba As New Sheet1

        Dim baba As WorkSheet
        baba = Sheet1

如果工作表不是共享成员,或者如果我应该将其共享,那么引用工作表的正确方法是什么?我该怎么做?

如果我以编程方式尝试插入其他工作簿中的工作表(非合并工作簿并因此更改工作表索引?),事情会不会中断。

抱歉,如果我的英语有误或我的问题格式不好,我仍在复习示例。

【问题讨论】:

    标签: vb.net visual-studio excel vsto add-in


    【解决方案1】:

    这比调用索引要容易得多。在文档级加载项中,工作表将位于 Globals 下,因此您只需完全限定您要执行的操作即可。

    Globals.Sheet1.Cells(1, 2).Value = "Llaslmasd"

    应该可以。

    【讨论】:

      【解决方案2】:

      我认为最好的方法是从 excel 应用程序中获取工作表。

      Dim WB as Workbook
      WB = Application.Workbooks(IndexOrName) 'By "Application" I mean the Excel Application object.
      
      Dim WS as Worksheet
      WS = WB.Worksheets(IndexOrName)
      

      添加工作表:

      WB.Worksheets.Add(...)
      

      【讨论】:

      • 这违背了文档级自定义的目的,对吧?如果我从 Marshal 获取索引,那么我将不得不跟踪打开或关闭的工作簿,或者他们重命名我计划在保存时创建的模板文件。那时我还不如做一个应用程序插件,对吗?我想与文档保持一对一的关系,这就是为什么要进行文档级别的自定义对吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多