- - PR -
Excel.Applicationについて
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-05 19:04
エクセルファイルをvb.netで印字るすプログラムを考えていますが、2箇所エラーになってしまいます。エラー箇所は、Excelオブジェクトの生成行のExcel.Applicationのところと、Excelシートの指定の Excel.Worksheet)のところに波線になってしまいます。
参照設定でMicrosoft Excel 11.0 Object Libraryを追加しているのですが、もっとなにか指定が必要なのでしょうか?ご教授願います。 (プログラム) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oXL, oWB, oSheet As Object Dim FileName As String 'ファイル名(絶対パス指定) 'Excelオブジェクトの生成 oXL = CType(CreateObject("Excel.Application"), Excel.Application) 'ファイル指定 oWB = oXL.Workbooks.Open(FileName) 'Excelシートの指定 oSheet = CType(oWB.Worksheets(1), Excel.Worksheet) 'シートの印刷 oSheet.PrintOut() End Sub | ||||||||||||||||
|
投稿日時: 2004-10-05 22:28
ラッパーの違いにより Excel ではなく、
Microsoft.Office.Interop.Excel になっている場合があります。 Imports Microsoft.Office.Interop と書き加えてみてください。 | ||||||||||||||||
|
投稿日時: 2004-10-06 08:54
だめでした。Microsoft.Office.Interopにも波線が出ました。
????わからない!! Imports Microsoft.Office.Interop Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows フォーム デザイナで生成されたコード " Public Sub New() MyBase.New() ' この呼び出しは Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後に初期化を追加します。 End Sub ' Form は、コンポーネント一覧に後処理を実行するために dispose をオーバーライドします。 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub ' Windows フォーム デザイナで必要です。 Private components As System.ComponentModel.IContainer ' メモ : 以下のプロシージャは、Windows フォーム デザイナで必要です。 'Windows フォーム デザイナを使って変更してください。 ' コード エディタを使って変更しないでください。 Friend WithEvents Button1 As System.Windows.Forms.Button <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Button1 = New System.Windows.Forms.Button Me.SuspendLayout() ' 'Button1 ' Me.Button1.Location = New System.Drawing.Point(64, 48) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(152, 23) Me.Button1.TabIndex = 0 Me.Button1.Text = "OFFICE印字" ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 12) Me.ClientSize = New System.Drawing.Size(292, 273) Me.Controls.Add(Me.Button1) Me.Name = "Form1" Me.Text = "Form1" Me.ResumeLayout(False) End Sub #End Region Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oXL, oWB, oSheet As Object Dim FileName As String 'ファイル名(絶対パス指定) 'Excelオブジェクトの生成 oXL = CType(CreateObject("Excel.Application"), Excel.Application) 'ファイル指定 oWB = oXL.Workbooks.Open(FileName) 'Excelシートの指定 oSheet = CType(oWB.Worksheets(1), Excel.Worksheet) 'シートの印刷 oSheet.PrintOut() End Sub End Class
| ||||||||||||||||
|
投稿日時: 2004-10-06 10:24
CreateObjectではなく、Newでインスタンスを生成するのではだめでしょうか?
とりあえず下記のコードは問題なく動作しました。
[ メッセージ編集済み 編集者: kanai 編集日時 2004-10-06 10:25 ] | ||||||||||||||||
|
投稿日時: 2004-10-06 12:02
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook Dim oSheet As Excel.Worksheet oXL = New Excel.Application の4箇所に波線がつきます。参照設定にはOFFICEの設定を追加しただけですが、それ以外もっと指定する必要があるのでしょうか。それともシステム的にVS.NET以外のソフトが必要なのでしょうか?
| ||||||||||||||||
|
投稿日時: 2004-10-06 12:42
こんにちは。 Microsoft ExcelX.X Object LibraryとMicrosoft OfficeX.X Object Libraryを参照設定で追加でどうですか? 僕もExcelをオートメーションで動かしていますが、Microsoft ExcelX.X Object Libraryを参照設定から削除するとご指摘の場所が波線になり、参照設定に追加すると波線が消えますよ。 | ||||||||||||||||
|
投稿日時: 2004-10-06 14:25
もしこれが原因であれば、 Imports Excel = Microsoft.Office.Interop.Excel と書いてみてはどうでしょう。 以下は補足です。 System.Windows.Forms.Labelクラスを使いたいときに
みたいにはしませんよね。
とするでしょう。 今回の件も、Microsoft.Office.Interop.Excel.Application クラスを使いたいのであれば
などと書けばいい……はずなのですが、 その書き方だと、System.Windows.Forms.Application クラスとバッティングするんですよね。 | ||||||||||||||||
|
投稿日時: 2004-10-06 14:36
皆さんありがとう御座いました。おかげさまで成功です。
|
1