Найдите и замените файл Excel, а затем откройте его в приложении Excel. - PullRequest
1 голос
/ 06 мая 2020

Я хочу произвести замену в файле xls, а затем открыть его в Excel. У меня есть это

Imports Microsoft.Office.Interop.Excel
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        OpenFileDialog1.ShowDialog()
    End Sub

    Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        Dim strFileName As String

        OpenFileDialog1.Title = "Apri file TimeSheet"
        OpenFileDialog1.InitialDirectory = "c:"
        OpenFileDialog1.Filter = "File Excel (*.xls)|*.xls|All files (*.*)|*.*"
        OpenFileDialog1.FilterIndex = 2
        OpenFileDialog1.RestoreDirectory = True

        If OpenFileDialog1.FileName.Length > 0 Then
            strFileName = OpenFileDialog1.FileName
            Dim xlapp As Microsoft.Office.Interop.Excel.Application = New Microsoft.Office.Interop.Excel.Application()
            Dim wb As Microsoft.Office.Interop.Excel.Workbook = Nothing
            wb = xlapp.Workbooks.Open(strFileName.ToString())
            wb.Worksheets(1).Cells.Replace(".", ",")
            wb.Save()
            wb.Close()
            Threading.Thread.Sleep(500)
            Process.Start("EXCEL.EXE", strFileName)
            End
        End If
    End Sub
End Class

Но process.start не работает *, потому что файл кажется перемещенным, даже если путь и имя файла совпадают. Как я могу решить эту проблему во время выполнения (то есть без вмешательства пользователя)?

* означает, что приложение Excel запускается, но не может открыть файл и выдает ошибку о том, что «не удается открыть файл, возможно, он был перемещен или недоступен "

1 Ответ

1 голос
/ 07 мая 2020

Я заменил

Process.Start("EXCEL.EXE", strFileName)

на

Process.Start("EXCEL.EXE", """" & strFileName & """")

Сначала не удалось, потому что имя файла содержало пробел.

...