列出任务栏中所有打开的工作簿

Posted

技术标签:

【中文标题】列出任务栏中所有打开的工作簿【英文标题】:List all opened WorkBooks in the Task Bar 【发布时间】:2015-11-16 11:20:46 【问题描述】:

我试图在任务栏中列出所有打开的工作簿及其对应的工作表,之后我应该能够选择列表中的一个工作簿并打开它。我的第一次尝试是在任务管理器中显示 Excel 进程,但它只显示一个打开的工作簿而没有检测到工作表的数量。

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

    Dim name As Process() = Process.GetProcessesByName("Excel")
    For Each names In name
        ListView1.Items.Add(names.MainWindowTitle)
        If names.MainWindowTitle <> "" Then
            ListBox1.Items.Add(names.MainWindowTitle)
        End If
    Next
End Sub

接下来我尝试使用此代码,但我也只能显示一个打开的工作簿,我不知道如何循环它们。如果您有任何其他方法,我没有更改整个代码的问题,因为我不确定它是否是解决方案。

    Dim oXL As Microsoft.Office.Interop.Excel.Application
    oXL = TryCast(System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)


    oXL.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlMinimized

    Dim y As String
    y = oXL.ActiveWorkbook.Name

           ListBox1.Items.Add(y)

【问题讨论】:

【参考方案1】:
  Dim objExcel As Excel.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
    Dim objWorkBook As Excel.Workbook = Nothing

    Dim totalWorkBooks As Integer = objExcel.Workbooks.Count

    For i As Integer = 1 To totalWorkBooks

        objWorkBook = objExcel.Workbooks(i)

        With objWorkBook
            FullName = .FullName
            OnlyName = .Name

【讨论】:

以上是关于列出任务栏中所有打开的工作簿的主要内容,如果未能解决你的问题,请参考以下文章

如何在任务栏中显示 QMainWindow

Excel-VBA - 列出任何给定工作簿的所有用户窗体的控件

vba在打开时显示用户表单,隐藏工作表,但保留任务栏图标

如何使Delphi做的程序不显示在任务栏中

获取任务栏中的窗口(EnumWindows函数)

PyQt 从任务栏中删除窗口