- PR -

VBSで作成したFunctionをC#側から呼びたい。

投稿者投稿内容
オウドー
ベテラン
会議室デビュー日: 2007/06/05
投稿数: 59
投稿日時: 2007-09-05 15:13
皆様、お久しぶりです。

早速質問ですが件名に書いてる通りです。

VBSを使う理由はC#で直接でExcelを扱ってはゴミが多くなり尚且つ、可読性の悪化、
保守性の悪さなどから断念いたしました。

そこでVBSを経由して、C#で呼び出すって形をとりました。

今現在は、VBSの中でFunctionを作成した段階で困っております。

色々、調べてはみたのですがVBSの情報量がとても少なかったです。

参照ページによるとVBSのFunctionを呼び出すことができるほかに、引数も
使えるということなのですがこの参照ページの通り行ってみても上手くいきませんでした。usingに関しても参照ページを真似てみたのですが
[ScriptControl scl = new ScriptControl();]
以上を作成することができませんでした。

尚、参照設定はしております。

開発環境 VS2005
開発言語 C#

よろしくお願いします。

#編集追記
この参照ページとは参照記事のことです。わかりにくい表現申し訳ありません。



[ メッセージ編集済み 編集者: オウドー 編集日時 2007-09-05 15:15 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-05 15:23
引用:

オウドーさんの書き込み (2007-09-05 15:13) より:

参照ページによるとVBSのFunctionを呼び出すことができるほかに、引数も使えるということなのですがこの参照ページの通り行ってみても上手くいきませんでした。usingに関しても参照ページを真似てみたのですが
[ScriptControl scl = new ScriptControl();]
以上を作成することができませんでした。
尚、参照設定はしております。


参照ページは見れませんが、たぶん名前空間が足らないのでしょう。
MSScriptControl.ScriptControl ですよね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
オウドー
ベテラン
会議室デビュー日: 2007/06/05
投稿数: 59
投稿日時: 2007-09-05 15:30
引用:

じゃんぬねっとさんの書き込み (2007-09-05 15:23) より:

参照ページは見れませんが、たぶん名前空間が足らないのでしょう。
MSScriptControl.ScriptControl ですよね。




早速のお返事ありがとうございます。
名前空間にはusing MSScriptControl;をいれております。
参照記事見れないですね。。。私も見れなくなりました。

http://www.google.co.jp/search?hl=ja&q=C%23%E3%80%80VBS%E3%80%80%E6%93%8D%E4%BD%9C&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
申し訳ないです。
上から4つ目のところが参照記事と同じページになります。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-09-05 16:31
直接の回答ではありませんが。。。

引用:

[ScriptControl scl = new ScriptControl();]



ActiveX コントロールは new しただけで使っちゃ駄目です。

それで動くものもあるけど、ソース見て確認したとかドキュメントに書いてあったとかでもないかぎり、動作保証は無いものと考えるべきです。

ウィンドウとしての実体を持つ場合があるので、Form に貼り付けて使うのが原則です。

.NET の場合 COM 相互運用層がうまいことやってくれるのかもしれないけど、自動生成された Interop.dll の IL を解析して確証を得たりしたんでも無ければ避けるのが無難です。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-05 16:32
そうでしたか... では、

引用:

[ScriptControl scl = new ScriptControl();]
以上を作成することができませんでした。


このあたりについて、どう作成できなかったのか詳しく説明をお願いします。 ビルドができないのか、例外が発生するのか、インスタンスがなぜか作成されないのか、その他諸々、情報はできるだけ提示してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
オウドー
ベテラン
会議室デビュー日: 2007/06/05
投稿数: 59
投稿日時: 2007-09-05 16:40
引用:

ActiveX コントロールは new しただけで使っちゃ駄目です。

それで動くものもあるけど、ソース見て確認したとかドキュメントに書いてあったとかでもないかぎり、動作保証は無いものと考えるべきです。

ウィンドウとしての実体を持つ場合があるので、Form に貼り付けて使うのが原則です。

.NET の場合 COM 相互運用層がうまいことやってくれるのかもしれないけど、自動生成された Interop.dll の IL を解析して確証を得たりしたんでも無ければ避けるのが無難です。




早速のお返事ありがとうございます。そうですね。ドキュメントに書いてない限り
完璧に動作するって保障がありませんね。
引用:

[ScriptControl scl = new ScriptControl();]
以上を作成することができませんでした。
このあたりについて、どう作成できなかったのか詳しく説明をお願いします。 ビルドができないのか、例外が発生するのか、インスタンスがなぜか作成されないのか、その他諸々、情報はできるだけ提示してください。



お返事ありがとうございます。私自身VBSを使うのは初めてで試行錯誤により
[ScriptControl scl = new ScriptControl();] を使用しました。
参照記事にも同じようなことをしており、いけるけなと思い使った次第です。
どう作成できなかったについてですがインテリセンスにてScriptControlが出てこなかった
ので作成しませんでした。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-05 17:20
引用:

オウドーさんの書き込み (2007-09-05 16:40) より:

お返事ありがとうございます。私自身VBSを使うのは初めてで試行錯誤により
[ScriptControl scl = new ScriptControl();] を使用しました。
参照記事にも同じようなことをしており、いけるけなと思い使った次第です。
どう作成できなかったについてですがインテリセンスにてScriptControlが出てこなかったので作成しませんでした。


"使用しました"? "作成しませんでした"?
よくわかりませんが、参照設定は正しくできていますでしょうか? 私の環境ですと問題なくインテリセンスに表示されます。

コード:

    MSScriptControl.ScriptControl scr = new MSScriptControl.ScriptControl();


インテリセンスに表示されないとなると、参照設定できていないとしか思えません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
オウドー
ベテラン
会議室デビュー日: 2007/06/05
投稿数: 59
投稿日時: 2007-09-05 17:24
引用:


インテリセンスに表示されないとなると、参照設定できていないとしか思えません。




一応名前空間には以下を設定しております。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MSScriptControl;
using System.Runtime.InteropServices;
using System.Collections;
using System.Threading;

参照先にはExcel及び、Sprict Controlを設定しております。
これ以外に、必要な名前空間がいるみたいですね。

以下編集追記
----------------------
引用:

じゃんぬねっとさんの書き込み (2007-09-05 17:20) より:

"使用しました"? "作成しませんでした"?
よくわかりませんが、参照設定は正しくできていますでしょうか? 私の環境ですと問題なくインテリセンスに表示されます。



インテリセンスされませんでしたのでコードは作成しませんでした。

[ メッセージ編集済み 編集者: オウドー 編集日時 2007-09-05 17:31 ]

以下さらに編集です
---------------------
インテリセンスに出てきました!!
参照設定の項目を削除し、再び設定することによりちゃんと行われるようになりました。
ありがとうございました。

[ メッセージ編集済み 編集者: オウドー 編集日時 2007-09-05 17:35 ]

スキルアップ/キャリアアップ(JOB@IT)