Excel VBAを外部プログラムから組み込む方法

このQ&Aのポイント
  • Microsoft SQL ServerのReport Service機能を使って、データの一覧をExcelに出力するようなツールを作成しました。
  • 出力されたExcelにデータを追記し、SQL Serverのテーブルにデータを書き戻すために、外部のプログラムからExcelにマクロを組み込む方法を知りたいです。
  • 書き戻しボタンを持つフォーマットファイルを用意する方法も考えられますが、今回はReport Serviceを使って自動でExcelに出力する方法ではなく、外部からVBAを組み込む方法を探しています。
回答を見る
  • ベストアンサー

Excel VBAを外部プログラムから組み込む方法

Microsoft SQL ServerのReport Service機能を使って、データの一覧をExcelに出力するようなツールを作りました。 次に、出力されたExcelにデータを追記して、SQL Serverのテーブルにデータを書き戻すということをしようとしています。 そこで、出力されたExcelに、書き戻しボタンを組み込んでしまおうと考えたのですが、外部のプログラムからExcelにマクロを組み込むにはどうしたらよいのかがわかりません。 書き戻しボタンを持つフォーマットファイルを用意しておいて、そこにデータを出力する、というやり方もあるかとは思いますが、Report Serviceが勝手にExcelへの出力をやってくれるので、今回はそのやり方ではなく、外部からVBAを組み込むという方針で考えております。

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

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

toshiya8
質問者

お礼

回答ありがとうございます。 外部プログラムはJScript?だと思います。.jsの拡張子です。 クライアントサイドで動くやつです。 Excel VBAみたいな感じでExcelのデータを扱えるので、大丈夫だと思います。 あと、そのExportしたプログラムを動かすためのボタンも同様に取り込み可能ですか?

toshiya8
質問者

補足

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

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

>ボタンも同様に取り込み可能ですか ボタンは作るんです。 WorkSheet(1).Buttons.Add 横位置, 縦位置, 幅, 高さ WorkSheet(1).Buttons(1).Caption = "巻き戻し" WorkSheet(1).Buttons(1).OnAction = "メソッド" それと、Windowsであるなら、VBScriptで操作しないとExcelの インスタンスが消滅しませんので、VBScriptで実施するか、 JavaScriptにこだわるなら、ScriptControlオブジェクト上で、 VBSのステートメントを実行するような方法で操作します。

toshiya8
質問者

お礼

作れるんですね!! やってみます。 ありがとうございます。

