- ベストアンサー
異なる言語でツール作成可能でしょうか?
VB(オブジェクト指向)を使用して、エクセルにデータを取り込みたいのですが、 可能でしょうか? できる場合、どのようにすれば良いのでしょうか。 考え方から、具体的な内容まで教えていただきたくよろしくお願いいたします。 知識不足であるため、分からないところが多々あると思います。 その場合、どういったところを調べると良いかご指摘いただきたく。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データの受渡方法 その1.データベースから取る方法 外部プログラムがデータベースにデータをセットし、その後、 外部プログラムが、EXCELの指定したBOOKを起動、BOOK 又は EXCELアドインの起動時に実行されるマクロを利用して EXCEL 側のマクロで、ADO や ODBC経由でデータを取得する その2.ファイルから取る方法 基本的には、その1.と操作は同じ、外部プログラムは、デ ータベースではなく、CSV形式や、EXCELのBOOK形式のファイル を作成して、その後、外部プログラムがEXCELの指定したファ イルを起動、アドイン形式のBOOKが起動時データを読み込む その3.EXCELを外部プログラムが操作する方法 ActiveXオートメーション (旧 OLEオートメーション)と呼ば れる方法を利用して、外部プログラムがEXCELを操作する方法 EXCELのマクロで出来る事はほぼ全て出来るが、 数式バー等で マウスをクリックする等を行うと、操作がプログラムからキー ボードに取られる為、外部プログラムからの操作が中断される という問題があったりする その4.DDE通信を使用する方法 EXCELのある特定のセルと、外部プログラムのテキストボックス をリンクする方法。 テキストボックスの値が直接EXCELの特定 のセルに入る、OLEオートメーションよりも昔のデータ受渡の方 法の為、VB6.0なら可能だが、.NET では推奨されない てか出来ないかも その5.独自の受渡方法 独自のOCX(DLL)等をプログラムで作成し、EXCEL側で参照設定を 行い、そのプログラム経由でデータを受け取る ざっと思い浮かんだ分だけ、データの受渡方法を書いてみました。 もちろん他にもあると思います。 他の回答者も色々と言っておられますが、要は、その1~その5、 はそれぞれに向き不向きがあり、どのような用途の場合に適して いるかは、どんなデータなのか、どんな用途で使うのかがわから なければ答えようが無い話だと言う事です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
この程度の質問表現しか出来ない人に、VB.NET(>VB(オブジェクト指向)と書いてあるのでこのことかなと思う次第) なんて使って直ぐに何かを出来るわけがない。丸投げして、回答のプログラムなどコピーして動きました、ありがとう、でしまいでしょう。回答者はコード作成に使われただけ。 ーー 「データ」と言うのは、「ファイル」と言う形で、コンピュターとつながったハードディスクなどにあったりする。最近はWEB(サーバー)という形で、自分のコンピュターでないところから持って来たいという場合もあろう。 このファイルはみな、ファイル形式と言う特有の構造を持っている。しかし代表的なものと言うのはある。 これのデータを採ってくるのは、そのデータを作ったソフトで開いて、メモリに展開して、取ってくるのが普通。 このファイルにはデータベースの場合は検索などしやすいように「構造」が与えられていて、それなりに勉強しないと扱えない。 構造ガ在るとはいえ、一番簡単なのはCSVファイルと言う形式。文字や数字など、テキストだけ問題にする。 これに落とせれば(素のソフトに落とす機能が付いておれば)、扱いも易しくなるが。 >具体的な内容まで教えていただきたくよろしくお・・ 読者・回答者がその言葉を質問者に返したい。 データといっても例えば、卑近な例では、年賀状ソフトの住所録をエクセルに持って来たいなど、具体的な、したいことがあろう。 この質問は、ファイルとか、一般的な表現になっているが、「実はありふれたこと」をしたいだけじゃないのですか。 大きく一般化した質問内容を書くクセの人がいるが、この質問コーナーの回答など、限られた問題の1点の疑問へのアドバイス(代わって行うのではない)しか出来ないものです。 ーー エクセルには、エクセルVBAというプログラム(スクリプト)があって、VB6.0ベースのプログラムを組んで扱える。質問文からするとこんなことも知らないのではと思ってしまう(こちらも解説書などではオブジェクト指向と書いてある場合もあるので)。 VB.NET系の勉強を始めるに比べ、ずっとやさしいと思う。 具体的に「ファイル」が何なのかわかれば、VBA程度で扱えるかどうか、判明するだろう。 ーー プログラム(コンピュータ処理)と言うものを甘く見てはいけない。処理したいレベルにも拠るが、最近のパソコンは、できる分野(通信・画像やWEBなどの分野)も増えて、大変複雑になっていて、初心者が独習で本やWEBの解説である程度のレベルまで行くのは大変だと思う。 ーー 在れば、の話だが、出来合いのソフトで済ますか、少々なら、手操作(コピー貼り付けなど)で済ますことをすすめたい。
お礼
ご回答ありがとうございます。 仰せのとおり、未熟すぎて恥ずかしい限りです。 私のスキルでは、こなせない内容ということですね。。
- waterline123
- ベストアンサー率43% (51/116)
”VB エクセル”で検索すればヒットしますので、そちらを見ることをお勧めします。 現時点の質問文を見る限り、いろいろなことが漠然として、 どのように質問すればよいかもわからない状態だけど、困っているからとりあえず、わかっている範囲の単語を使用して、質問しているというように見受けられます。 なので、もう少し頭の中を整理して、何で何がやりたいのかを具体的に記載した方が回答する方も具体的に回答しやすいです。 次回質問するときの参考にしてほしいのですが、気になった点です。 ・VB(オブジェクト指向)とありますが、VB.NETですか?VB6.0(またはそれ以下)ですか? 時代を考えるとVB.NETだとは思いますが、VB6.0でエクセル操作する際は、オブジェクトを使うので、 オブジェクト指向といえばオブジェクト指向なんですよね・・・・・ その辺をVB.NETも2005や2008といった形でいろいろなバージョンもありますので、より具体的にここは記載した方がよいと思います。 ・エクセルにデータを取り込むとは具体的にどういうことでしょう? たとえば、ボタンを押下したら、どこかにあるCSVファイルをエクセルに取り込むとか、 画面上にある項目をエクセルに記載して、格納しておくとか、いろいろな取り方ができます。 ここもより具体的に何がやりたいかを記載した方がよいと思います。 とりあえず、上記2点についてもう少し具体的に記載して質問された方がよいかなと思いました。 ちなみに、 >VB(オブジェクト指向)を使用して、エクセルにデータを取り込みたいのですが、 >可能でしょうか? この回答だけであれば、VB系なら問題なく可能です。同じMicrosoft製品ですしね。
お礼
回答ありがとうございます。 漠然とした質問で申し訳ありません。 確かに、仰せのとおり分からないことが多すぎてどこから手をつけてよいのか 混乱気味です。 単純にやりたいことは、ハードを制御したいのですが、提供されている情報は SDKで、VB6 or .NET記述です。 そして、私がしたいのは、これを簡単に制御する方法を知りたいのが目的です。 制御だけでいうとVBなので、VBで記述する必要があると思っていますが、 VBの環境が無いため、コンパイラの用意が必要でしょうか? 無料のコンパイラがあれば教えていただきたいです。 次に、上記により、プログラムファイルができたとしてこれをVBAで制御する 方法が分かりません。 結構大雑把に言っているため、実際にはまだ分からなくてできないかもしれないですが、概略を知りたいと思っています。
補足
SDKで記載されている関数が、VBAでincludeとかdeclareなどで宣言したら そのまま使用できるような考え方ができれば理解しやすいのですが、 どのように理解するべきなのでしょうか。。
お礼
ご回答ありがとうございます。 沢山のデータ受け渡し方法を記載していただきまして 本当にありがとうございました。。