【问题标题】:Moving from Excel VB to VB.Net Document Customization从 Excel VB 迁移到 VB.Net 文档定制
【发布时间】:2018-05-05 02:09:56
【问题描述】:

长期以来,我一直在使用 Excel 中的嵌入式 VB 编辑器编写 Excel 宏。现在我们正在尝试将一个项目转移到 Visual Studio 以利用 VB.net 和 TFS 服务的功能。你们中的一位 VB.NET 专家能否给我一个示例,说明下面的 VB 代码看起来像 VB.NET?有问题的项目是 VSTO 上的 Excel 文档自定义。我发现有很多关于 Excel 插件的帖子,但与定制项目相关的有用的帖子不多。我想不出像取一个字符串这样简单的东西,用它来抓取一张纸,然后改变这张纸的一些属性。

Sub ProcessSheet(sheet As String, box As Boolean)
   With Sheets(sheet)
     If box = True Then
        .Visible = True
     Else
        .Visible = False
     End If
   End With
End Sub

提前感谢您的帮助。如果我能得到一些指示,我相信我可以从那里开始使用它。

【问题讨论】:

  • 我对 Excel 不太擅长,但是你的 sub 的最后一个参数需要一个数据类型。不好将其命名为类型c As Color
  • 你是对的@Mary,它在 Embedded vb 中工作,但这是我尝试在 VB.NET 中编写时遇到的错误的一部分。在这种情况下,它是微不足道的,我将删除 sub 的那部分以避免混淆。
  • 如果您还没有意识到这一点,要掌握的主要概念是您正在针对Excel Object Model API 进行编程(使用:VBA、VB.Net、C# 等),并且此 API 是COM interfaces 的图书馆。 VBA 允许松散的数据类型。带有Option Strict Off 的VB.Net 近似于这种松散的数据类型; .Net 强制执行强数据类型,这就是许多问题开始的地方。启用 Option Strict 以强制执行强类型。
  • VSTO 是一个项目模板,它设置框架以使用 Excel 对象模型并添加一些功能。你不需要使用它,很多人也不需要。您可以通过 Project Menu->Add Reference->COM Tab->Microsoft Excel xx.y Object Library 将 Excel 对象模型的项目引用添加到任何项目。然后将Imports Excel=Microsoft.Office.Interop.Excel 添加到您的代码中,以方便引用Excel 类型。与在 VBA IDE 中一样,使用 Object Browser(查看菜单->对象浏览器)检查类型。
  • 由于 SO 不是提供教程的,这个问题可能会被关闭,我建议你研究“Excel 自动化”,你会发现很多例子。

标签: vb.net vsto


【解决方案1】:

我最终选择了 C# 解决方案。如果有人有兴趣,我发布的代码的 VSTO 等效项如下:

   private void ProcessSheet(string Sheet, bool visible){
        if (!visible)
        {
            ((Excel.Worksheet)Globals.ThisWorkbook.Sheets[Sheet])
            .Visible = Excel.XlSheetVisibility.xlSheetHidden;
        }
        else
        {
            ((Excel.Worksheet)Globals.ThisWorkbook.Sheets[Sheet])
            .Visible = Excel.XlSheetVisibility.xlSheetVisible;
        }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多