関連するQ&A

  • SQLとVBA

    エクセル上のある2つのセルに年月日をそれぞれ入れ、マクロを実行する(ボタンを押す)と、 外部にあるDB(オラクル)にアクセスしSQLを実行し、セルに入れた日付の範囲内の データをエクセル上に落とすプログラムを組みたいのですが、まったく分かりません。 ちなみに、外部にアクセスすることも出来ますし、SQLで決まった期間のデータを引っ張ることも出来ます。 かなり困っています。教えてください。

  • エクセルVBAでの外部トリガ

    エクセルでマクロの記憶などを使い簡単な動作を実現しています。 マクロの実行に「ボタン」のクリックなどを設定したりしています。 そんな状態で質問です。 エクセルを立ち上げておいて外部トリガでマクロを起動させることはできないのでしょうか? マウス操作やキー入力は無しで起動させたいです。 アドバイスお願いします。

  • VBAに関する質問です。

    VBAに関する質問です。 エクセルのマクロでDBのダンプツールを作成しようと試みています。 このダンプツールでは、データベース上のテーブルデータと完全に一致するデータをエクセルシート上に出力することを目的としています。 しかし普通に出力を行うと、エクセルが勝手にデータ型を変換してしまい、一致するデータを出力できません。 そこで、データ型の判別を行い、それぞれのデータ型に対して処理を行うことでこの問題を解決しようと考えたのですが、データ型の判別方法がわからず、つまづいています。 通貨型やバイナリ型のデータはどうすれば判別できるのでしょうか? また、現在他のデータ型に対して、一つ一つISNULLやISDATEなどの関数を用いて判別を行っているのですが、もっと効率のよい方法があれば教えてください。 よろしくお願い致します。 作成環境:WindowsXP 作成ツール:MicrosoftExcel2003 サーバー:SQL Server

  • オープンできないexcelファイルからVBAを取り出せるか?

    自宅でEXCEL2000でVBAを作成しました。FDで仕事場に持ち込むと EXCELオープン→マクロの有効→強制終了 になってしまいます。マクロを無効としても同じです。 このサイトの過去の質問で「開けないエクセルのデータを取り出すことができる」とありましたが、エクセルファイルに組み込んであるVBAのコードは取り出せることが可能なのでしょうか??よろしくお願いします。 ちなみにデータは外部参照やワードで開いて取り出すことができました。 OS:WIN95 B EXCEL:2000 (9.0.3821 SR-1)

  • ACCESSのVBAについて

    仕事でACCESSのVBAの知識が必要になった為、勉強しようと考えていますが、オススメの参考書がありましたら、教えて下さい。 今のところ、やりたい事は、CSVデータを取り込んだ後、定型のExcelフォーマットに編集し、出力するというVBAを作りたいです。 プログラミングの知識としては、COBOLやExcelマクロまでの知識はあります。 よろしくお願いいたします。

  • エクセル2003で作ったVBAが2007で動かない

    現在、エクセル2003で作成したVBAがエクセル2007だと、マクロを有効にして起動させようとするとコンパイルエラーとなって動作しない現象が起きていて困っています。 どなたか、解決方法をご教授頂けないでしょうか? ・VBAを含んだファイルを開いて、マクロを有効にすると ”コンパイルエラー:変数が定義されていません” というエラーボックスが出てきてプログラムの矢印のポイントがPrivate Sub User Form_Initialize() のところを指したまま止まってしまう。 ・このVBAはエクセルの表の書かれたデータをRS-232Cで出力するようなプログラムが使われていて、MSCommというものが使われています。この関連のプログラムが2003と2007では互換がないということはありますでしょうか? どうぞ、よろしくお願い致します。

  • Excel マクロ SQL実行について

    いつもお世話になっております。 現在、Excel1997と2007でマクロを作成しております。 使用している環境は様々でOSは2000~XPまでです。 っで質問なんですが、「マクロ」というシートと「データ」というシートがあったとして、「マクロ」シートにはボタンがあり、ボタンを押すとマクロが実行します。 マクロが実行されると「データ」というシートにあるデータをマクロ内のSQLで集計して、新しい「出力」というシートに吐き出します。 現在マクロ内のSQLはDAOライブラリを使用しています。EXCELマクロ内でSQLを使用する場合にDAOやADO等のライブラリを使用せずにSQLを実行することは可能でしょうか?

  • Excel 2003のVBAマクロデータをExcel 2007で見たい

    Excel 2003のVBAマクロデータをExcel 2007で見たい。 Excel 2003でVBAマクロを登録したExcelファイルがありますが、今回、Excel 2007をインストールして、該当ファイルを開いたところ、「マクロデータを削除しました。」とメッセージが出て、VBEを起動してもマクロが見えなくなりました。OSはWindowsXP SP3です。Excel 2003で登録したVBAマクロをExcel 2007で削除されないで、次の2点について、可能にするにはどうすればよいか、ご教示願います。 (1)マクロデータを残す方法。 (2)マクロ起動する方法。

  • Excelでこんな作業できますか?

    Excelを使ううちにVBAという高度な機能があることを知ったのですが、 VBAやマクロをつかって ファイルAとファイルBの内容を比べて、 重複する内容を取り除いてファイルCに出力する。 ということって可能でしょうか。 具体的に書くと ファイルAに「あ、い、う、え、お」 ファイルBに「あ、か、さ、た、な」 という風にフォーマットが決まっている書類があったとして、 これを、「あ(2件重複)、い、う、え、お、か、さ、た、な」というように 重複した「あ」を1つにまとめて何件重複したかを追記した ファイルCを出力したいのですが・・・。 アドバイスよろしくお願いします。

  • エクセルVBAでVBAの修正は出来るのでしょうか?

    エクセルVBAでVBAの修正は出来るのでしょうか? あるエクセルファイルにマクロを組み込んでいます(ユーザーフォームも使用)。 このエクセルファイルを複数個フォルダ内にコピーしています。 このコピーした全てのファイルのマクロの修正をVBAで出来ないかと考えています。 修正箇所はモジュール内のコード修正、モジュールの追加、既存のユーザーフォームにボタン等の追加等です。 エクセルは2003を使用しています。 どなたか教えてください。

専門家に質問してみよう