• ベストアンサー

VisualBasic.Netのフォーム上からExcelを起動するには

VisualBasic.Netのフォーム上からExcel2003を起動するにはどのようにすればよろしいでしょうか。 http://anetm.com/dev/tools/vbdotnet/112215.htm を試してみましたが、 型Excel.Applicationが宣言されてません 型Eexcel.Workbookが宣言されてません となり、うまくいきませんでした。 宜しくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • keitakuna
  • ベストアンサー率42% (6/14)
回答No.3

URLに記されている項番1を行い、Excelへの参照を追加した場合、オブジェクトプラウザに「Interop.Excel」と表示されていますか。 もし「Interop.Excel」がなく、「Microsoft.Interop.Excel」と表示されているようでしたら、次のようなImportsステートメントをファイルの先頭に記述する必要があります。 Imports Excel = Microsoft.Office.Interop.Excel

maiko100
質問者

お礼

早速有難う御座いました。ご指摘のとおり「Interop.Excel」がなく、「Microsoft.Interop.Excel」と表示されていました。 早速行ったところ、解決しました!

その他の回答 (5)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.6

もう一度試して見ました。 >読み出したファイルは[読み取り専用]になるようですね これは予めBook1.xlsを開かずに置くと問題ないようです。 データを入力するとBook1.xlsを保存しますかと聞いて くるので「はい」にします。 まず TextBoxを三つ用意して1は行(row),2は列(col)の位置を指定します。 Imports System.runtime.InteropServices Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '------配列設定----- Dim Eapp As Object 'エクセルアプリケーションの定義 Dim Book As Object 'ブックの定義 Dim Sheet As Object 'シートの定義 Dim row, col As Integer 'colは列、rowは行 Dim filepath As String = "C:\book1.xls" '------エクセルファイルを開く&表示------- Eapp = System.Reflection.Missing.Value Eapp = CreateObject("Excel.Application") Eapp.Visible = True Book = Eapp.Workbooks.Open(filepath) 'エクセルファイルのopen Sheet = Book.Worksheets("sheet1") '-----エクセルデータのアクセス------ row = Val(TextBox1.Text) col = Val(TextBox2.Text) Sheet.Cells(row, col).Value = TextBox3.Text Eapp.DisplayAlerts = False '保存時の問合せのダイアログを非表示に設定 REM Book.SaveAs(filepath) 'ファイルに保存 Eapp.DisplayAlerts = True '元に戻す REM Eapp.application.visible = False 'Sheet の開放 'Book を閉じる Marshal.ReleaseComObject(Sheet) Sheet = Nothing Marshal.ReleaseComObject(Book) Book = Nothing If Not Eapp Is Nothing Then Eapp.Quit() Marshal.ReleaseComObject(Eapp) Eapp = Nothing End If GC.Collect() End Sub

参考URL:
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/office.aspx
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

それ以上の情報を希望であればこちらを 参照してください。 http://www.bcap.co.jp/hanafusa/ もう既にお気づきかもしれませんが うまくいくようで実はそうではない 事が何故か多そうです。

参考URL:
http://www.bcap.co.jp/hanafusa/
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.4

>filepath のところで、波線表示となり、エラーとなるのですが Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '------配列設定----- Dim Eapp As Object 'エクセルアプリケーションの定義 Dim Book As Object 'ブックの定義 Dim Sheet As Object 'シートの定義 'ファイルパスの指定 --------------------追加してください Dim filepath As String = "C:\Book1.xls"

maiko100
質問者

お礼

誠に有難う御座いました!! エクセルを開くだけでなく、閉じる動作まで一連の動きが出来ました。読み出したファイルは[読み取り専用]になるようですね。すると、追加書き込みは不可能なのでしょうか

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

同様の問題が発生したのでこのように しました。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '------配列設定----- Dim Eapp As Object 'エクセルアプリケーションの定義 Dim Book As Object 'ブックの定義 Dim Sheet As Object 'シートの定義 '------エクセルファイルを開く&表示------- Eapp = CreateObject("Excel.Application") Eapp.application.visible = True Book = Eapp.Workbooks.Open(filepath) 'エクセルファイルのopen Sheet = Book.Worksheets(1) '----処理----- Eapp.DisplayAlerts = True '元に戻す Eapp.application.visible = False Eapp = Nothing Book = Nothing 'xlBook を閉じる Sheet = Nothing 'xlSheet の開放 End Sub

maiko100
質問者

お礼

有難う御座います! しかし、 filepath のところで、波線表示となり、エラーとなるのですが

回答No.1

質問のURLに記されている項番1を行いましたか?

maiko100
質問者

補足

早速ありがとうございました。 URLに記されている項番1を行いましたが、 ソリューションエクスプローラの参照設定には「Excel」が追加されていますが、 Dimステートメンドを作成するときにAs以下に「Excel.Application」型「Eexcel.Workbook」型が出てこないという状況です。