タイトル | : Re: Excel Objectライブラリについて |
記事No | : 375 |
投稿日 | : 2003/08/20(Wed) 02:00 |
投稿者 | : 魔界の仮面弁士 |
> .NETからExcelのインスタンスを作成し、既存ファイルを開く処理を > XPと2000の両者で実行したいと考えています。
これは、Windows XP/2000 ではなく、Excel 2002/2000という事でしょうか? (注) Office XPに含まれているのは、Excel XPではなく、Excel 2002です。
> *C#でのコーディング方法もご存知でしたら重ねて教えてください C#は専門外なので、間違っているかも知れませんが……一応回答しておきます。
> この場合参照先のライブラリをどのように設定すればよいのでしょうか。 参照設定せずに、遅延バインディングで利用するという方法があります。 この場合、何通りかの書き方があります。
==== JScript.NET ==== import System; import System.Windows.Forms; var O : System.Object = new ActiveXObject('Excel.Application'); O.Visible = true; MessageBox.Show(O.Version);
==== VB.NET (Option Strict Off) ==== Option Explicit On Option Strict Off Imports System Imports Microsoft.VisualBasic Module Module1 Sub Main() Dim O As System.Object = CreateObject("Excel.Application") O.Visible = True MsgBox(O.Version) End Sub End Module
==== VB.NET (CallByName関数) ==== Option Explicit On Option Strict On Imports System Imports Microsoft.VisualBasic Module Module1 Sub Main() Dim O As System.Object = CreateObject("Excel.Application") CallByName(O, "Visible", CallType.Let, True) MsgBox(CallByName(O, "Version", CallType.Get)) End Sub End Module
==== VB.NET (リフレクション) ==== Option Explicit On Option Strict On Imports System Imports Microsoft.VisualBasic Module Module1 Sub Main() Dim O As Object = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application")) Dim T As Type = O.GetType() T.InvokeMember("Visible", Reflection.BindingFlags.SetProperty, Nothing, O, New Object() {True}) MsgBox(T.InvokeMember("Version", Reflection.BindingFlags.GetProperty, Nothing, O, New Object() {})) End Sub End Module
==== C#.NET ==== using System; using System.Windows.Forms; public class CommandLine { public static void Main() { Object O = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application")); Type T = O.GetType(); T.InvokeMember("Visible", System.Reflection.BindingFlags.SetProperty, null, O, new object[] {true}); MessageBox.Show(T.InvokeMember("Version", System.Reflection.BindingFlags.GetProperty, null, O, new Object[] {}).ToString()); } }
|