【问题标题】:How to choose which Excel version to open using VB.NET?如何选择使用 VB.NET 打开的 Excel 版本?
【发布时间】:2011-10-16 10:57:39
【问题描述】:

我有几个 Excel 工作表,我想使用 VB.NET 处理不同的 Excel 版本

基本上,我想选择使用 VB.NET 打开某个工作表的 Excel 版本。有没有办法知道机器上安装了哪个Excel版本以及VB.NET有多少个版本?以及如何选择打开哪个 Excel 版本?

我想通过编程来了解它,我知道如果你看一下机器中的注册表项就可以做到这一点。虽然,我需要的是创建一个软件,询问用户他想要打开的 Excel 版本

【问题讨论】:

  • 我认为这会回答“有没有办法知道机器中安装了哪个 Excel 版本?”。
  • 您能否澄清一下,在谈论“打开 Excel”时...您是在启动带有参数的特定 Excel 可执行文件之后,还是想使用 Office 自动化 API 进行交互使用 VB 中的那个 Excel 实例?
  • 不过,我需要的是创建一个软件,询问用户他想要打开的 Excel 版本。您真的是说某人可能安装了多个版本的 Excel,并且您需要您的应用程序提示用户选择要打开的 Excel .exe 版本吗?
  • 是的.. 它发生在我工作的地方。某些计算机可能安装了超过 1 个 Excel,我希望我可以使用用户选择的版本打开某些工作表

标签: .net vb.net excel registry


【解决方案1】:

以下代码 sn-p 获取计算机上所有已安装 Excel 副本的列表(已在运行 Excel 2003 和 2007 的 Windows XP 机器上进行了尝试和测试)。

Dim reg As RegistryKey
Dim subKey As RegistryKey
Dim rtn As New Dictionary(Of String, String)

reg = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Office")
If reg IsNot Nothing Then
    For Each subKeyName As String In reg.GetSubKeyNames
        subKey = reg.OpenSubKey(subKeyName)
        If subKey IsNot Nothing Then
            If subKey.GetSubKeyNames().Contains("Excel") Then
                subKey = subKey.OpenSubKey("Excel\InstallRoot")
                rtn.Add(subKeyName, subKey.GetValue("Path").ToString)
            End If
        End If
    Next
End If
For Each kvp In rtn
    MessageBox.Show(String.Format("Version: {0} at '{1}Excel.exe'", kvp.Key, kvp.Value))
Next

在变量rtn 中,您有一个版本字典(键)和安装 Excel 的目录(值)。正如您在我的代码末尾的MessageBox 位中看到的那样,您需要将“Excel.exe”添加到它的末尾。

现在您有了已安装的 Excel 副本及其版本的位置,您可以创建一个列出它们的表单,以允许用户选择他们希望使用的版本。

虽然我确信您可以找到使用 Excel 打开 Excel 电子表格的命令行,但我想为了完整起见,我会将其包含在此处;

excel.exe "c:\My Folder\book1.xlsx"

(http://office.microsoft.com/en-us/excel-help/command-line-switches-for-excel-HA010158030.aspx)

对how to identify installed Excel versions and their location的稍微完整的解释。

【讨论】:

  • 太棒了!只是另一个问题,如果我需要通过 VB.NET 控制工作簿怎么办。我的意思是,除了打开它,我还需要通过 VB.NET 运行宏、排除行等
  • 我的建议是为此打开一个新问题,因为它可能需要更多信息,并且响应会比单个评论允许的更长(我猜,我不会知道该怎么做)。
猜你喜欢
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多