2015-11-16 7 views
0

Я пытаюсь перечислить все открытые книги и их соответствующие листы в панели задач, после чего я должен выбрать одну книгу из списка и открыть ее. Моя первая попытка состояла в том, чтобы показать процесс Excel в Task-Manager, но в нем отображается только одна открытая книга без определения количества листов.Список всех открытых рабочих книг в панели задач

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) 

ответ

0
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