Microsoft VSTO Excel.Application.FileDialog () Поле для редактирования имени файла формы всегда пусто ..? - PullRequest
0 голосов
/ 13 февраля 2020

Я создаю надстройку Excel, которая использует Excel.Application.FileDialog, чтобы пользователь мог выбирать файлы. Когда FileDialog открывается и файлы выбираются, имена файлов не вставляются в текстовое поле имени файла в диалоговом окне. Оно остается пустым независимо от того, как щелкают файлы.

Среда старая, но работает:

  • Windows XP
  • Visual Studio 2008 Professional
  • Точка Net 3.51 SP1
  • Microsoft Office 2007 SP3

На приведенном ниже снимке экрана только четыре файла были выбраны, но поле имени файла остается пустым. Я ожидаю, что имена файлов будут вставлены туда в формате CSV, но это не так.

screenshot

Кто-нибудь знает, как я могу решить или даже эффективно устранить неполадки ..?

Эта проблема возникает независимо от того, ссылается ли Office на PIA или GAC. В настоящее время он указывает на:

C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Office.dll

Код для создания диалога следующий:

Dim xl As Microsoft.Office.Interop.Excel.Application = Globals.ThisAddIn.Application
Dim fd As Microsoft.Office.Core.FileDialog = xl.FileDialog (Microsoft.Office.Core.MsoFileDialogType.msoFileDialogFilePicker)
fd.AllowMultiSelect = True
fd.ButtonName = "&Add"
fd.Filters.Add("Excel workbooks", "*.xls; *.xlsx")
fd.Filters.Add("All files", "*.*")
fd.FilterIndex = 0
fd.InitialView = Microsoft.Office.Core.MsoFileDialogView.msoFileDialogViewDetails
fd.Title = "Select Files"
Dim okPressed As Boolean = CBool(fd.Show())
If okPressed Then
    Dim newFilenameCount As Integer = fd.SelectedItems.Count
    If newFilenameCount > 0 Then
        For i As Integer = 1 To newFilenameCount                'Loop through .SelectedItems (1-based). 
            Dim filename As String
            filename = LCase(fd.SelectedItems.Item(i))          'Get filename.
            Dim doesntExist As Boolean = True
            For j As Integer = 0 To dgv.Rows.Count - 1          'Search list to see if filename already exists (0-based).
                If filename = CStr(dgv.Rows.Item(j).Cells.Item(1).Value) Then
                    doesntExist = False
                    Exit For
                End If
            Next
            If doesntExist Then
                filename = fd.SelectedItems.Item(i)
                'Get filename, but this time not lowercased.
                dgv.Rows.Add(True, filename)
            Else
                Dim msgstyle As MsgBoxStyle = DirectCast(MsgBoxStyle.ApplicationModal + MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, MsgBoxStyle)
                MsgBox("The file " & GetFileName(filename) & " is already selected.", msgstyle, "File Selection Error")
            End If
        Next
    End If
End If
fd = Nothing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...