从组合框(VB.NET)打开Excel工作簿

从组合框(VB.NET)打开Excel工作簿,vb.net,excel,file-io,combobox,Vb.net,Excel,File Io,Combobox,如何从组合框打开excel工作簿 我使用以下代码用excel文件名填充combobox Dim files() As String files = Directory.GetFiles("C:\Files\Folder", "*.xlsx", SearchOption.AllDirectories) For Each FileName As String In files ComboBox1.Items.Add(FileName.Substring(FileName.LastIndexOf("\

如何从组合框打开excel工作簿

我使用以下代码用excel文件名填充combobox

Dim files() As String
files = Directory.GetFiles("C:\Files\Folder", "*.xlsx", SearchOption.AllDirectories)
For Each FileName As String In files
ComboBox1.Items.Add(FileName.Substring(FileName.LastIndexOf("\") + 1, FileName.Length -     FileName.LastIndexOf("\") - 1))
Next
但是我不知道如何打开所选文件。

尝试使用

Process.start(“excel”+ComboBox1.SelectedItem.ToString())


在按钮上单击事件

您需要处理一个事件以对用户的选择作出反应:要么更改组合框
中的选择,要么(更好)单击按钮。在事件处理程序中,您可以从组合框中检索文件名:

string filename = ComboBox1.SelectedItem.ToString()

一旦你有了文件名,你就可以打开文件了,尽管你如何打开取决于你想用它做什么。有一些关于在VB.NET中打开Excel文件的信息。

谢谢您的回复。它给出一个错误“找不到指定的文件”。这是可以理解的,因为我只在combobox中添加文件名。但是当我使用“GetFile”时,它会得到文件路径。有没有办法只显示文件名并在打开文件时使用整个文件路径?是只打开Excel文件还是进一步与之交互?如果我们在所有子目录中搜索,只需在“GetFile”下进行一个小查询,那么如何打开所选文件?在这种情况下,您需要保留一个单独的完整路径列表,我会更新我的答案。给我一点时间,我会做一些其他的修改来说明我通常是如何做的。只是更新了-实际上你的原始代码没有像我想象的那样工作,所以使用了MSDN中的一个示例来递归目录以及我的原始代码来启动Excel。
Imports System
Imports System.IO
Imports System.Collections

Public Class Form1

Private Const TargetDir = "C:\Files\Folder"
Private FullFileList As List(Of String)


Private Sub ProcessFile(ByVal fn As String)
    If Path.GetExtension(fn).ToLower = ".xlsx" Then
        FullFileList.Add(fn)
        ComboBox1.Items.Add(Path.GetFileName(fn))
    End If
End Sub

Private Sub ProcessDirectory(ByVal targetDirectory As String)
    Dim fileEntries As String() = Directory.GetFiles(targetDirectory)
    Dim fileName As String
    For Each fileName In fileEntries
        ProcessFile(fileName)
    Next fileName
    Dim subdirectoryEntries As String() = Directory.GetDirectories(targetDirectory)
    Dim subdirectory As String
    For Each subdirectory In subdirectoryEntries
        ProcessDirectory(subdirectory)
    Next subdirectory
End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    FullFileList = New List(Of String)
    ProcessDirectory(TargetDir)
End Sub

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    If ComboBox1.SelectedIndex >= 0 Then
        Dim prc As New System.Diagnostics.Process
        Dim psi As New System.Diagnostics.ProcessStartInfo(FullFileList(ComboBox1.SelectedIndex))
        psi.UseShellExecute = True
        psi.WindowStyle = ProcessWindowStyle.Normal
        prc.StartInfo = psi
        prc.Start()
    End If
End Sub

End Class