• ベストアンサー

Viausl Basic6.0とExcelの連動性は低い?

お世話様です。 タイトルの通りの質問なのですが、VB6.0とExcelの連動性は低いのですか? 私の職場では「VBでExcelをこういう感じで動かせたら、仕事で 大いに活かせるし、助かるのにな・・・」という場面が結構あり、 実際にそういうプログラムを組んでみようと試みた事もあるのですが、 参考書を見てもExcelとの連動に関しての記述が少なかったり、 基本的な(指定セルに値を代入する等)事しかなかったりします。 ネットも同様です(情報提供サイトの批判ではありませんよ)。 教えて!gooさん等に質問の投稿をすれば、親切な方が助けて くれたりもしますが、助けてくれた方はどこで学んだのか、 不思議です。 自分の調べ方が甘いのかも知れませんが、VB6.0とExcelは 連動性が低いのでしょうか? ご教授のほど、宜しくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>連動性が低いのでしょうか 発想の立て方が間違っていると思います。 識者の反論覚悟で、はっきり言いましょう。 エクセルVBAとVB6.0は別です。 別分野のことを処理するためにできています。 ただ基礎的な言語の文法は同じです。 目的が違います。日常英会話ができても、医学用語(米)を知らないと、米国医学会に出られないようなのを連想します。 VBを習熟しても、エクセルVBAはおのずと使えるものでは有りません。 VB固有のプログラムコードだけでは、例えばシートの削除のプログラムは絶望的に難しい。エクセルというソフト(プログラム)の基本的な構成知識(マイクロソフトの技術者あたりしかわからない)を知らないとそれはできません。 エクセルVBAはエクセルの操作や働きを知らないと使えません。 エクセルと密着した処理を担当する、スクリプトです。 エクセルの操作や状態やオブジェクト(ブック、シート、セル範囲などのこと)に合わせて、簡単な記述で、利用が実現するように 作られています。 エクセル(VBA)を知らなくても、VBのエキスパートは沢山いるでしょう。プログラム熟練者でエクセルなんかと思っている人を見ました。彼らは必要な都度最小限エクセル(VBA)の勉強をするようですし、習熟も早いです。 エクセルVBAでは、エクセルで行う操作や働きを、対象をObject、働きをMethod、設定をPropatyで整理して何千というエクセル向きの語がつくられています。 関数(ワークシート関数ではない関数)とステートメントはVBの基礎部分ととほぼ共通です。 エクセルとVBを連動させなくても、エクセルVBAだけで使える 場面は沢山あります。 またVBからエクセルVBA処理の世界に入るのも簡単です。VBAでもVBと似たことは、課題の内容によりできる場合も多い。 また基礎的な仕組みでAPIとかCOMとか難しい道具立てがあり、VBからそれらを使うと、できることが増えるので、話がややこしくなるので、上記は普通のレベルでの話です。 使うと

keisuke_20
質問者

お礼

>エクセルとVBを連動させなくても、エクセルVBAだけで使え>る場面は沢山あります。 ご意見どうもです。 上記の文章が一番ひっかかりました。 「何がなんでもVBでやる」という考えに、固まっていたんじゃないかと考えていました。 もともと、VBAは基本的な事すら出来てないのが原因ですね。 これを機にVBAも勉強してみます。

その他の回答 (3)

回答No.4

VB6とExcelVBAは「言語としては」ほぼ同等のはずです。 > どこで学んだのか Excelの場合は、「マクロの記録」で実際の操作を自動記録して、 それを外部から操作できるように変換することが多いです。 その変換方法は。 > 基本的な(指定セルに値を代入する等)事しかなかったりします。 その基本的なことについて、マクロで自動作成されるVBAとそのサンプルのVBのソースを比べればいいのではないでしょうか? あと、EXCELで利用できるオブジェクト・メソッドに関しては、デベロッパー版か何かで、ヘルプを手に入れることができるはずです。

keisuke_20
質問者

お礼

ご意見、どうもです。 自動記録させた後、自己解析をした事はあります。 VBAの助かる部分ですよね。 下のレスにも書きましたが、これを機にVBAの勉強にも 取り組んでみようと思います。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

Excelのマクロ機能(ExcelVBA)はご存知ですか? ご存知なら、マクロ機能をどの程度、使いこなせますか? VBからExcelを操作する場合、Excelマクロ(ExcelVBA)の機能を呼び出します。 つまり、Excelマクロを勉強すれば良いです。 #逆に、Excelマクロを知らないなら、VBからExcelを自在に操作するのは無理です。

keisuke_20
質問者

お礼

ご意見ありがとうございます。 なるほど、やはりVBでエクセルを扱うなら、VBAは避けて 通れないということですね。 これを機に、VBAの勉強をしたいと思います。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

具体的に何をやりたいのか解りませんが、VBAで出来る事はすべてVBから操作可能です。

keisuke_20
質問者

お礼

ご意見、ありがとうございます。 そうだったんですか?自分はVBAは少しかじった程度でして・・・。 参考になりました。

