none
VB.NETでExcelを開きたいのですが。 RRS feed

  • 質問

  • 初めまして。

    VB.NET初心者で初めての質問です。

    よろしくお願いします。

     

    VB.NETでExcelを開きたいのですが、最初このようにしたら:

     

    Dim oExcelApp As Excel.Application = Nothing
    Dim oWorkbook As Excel.Workbook = Nothing
    Try
        oWorkbook = oExcelApp.Workbooks.Open(strFilePath, , False)
    Catch ex As Exception
        MsgBox("Error")
        Return
    End Try

     

    OpenのときにoExcelApp とoWorkbook がNothingで、ExceptionとなりMsgBoxが出ます。

     

    そこで、このように変えてみました:

     

    Dim oExcelApp As Excel.Application
    oExcelApp = CType(CreateObject("Excel.Application"), Excel.Application)
    Dim oWorkbook As Excel.Workbook = oExcelApp.Workbooks.Add
    Try
        oWorkbook = CType(CreateObject("Excel.Workbook"), Excel.Workbook)
    Catch ex As Exception
     MsgBox("Error")
        Return
    End Try

     

    今度は、Addの時にデバッガーが”メンバが見つかりません。”というエラーを出します。

     

    本当は、次のように New を使いたいところですが:

     

    Dim oExcelApp As New Excel.Application

    そもそもこのような行が入れられません。(VBの編集ウィンドウに New cannot be used on an interface というバルーンメッセージが出ます。)

     

    何か良い方法はありませんでしょうか?

    また、私の方でとんでもなく間違ったことをしているのでしょうか?

     

    ご意見、よろしくお願いいたします。

    marupi

    2008年9月17日 20:31

回答

  •  marupi さんからの引用

    本当は、次のように New を使いたいところですが:

     

    Dim oExcelApp As New Excel.Application

    そもそもこのような行が入れられません。(VBの編集ウィンドウに New cannot be used on an interface というバルーンメッセージが出ます。)

     

    以下を追加して、名前空間をインポートしてみて下さい。

    Imports Microsoft.Office.Interop

    2008年9月18日 1:03
    モデレータ
  •  marupi さんからの引用

    oWorkbook = oExcelApp.Workbooks.Open(strFilePath, , False)

     

    ここ、Workbooks の参照を取り忘れていますね。
    これでは参照カウントをデクリメントすることができません。

    http://jeanne.wankuma.com/tips/vb.net/programming/releasecom.html

     

    相性の悪い .NET から Excel (COM) をどうこうするのはやめた方が良いです。
    COM 専用の言語で処理を作りこんで .NET から呼び出すか、ScriptControl を使った方が良いですね。

    2008年9月18日 4:54
  • marupi さん
    以下のようにしたらどうでしょう。

     

        Dim oExcelApp As New Excel.Application
        Dim oWorkbooks As Excel.Workbooks = oExcelApp.Workbooks
        Dim oWorkbook As Excel.Workbook
        Dim oSheets As Excel.Sheets
        Dim oSheet As Excel.Worksheet
        Dim strFilePath As String = "ほげほげ.xls"

        Try
          oWorkbook = oWorkbooks.Open(strFilePath)
          oSheets = oWorkbook.Worksheets
          oSheet = oSheets.Item(1)   '例えば最初のシート
          oExcelApp.Visible = True  '試しにEXCELを表示する
        Catch ex As Exception

       MsgBox("Error")
        End Try

    2008年9月20日 13:54

すべての返信

  •  marupi さんからの引用

    本当は、次のように New を使いたいところですが:

     

    Dim oExcelApp As New Excel.Application

    そもそもこのような行が入れられません。(VBの編集ウィンドウに New cannot be used on an interface というバルーンメッセージが出ます。)

     

    以下を追加して、名前空間をインポートしてみて下さい。

    Imports Microsoft.Office.Interop

    2008年9月18日 1:03
    モデレータ
  •  marupi さんからの引用

    oWorkbook = oExcelApp.Workbooks.Open(strFilePath, , False)

     

    ここ、Workbooks の参照を取り忘れていますね。
    これでは参照カウントをデクリメントすることができません。

    http://jeanne.wankuma.com/tips/vb.net/programming/releasecom.html

     

    相性の悪い .NET から Excel (COM) をどうこうするのはやめた方が良いです。
    COM 専用の言語で処理を作りこんで .NET から呼び出すか、ScriptControl を使った方が良いですね。

    2008年9月18日 4:54
  • marupi さん
    以下のようにしたらどうでしょう。

     

        Dim oExcelApp As New Excel.Application
        Dim oWorkbooks As Excel.Workbooks = oExcelApp.Workbooks
        Dim oWorkbook As Excel.Workbook
        Dim oSheets As Excel.Sheets
        Dim oSheet As Excel.Worksheet
        Dim strFilePath As String = "ほげほげ.xls"

        Try
          oWorkbook = oWorkbooks.Open(strFilePath)
          oSheets = oWorkbook.Worksheets
          oSheet = oSheets.Item(1)   '例えば最初のシート
          oExcelApp.Visible = True  '試しにEXCELを表示する
        Catch ex As Exception

       MsgBox("Error")
        End Try

    2008年9月20日 13:54
  • こんにちは。中川俊輔 です。

     

    皆様、回答ありがとうございます。

     

    marupiさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    追加の質問等ありましたら、是非投稿してみてください!

    また、勝手ながら有用な情報と思われる回答へ回答済みチェックをつけさせていただきました。

     

    今後もフォーラムをよろしくお願いします。

    それでは!

    2008年10月3日 4:18