電子書籍の厳選無料作品が豊富!

Microsoft SQL ServerのReport Service機能を使って、データの一覧をExcelに出力するようなツールを作りました。
次に、出力されたExcelにデータを追記して、SQL Serverのテーブルにデータを書き戻すということをしようとしています。
そこで、出力されたExcelに、書き戻しボタンを組み込んでしまおうと考えたのですが、外部のプログラムからExcelにマクロを組み込むにはどうしたらよいのかがわかりません。

書き戻しボタンを持つフォーマットファイルを用意しておいて、そこにデータを出力する、というやり方もあるかとは思いますが、Report Serviceが勝手にExcelへの出力をやってくれるので、今回はそのやり方ではなく、外部からVBAを組み込むという方針で考えております。

A 回答 (2件)

(1)VBAのプログラムをExportしておく。

→ "hoge.bas"
(2)該当ブックで、下記メソッドを実行する。
 例:WorkBooks(1).VBProject.VBComponents.Import "hoge.bas"
これで、外部にあるBasicプログラムを取り込めます。
ところで、「外部のプログラム」って何ですか?COMオブジェクトが
扱える言語ですよね?

この回答への補足

VBProjectがエラーで落ちたため、調べたところ、セキュリティの設定で「VBAプロジェクトオブジェクトモデルへのアクセスを信頼する」にチェックを入れる必要がありました。
この処理自体もプログラムでやっちゃうことってできるのでしょうか?

補足日時:2009/10/07 17:55
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

外部プログラムはJScript?だと思います。.jsの拡張子です。
クライアントサイドで動くやつです。
Excel VBAみたいな感じでExcelのデータを扱えるので、大丈夫だと思います。

あと、そのExportしたプログラムを動かすためのボタンも同様に取り込み可能ですか?

お礼日時:2009/10/07 15:44

>ボタンも同様に取り込み可能ですか


ボタンは作るんです。
WorkSheet(1).Buttons.Add 横位置, 縦位置, 幅, 高さ
WorkSheet(1).Buttons(1).Caption = "巻き戻し"
WorkSheet(1).Buttons(1).OnAction = "メソッド"

それと、Windowsであるなら、VBScriptで操作しないとExcelの
インスタンスが消滅しませんので、VBScriptで実施するか、
JavaScriptにこだわるなら、ScriptControlオブジェクト上で、
VBSのステートメントを実行するような方法で操作します。
    • good
    • 0
この回答へのお礼

作れるんですね!!

やってみます。
ありがとうございます。

お礼日時:2009/10/07 17:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!