関連するQ&A

  • Excel2013 リストから選択 リストの連動

    Excel2013でリストを連動させる時、大分類に数字を入れると、リストが連動しなくなり困っています。 Excelリストを連動させる時、次のホームページ http://www4.synapse.ne.jp/yone/excel2010/excel2010_nyukisoku3.html にあるやり方でリストを連動させる事が出来るのは理解できます。しかし、大分類(ホームページ中の「野菜」「肉」「果物」にあたる部分)を数字(1や2など)に変更すると、リストが連動しなくなってしまいます。 例えば、ホームページ中の「野菜」だけを数字の「1」に変更した場合、大分類で「1」を選ぶと小分類のプルダウンメニューはクリックしても表示されず、「肉」や「果物」を選ぶと小分類のプルダウンメニューはきちんと表示されます。 また、大分類中の数字を文字として扱うなど試してみましたが解決できません。 リストの連動の大分類に数字を使うことはできないのでしょうか? どなたか回答お願いいたします。

  • EXCELの関数値を取得するには?

    VB.NETでプログラミングしてます。 EXCELを起動してセルに関数を代入し、 セルから関数値を取得するのに、以下のようにしています。 Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet xlSheet.Cells(1, 1) = "=AVERAGE(2,3,4,6,7)" a(1, 1) = xlSheet.Cells(1, 1).value.ToString これはこれで動作するのですが、 よく考えてみるとEXCELのセルに代入する必要はなく、 内部的にa(1,1)に関数値さえ取り込めればいいということに気付いたのです。 1行で記述したいのですが、関数値だけ取得する方法を知りません。 ご教示いただければ幸いです。

  • 【EXCELエクセル】シートを追加する度に1/1と

    【EXCELエクセル】シートを追加する度に1/1というセル表示を1/2というようにシート数に連動する表示はどうすれば出来ますか?

  • VB.netでのExcelデータの読み込み

    プログラミング初心者です。VB.net2003を使っています。 エクセルでBの列のセルデータを読み込みたいのですが、Bの列の3行目のセルから同列の最後のデータが入っているセルまでを1つずつ順番に取得して、それを配列に代入するにはどうすれば良いのでしょうか? 初歩的な質問で申し訳ないのですがよろしくお願いします。

  • excel2003 複数の行のデータを連動して消す

    excel2003 のvbaで質問です。 changeイベントで、とある列で複数行のデータを消すと、 それと同じ複数行の指定列を連動して消せるようにしたいです。 https://www.dropbox.com/s/01saveqkt1u93zj/%E3%82%AD%E3%83%A3%E3%83%... 私がやると、どうしても先頭の一行しか消すことができず投稿いたしました。 どのように記述したらいいか、教えていただけないでしょうか。

  • コンボボックスの選択肢にエクセルの列を呼び出す

    質問させてください。 私はExcel2002、VB6.0を使用しています。 やりたいことは、 1、エクセルのA列内で記入されているセルをすべて検出 2、1で検出した文字をコンボボックスの選択肢に代入 以上となります。 基本的な操作かもしれませんが、いろいろ調べてみたのですがどうも見つからなくて困っています。 よろしくお願いします。

  • EXCEL2000とEXCEL2002

    EXCELについての質問です。 EXCEL2000では、数式バーのところに「=」(イコール)がありますが、EXCEL2002では、「fx」になっていますよね。 EXCEL2000で、複数のブックを開き、「=」ボタンを使用して、他のブックと連携をして計算式を入れていましたが、EXCEL2002から使用できなくなってしまいました。 具体的には、シートの数値・文字等を「イコール」でそのまま他のシートの特定セルに反映させたいのですが、EXCEL2002ではどのようにしたらいいのでしょうか?

  • VBから起動したEXCELの表示設定

    いつもお世話になります。VB2005、EXCEL2003です。 表題のようにVBからExcelを起動して、VB上のデータを送りつけて表示します。この時、Excelの列の幅、行の高さ、セルの表示形式を通貨、パーセントスタイルなど、VB上で指定しておくことができないものなのでしょうか? あるいは、あらかじめ項目など要求する表示形式を決めたExcelに、VBよりデータのみ送りつけることができててもよいのですが。 以上、可能であればご教授願います。

  • Excel2007のVBAについて

    Excel2007のVBAについて Excel2007以前では「マクロの記録」を実行して罫線や図形の描写を行って、「記録終了」を行うと作業していたコードが記述され、それを加工したりして使っていましたが、Excel2007で同じように行ってもコードが記述されてませんでした。 セルの操作等はコードが記述されていました。 どこか、私の操作方法が間違っているのでしょうか。また2003のようにコードを記述させる方法が別途あるのでしょうか、よろしくお願いします。 関係ないとおもいますが、 「Excelのオプション」で「開発タブをリボンに表示する」はチェック入れてあります。 「マクロの設定」では「すべてのマクロを有効にする」にチェックしています。

  • VB.NETで起動したExcelの閉じ方について

    VB.NET(2003)でExce(2003)を起動し、そのシートに動的コマンドボタンを貼り付けました。 このコマンドボタンには、Excelを閉じ、COMオブジェクトの開放を行うコードを記述しています。 これでうまくExcelは閉じることが出来き、Excelのプロセスも残らないのですが、直接Excelの[×]閉じるボタンで閉じるとExcelのプロセスが残ってしまいます。 これを防止するにはどのようにすればよいでしょうか? どうかよろしく御教示ください。