VB.NET2005 Express Edition で作った、プログラムからExcelを操作したいと思います。
たとえば、プログラムのButton1をクリックをするとExcelが起動し、Textbox1.textのテキスト
がExcelのシートの指定した場所(たとえばA1)に書き込まれ、保存されるということをした
いと思います。
そこでグーグルなどで検索すると似たようなサンプルファイル(失礼、以下のようなもの)が
出てきます。
しかしこれらのコードを貼り付けて実行しようとしても
Excel.Application()
System
xlApplication
のところでエラーがでます。
もちろんプロジェクト→参照の追加→COM→Microsoft Excel *.* ObjectLibrary を参照
は行っています。
'===================================================================
' Excel.Application の新しいインスタンスを生成する
Dim xlApplication As New Excel.Application()
' Excel を表示する
xlApplication.Visible = True
' 1000 ミリ秒 (1秒) 待機する
System.Threading.Thread.Sleep(1000)
' Excel を終了する
xlApplication.Quit()
' COM オブジェクトを解放する (正しくは COM オブジェクトを解放する を参照)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
'===================================================================
何か他にすることがあるのでしょうか。
基本的な質問で申し訳ありません。
追加です。
同じようなエラーだと思うのですが以下のコードにおいて
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
の
Excel.Application
Excel.Workbook
Excel.Worksheet
のところが波線が入り、ビルドできません。
'====================================================================
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに
' チェックを入れておいて下さい。
On Error Resume Next
'オブジェクトへの参照を格納する変数を宣言(事前バインディング)
'事前バインディングを使用すると、プロパティの値を設定または取得
'するのに必要な時間を大幅に短縮できます
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
' 変数にオブジェクトの参照を代入します。Add メソッドを使って
' 新規 workbookとworksheet オブジェクトを作成します。
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Add
xlSheet = xlBook.Worksheets(1)
'エクセルを表示します。(表示しなくてもOK)
xlApp.Visible = True
' Excel のセルに値を代入します。
xlSheet.Cells(1, 1).Value = "12"
xlSheet.Cells(2, 1).Value = "34"
' Formula プロパティを使ってセルに式を挿入します。
xlSheet.Cells(3, 1).Formula = "=A1+A2" ' "=SUM(A1:A2)"
' Worksheet を名前をつけて保存します。
xlSheet.SaveAs("c:\Temp.xls")
' Quit メソッドを使って Excel を終了します。
xlApp.Quit()
' オブジェクトを解放します。
xlSheet = Nothing
xlBook = Nothing
xlApp = Nothing
End Sub
shellkenさん こんにちは。
私の環境(VB2005Express)で、新規のWindowsApplicationを作成して、
「プロジェクト→参照の追加→COM→Microsoft Excel 11.0 ObjectLibrary を参照」を実行してから、
提示さえたコードを貼り付けてみましたが、どちらのコードも、エラーにはなりませんね。
そもそも、
> System
> のところでエラーがでます。
コレ自体おかしいですよ・・・
「プロジェクト」-「xxxのプロパティ」の参照を見ると、参照済の一覧が出てくると思います。
何が表示されていますか?
#「System」とか、「Microsoft Excel *.* ObjectLibrary 」が表示されていますか?
Microsoft Excel 11.0 Object Library.COM
Microsoft Office 11.0 Object Library.COM
Microsoft Visual Basic for Application Extensibility 5.3 .COM
System.NET
大吉末吉さん
System.Data.NET
System.Drawing.NET
System.Windows.Forms.NET
System.Xml.NET
が出てきます。
やはりエラーのままです。
上は間違って送信したので改めて。
大吉末吉さんへ
Microsoft Excel 11.0 Object Library.COM
Microsoft Office 11.0 Object Library.COM
Microsoft Visual Basic for Application Extensibility 5.3 .COM
System.NET
System.Data.NET
System.Drawing.NET
System.Windows.Forms.NET
System.Xml.NET
が出てきます。
やはりエラーのままです。
ローカルにコピーするのところはFalseのままでいいんですよね。
> ローカルにコピーするのところはFalseのままでいいんですよね。
私の環境では、最初の3つ(Microsoft〜の3つ)はTrueになっていますが・・・
その他は、同じですね・・・
#新規に作成したプロジェクトですよね?
なんと言うエラーになってます?
「〜は定義されていません」?
それから、念の為確認ですが、そのPCにExcelはインストールされていますよね・・・
エラー内容は上記2番目のコードの場合、
型 'Excel.Application' が定義されていません。
型 'Excel.Workbook' が定義されていません。
型 'Excel.Worksheet' が定義されていません。
です。
などです。
新規で作成したプロジェクトです。
新規に上記のコードのみ貼りました。
Excelは2003が入っています。
多分これ。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=861029&SiteID=7
こういう場合もあるようですが・・・
(http://madia.world.coocan.jp/vb/vb_bbs2/200408_04080054.html)
> 新規で作成したプロジェクトです
って事は、それは、やっていないですよね?
念の為、オブジェクトブラウザで「excel」を指定して、検索してみてください。
変なクラスがHITしませんか?
また、
> Dim xlApp As Ex
と、(貼り付けではなく)キーボードから途中まで入力した場合、
候補画面が出ると思いますが、「Excel」が表示されますか?
また、
> Dim xlApp As Excel.
まで、入力した場合、どうなりますか?
大吉末吉さん。=======================================================
http://madia.world.coocan.jp/vb/vb_bbs2/200408_04080054.html
も参考にしてオブジェクトブラウザの中に
「Excel」と
「Microsoft Office.Core」
はありました。でもうまくいきません。
>それは、やっていないですよね?
これはどういうことでしょうか?
>念の為、オブジェクトブラウザで「excel」を指定して、
>検索してみてください。
>変なクラスがHITしませんか?
たくさんのクラス?がヒットします。
変なクラスかどうかはよくわかりません。
念のためソリューションエクスプローラの
「参照設定」-「Excel」と
「参照設定」-「Microsoft Office.Core」を右クリックででる
メニューで削除しもう一度改めてソリューションエクスプローラ
の「参照設定」右クリック-「参照の追加」-「COM」
-「Microsoft Excel 11.0 Object Library」をダブルクリック
でやってみました。
そうすると、ソリューションエクスプローラの「参照設定」の項目に
「Excel」と「Microsoft Office.Core」が追加されましたが
症状は治りません。
>Dim xlApp As Ex
>と、(貼り付けではなく)キーボードから途中まで入力した場合、
>候補画面が出ると思いますが、「Excel」が表示されますか?
表示されません。
表示される候補の中にはExcel関係は見あたりません。
>Dim xlApp As Excel.
>まで、入力した場合、どうなりますか?
何も表示されません。
Excel関係の候補自体がないので何もでないと思われます。
Blueさん======================================================
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=861029&SiteID=7
は同じ症状のようですが具体的にどうしたらいいかわかりません。
> は同じ症状のようですが具体的にどうしたらいいかわかりません。
Imports Microsoft.Office.Interop
もしくは
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
・
・
・
> 多分これ。
> http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=861029&SiteID=7
なるほど。
Microsoftが提供する「Office プライマリ相互運用機能アセンブリ」
(http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/dv_wrcore/html/wrrefofficeprimaryinteropassemblies.asp)
がインストールされていれば、
> 〜 AS Microsoft.Office.Interop.Excel.Application
で、
インストールしてなけば、「プロジェクト用の相互運用機能アセンブリが生成され」て、その場合、
> 〜 As Excel.Application
って事なんでしょうね。
私の環境には、インストールされていなかったので、
「方法 : Office のプライマリ相互運用機能アセンブリをインストールする」
(http://msdn2.microsoft.com/ja-jp/library/kh3965hw(VS.80).aspx)
に従って、「プライマリ相互運用機能アセンブリ」をインストールしてみました。
> 〜 As Excel.Application
では、エラーで、
> 〜 AS Microsoft.Office.Interop.Excel.Application
なら、OKになりました。
#「Imports Microsoft.Office.Interop」を宣言しておけば、
#「Excel.Application」でもOK。
shellken さんの環境にはインストール済みなんでしょうかね?
取り合えず、
> 〜 AS Microsoft.Office.Interop.Excel.Application
にしてみてください。
これでエラーにならないなら、Blueさんの指摘どうりと言うことです。
大吉末吉さん、Blueさん
お二人ともすばらしい。ご指摘の通りでした。
〜 AS Microsoft.Office.Interop.Excel.Application
などにしてみるとエラーがなくなりました。
これでやっとVB.NETからExcelが操作できます。
今後、同じエラーに出会った人がこの掲示板のやりとりを見て、
解決することを祈ります。
ありがとうございました。
解決チェック入れておきます。
ツイート | ![]() |