tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Excel Objectライブラリについて
投稿日: 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());
  }
}

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。