none
如何在openFileDialog中開啟office檔案 RRS feed

  • 問題

  • 小弟在Form1設置了MenuStrip,並且仿照一般功能表(檔案、編輯、檢視...)
    而在其中"開啟檔案"的程式如下:

    Private Sub 開啟檔案ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開啟檔案ToolStripMenuItem1.Click
            Dim openFileDialog1 As New OpenFileDialog()
            With openFileDialog1
                .Title = "開啟Excel檔案"
                .Filter = "Excel檔案(*.XLS)|*.xls|所有檔案(*.*)|*.*"
                .ShowDialog()
            End With
            If openFileDialog1.ShowDialog() = DialogResult.OK Then
            ???
            End If
        End Sub

    經過Joe Hung高手指教,在???處修改為
    If openFileDialog1.FileName <> "" Then           
                'How to Wait for a Shelled Process to Finish
                'Get the name of the system folder.
                Dim sysFolder As String = _
                            Environment.GetFolderPath(Environment.SpecialFolder.System)
                'Create a new ProcessStartInfo structure.
                Dim pInfo As New ProcessStartInfo()
                'Set the file name member of pinfo to Eula.txt in the system folder.           
                pInfo.FileName = openFileDialog1.FileName
                'Start the process.
                Dim p As Process = Process.Start(pInfo)
                'Wait for the process window to complete loading.
                p.WaitForInputIdle()
                'Wait for the process to exit.
                p.WaitForExit()
                'Continue with the code.
                MessageBox.Show("Code continuing...")
            End If

    然而小弟在開啟txt記事本檔案沒有問題,可是開啟Excel就出現並未將物件參考設定為物件的執行個體

    請問是否要在這裡作一個CreateObject("Excel.Application")?
    那如果要開啟pdf檔案又該怎麼寫?



    2009年5月14日 上午 02:56

解答

  •             'p.WaitForInputIdle()
                
                'p.WaitForExit()
                
                'MessageBox.Show("Code continuing...")

    在下的意思是把有問題的地方先註解,看行得通嗎...
    • 已標示為解答 Lolota Lee 2009年5月21日 上午 08:05
    2009年5月14日 上午 03:30

所有回覆

  • 'Wait for the process window to complete loading. 'Wait for the process to exit. 'Continue with the code. 這三行註解? 小弟重新執行程式前,先把wimdows工作管理員的Excel處理程序結束 執行之後,可以開啟Excel檔 可是程式此時就掛在 p.WaitForInputIdle() 錯誤訊息是"並未將物件參考設定為物件的執行個體"
    2009年5月14日 上午 03:24
  •             'p.WaitForInputIdle()
                
                'p.WaitForExit()
                
                'MessageBox.Show("Code continuing...")

    在下的意思是把有問題的地方先註解,看行得通嗎...
    • 已標示為解答 Lolota Lee 2009年5月21日 上午 08:05
    2009年5月14日 上午 03:30
  • 原來是這個意思。
    小弟將這三行設為註解,檔案就可以開啟了。

    可是小弟有點比較不懂的是:
    Dim p As Process = Process.Start(pInfo)
    這行不單單只是定義p是個程序嗎?
    這行如果不執行,開啟檔案就沒反應了...
    2009年5月14日 上午 03:47