VB.NETから、

"ABC.xls"を開いた状態で
Excelを起動する方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2007/07/20 14:21:57
  • 終了:2007/07/20 23:29:27

回答(1件)

id:Kumappus No.1

くまっぷす回答回数3784ベストアンサー獲得回数1852007/07/20 15:06:24

ポイント60pt

http://jeanne.wankuma.com/tips/vb.net/excel/openbook.html

こちらが参考になると思います。

Excel.WorkbooksのOpen()を使います。

COMオブジェクトを使うことになるので、

http://support.microsoft.com/default.aspx?scid=kb;ja;316383&...

にあるような手順でオブジェクトライブラリへの参照を追加してください。

  • id:akio0911
    以下のようなコードでExcelを起動できたのですが、
    Excelをユーザが手動で終了させた後に、
    Excel.exeのプロセスが残ってしまいます。

    '================== 起動時の処理 ===================
    Dim xlApp As New Excel.Application
    Dim xlBooks As Excel.Workbooks = xlApp.Workbooks
    '既存のファイルを開く場合
    Dim xlFilePath As String = strFullPath
    Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath)
    Dim xlSheets As Excel.Sheets = xlBook.Worksheets
    Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)
    xlApp.Visible = True 'Excelを表示


    VBプログラム側で以下のようなコードを書いてやれば
    Excel.exeのプロセスを終了できることは知っているのですが、
    今回やりたいのは
    「VB.NETで起動して、ユーザーが手動で終了させる」
    ことなのです。


    何かよい手はないでしょうか?


    MRComObject(xlSheet) 'xlSheet の解放
    MRComObject(xlSheets) 'xlSheets の解放
    xlBook.Close(False) 'xlBook を閉じる
    MRComObject(xlBook) 'xlBook の解放
    MRComObject(xlBooks) 'xlBooks の解放
    xlApp.Quit() 'Excelを閉じる
    MRComObject(xlApp) 'xlApp を解放
  • id:akio0911
    以下のようにCloseとQuitをコメントアウトして
    ReleaseComObjectだけを呼び出すようにしたら
    希望通りの動作となり、
    Excel.exeが残らないようになりました。


    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
    'xlBook.Close(False) 'xlBook を閉じる
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
    'xlApp.Quit() 'Excelを閉じる
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません