• 締切済み

WHSとEXCELの連携について教えて下さい

EXCELで、 (1) Public で変数を宣言 Public strA as String (2)標準モジュールで、そのBOOKのデータをいろいろ編集し、(1)の[strA] 変数に入れています test() (3)WHSで、(2)を呼出しています ExcelApp.Run( "Test.xls!Module1.test" ); ここまでは、できていいるのですが... WHSで(1)の[strA] 変数の値を取得する事はできるのでしょうか? 何か方法があれば教えて下さい PS. なぜこのような事をするかというと、 EXCELでは(2)test() 終了後、(1)の[strA] 変数の値を別シートに吐き出しています それとは別に、WEBシステムからも、(1)の[strA] 変数の値をWEB上に載せたいのです JAVASCRIPTでガリガリデータ編集する事もできますが、 せっかく(2)のモジュールがあるので、それが利用できないかと考えています ご教授、宜しくお願いします

みんなの回答

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

「JAVASCRIPTでガリガリデータ編集する事もできます」とか「WEBシステムから」とお書きなのですが、そもそもどのような場面で、その システム をお使いなのでしょうか?  例えば、aqua_kaiji さんご自身だけが、業務上使用される システム なのか、あるいは、複数の クライアント(?) が、とある WEbページ に アクセス して、そこに配置された ボタン でも クリック すると、「(3)WHS」によって「(2)を呼出」すみたいなことでしょうか?  少なくとも、「Excel VBA」・「WSH」・「JavaScript」の3つの プログラム をお使いのようですが、もう少し操作内容を整理なさって、(折角、利用されているのであれば)「Excel VBA」で殆どの作業をされてはいかがでしょうか?  例えば、「Excel VBA」から「CreateObject("InternetExplorer.Application")」によって、「WEBシステム」の フォーム などに「値」を書き込むとか、あるいは、「CreateObject("Scripting.FileSystemObject")」によって、別途、txtファイル に「値」を書き込み、その値を「WSH」から取得するとか。。。  問題なのは、「変数の値をWEB上に載せ」る方法論かと存じますが、それは、「WEBシステム」を使われるのが aqua_kaiji さんだけなのか、それとも複数の ユーザー なのかによっても変わりますし、また、aqua_kaiji さんが変更できる(資格/スキルがある)のが「WEBシステム」なのか「Excel VBA」なのかによっても話が変わろうかと存じます(今のご質問のままでは回答者が、自身の スキル と相談しようがありません)。

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.3

No2ですが、ライセンス的には禁止されていますが、それは、ターミナルサービスや、クラウドなどエクセルを商用的に、個人、法人にサービスを提供する事を禁止しています。あくまでシステムの一部として使用されている場合のみ、条件付でエクセルから出力されるデーターのみの使用です。エクセルそのものを使う事は昔から禁止されています。 ほんまかいな????

aqua_kaiji
質問者

お礼

いろいろ教えて頂きありがとうございました 勉強になりました

  • 0909union
  • ベストアンサー率39% (325/818)
回答No.2

>ライセンス違反になるとしています 本家の公式コメント http://office.microsoft.com/ja-jp/excel-help/HP005256165.aspx (検索の仕方) http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=WEb%E4%B8%8A%E3%81%A7MS+Office%E3%82%92%E3%83%87%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E3%81%86 つまり、使用可能です(条件付です)。 >WHSで(1)の[strA] 変数の値を取得する事はできるのでしょうか そもそも、その発想は間違っていると言うより、認識違いです。 エクセルは、COMインターフェースを通じて利用するものであって、 WSH(スペル間違っていましたね) の機能ではありません。なのでCOMが使えるプログラム言語からな、どこからでも呼び出せるわけです。 あなたが問題にしているのは、そのCOMで開いたインスタンスの変数の値が呼び出し元で取得できるか? と言うことだと思いますが、できます。 エクセルなら、いろんなやり方があるかと思います。 例えば、どこかのセルに受けこみ、そのセルの値を取得すればいいし、COMオブジェクトのプロパティーの値やメソッド(クラス定義)を自作して、渡す方法もあります。 誤解してはいけないのは エクセルの変数 strAを呼び出しもとの言語の変数に直接代入する var wshvar = strA ====== Dim wshvar wshvar=strA なんて事はできません。呼び出すのはあくまでCOMオブジェクトなのでエクセルの中で使用しているVBAを呼び出しているわけではありません。 逆に言えば、そのCOMオブジェクトにぶら下がっているオブジェクトなら、ほぼ全てにアクセスできます。もちろんCOM(エクセル)側がCOMの流儀にしたがって公開していれば、と言うことです。 なので、あなたがまず勉強しないといけないのはCOMです。 及び、オブジェクト指向のプログラミングです。 これが分かって初めて、簡単に発想し、できるようになります。 そのためにも、エクセルオブジェクトのモデル構造を理解しましょう。ヘルプに出ています。 理解したら、VBAで(エクセル中で)そのモデルにユーザー定義プロパティなどを追加できるように勉強しましょう。もちろんメソッドでも、オブジェクトでもかまいません。

aqua_kaiji
質問者

お礼

いろいろ教えて頂きありがとうございました 勉強になりました

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

(2)のモジュールはExcel VBAでしょうか。 でしたら、マイクロソフトはWebから不特定多数の人向けにExcelを利用させるようにすることはライセンス違反になるとしています。 また、上記のライセンス問題がなかったとしても、Excelはマルチスレッドセーフティな造りになっていないため、タイミングによっては複数のブックのデータがごちゃ混ぜになるおそれがあります。 さらに、何らかの問題が発生してエラーとなった場合はサーバーにダイアログが表示されるだけでWebからアクセスしている人にはなにもできないしどうなっているかも分かりません。 (前にやった仕事の関連で調査して、そういうことを書いてるページに行き当たったんだけど、どこだったかなぁ) というわけで、回答としては、「JAVASCRIPTでガリガリデータ編集」してください、としかいえません。

aqua_kaiji
質問者

お礼

即回答頂きありがとうございました 勉強になりました

関連するQ&A

専門家に質問してみよう