エクセルのVBと、普通のVBの違いを教えてください。
エクセルにVBが付いているということは、普通のVBより、高機能ということなの?
エクセルのVBで、シューティングゲームのような複雑なプログラムを作ることはできますか?

このQ&Aに関連する最新のQ&A

A 回答 (6件)

まず機能面ですがVBAはアプリケーションに特化したオブジェクトが用意されているので、それを使う場合は効率的なプログラムをつくることができます。


またワークシート関数などあらかじめ最適化された機能を使う場合はなんとCより速い場合があります。

実行速度に関してはVBAは「インタープリタだから遅い」と権威のある本でも説明されていることがあるのですがこれは間違いで VBAもPコードという中間コードにコンパイルされるので、完全なコンパイルのCなどには及びませんが非常に高速です。

>DirectX(のSDK)を使って3Dゲームを作ることも出来るんじゃないでしょうか。
これは可能です。
ただし、VBAはVBと違ってひとつひとつのオブジェクトにハンドルをもっていないので、実際にDirectXやBitbltを使う場合、複雑な処理はめんどうになります。

    • good
    • 0

エクセルVBAはエクセルで手操作でできることが


プログラム(というかスクリプト)でできるようになってます。
イベントというプログラムもできます。
しかし
たとえばエクセル表の行のDELETEをVBでプログラムを書こうとすると、途方にくれます。
エクセルの仕組みが一般には判って(公表されて)ないから、難しいからです。
でも本当に仕組み構造などわかっていればできると想像します。VBでAPIを使うという逃げ道もあります。
しかしVBは要所要所で深くできる機能があります。
そういうことからゲームとエクセルは共通点が極く少なく、ゲームを作れるとは言いがたいと思います。
エクセル風(とは何かは難しいですが)のゲームならエクセルVBAでたやすくできます。
VBとVBAの違いは自分で会得するよりほかありません。難しい概念などもあって、文章で並べられても、すぐ理解できるとは思えませんから。
VBAはなるべく手間のかからないように、コンパイルなど意識させないようになってます。
    • good
    • 0

>エクセルのVBと、普通のVBの違いを教えてください。



#1さんのおっしゃっている通り、一番の違いは「単独で動作するEXEを作れる」ことに尽きると思います。
質問にあるシューティングゲームですが、それこそゲームをするのにExcel(のシート)は不要ですからね。

>シューティングゲームのような複雑なプログラム

#1さんが紹介されていらっしゃるURLにもありますが、やろうと思えばVBAでも可能です。それこそ、DirectX(のSDK)を使って3Dゲームを作ることも出来るんじゃないでしょうか。
# やろうとは思いませんが(笑)

そもそもVBAは「マクロ」という別名の通り「スクリプト」的な性格の強い言語ですから、速度を要求する処理には向きませんね。
また、コントロールやフォーム等が別物になってますのでVBからVBA、またその逆の移植には意外と苦労します。
    • good
    • 0

おや,しまった。


#1です。
参考URLの欄がずれてしまいリンクがかかってませんね。失礼しました。

参考URL:http://www.accessclub.jp/vba/vba_001.htm,http:// …
    • good
    • 0

エクセルで使用するVBというのは、


VBA(Visual Basic for Applications Edition)というものです。
自分はVBAでの開発経験がないので、何ができるのかって事は説明できないですが、違いについては下記のURLを参照して頂ければ理解できるかと思います。

参考URL:http://www.amy.hi-ho.ne.jp/banchan/sw/vba/vba_q_ …
    • good
    • 0

Excelに付いている機能は,VBではなく,VBAです。


VBAはVisual Basic For Applicationの略で,ExcelやWordなどの,アプリケーション(ソフト)用にできたプログラム的な事をさせる為のプログラミング言語です。
このプログラムを動かすためには,使う側にExcelやWordが必要であることになります。

一方VBはVisual Basicの略で,
Windows上でのアプリケーション開発のプログラミング言語です。
VBAよりは高度なことが出来ます。
また,EXEファイルもコンパイルされるので,使う側はExcelやWordなどを必要としません。
(参考URL↓上を参考にしてみてください。)

VBAはVBほど高度なことができませんが,
谷孝一さんの「猫とエクセル-VBA(マクロ)でつくるフリーゲーム」

(参考URL↓下)
などにあるように,結構すごいゲームは作れます。
でも,このゲームをするにはExcelなどが必要です。

http://www.accessclub.jp/vba/vba_001.htm,http:// …
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルのVBマクロで、エクセルのPDFファイル出力機能を利用したいです

タイトルの通り、エクセルのVBマクロで、エクセルのPDFファイル出力機能を利用したいですが、
どのような関数がかるでしょうか?

よろしくお願いします。

Aベストアンサー

使ってないので自信がありませんが、
Acrobat7.0Standard(WIN)以上のAcrobatをインストールしすると
メニュかツールバーにPDFで保存が作られる(ADOBE社のパンフレットから)。マクロ記録をとって、それをクリックしてするとVBAコードが出ませんかね。
SaveAsなどでファイル拡張子だけが・PDFになるのか、特別なメソッドがあるのか、XlPDFのような指定を行うだけなのか、わかりません。
>関数がかるでしょうか
「関数があるでしょうか」とすると、表現がおかしいと思います。エクセルの関数はシートの1セルに「値」を1つ返すだけのもので。ブックや他形式のファイルを作って保存する機能などはありません。
列挿入や表示形式の設定できる関数さえもありません。
この点ユーザー定義関数も同じです。VBの関数も数が決まったものです。
多言語やVBで言う関数は、VBAでのユーザー関数はFunctionでやらずSubプロシージュアーで行うと思います。
質問の関数をいうなら、メソッドに当たると思います。ただPDFに書き出す
メソッドがあるかないか、識者の回答を待ちましょう。

使ってないので自信がありませんが、
Acrobat7.0Standard(WIN)以上のAcrobatをインストールしすると
メニュかツールバーにPDFで保存が作られる(ADOBE社のパンフレットから)。マクロ記録をとって、それをクリックしてするとVBAコードが出ませんかね。
SaveAsなどでファイル拡張子だけが・PDFになるのか、特別なメソッドがあるのか、XlPDFのような指定を行うだけなのか、わかりません。
>関数がかるでしょうか
「関数があるでしょうか」とすると、表現がおかしいと思います。エクセルの関数はシートの1...続きを読む

QVBでシューティングを製作することになりましたが、今の方向性で正しいのかご指導願いますか?

初めまして。
私は現在高校生でして、文化祭の出し物として私はゲームを出展しようと考えています。
使用言語はVisualBasic6.0なのですが、生憎私はプログラミングソフトを初めて触る初心者でして、5月頃から少しづつ勉強していてもまったく成長が見られません。
確かに基礎は大事だと十分に理解していますが、残り期間も3ヶ月程度に迫った今、果たしてまだ基礎をやっていていいものなのでしょうか。
私の学習法で誤りのある点、や実際にゲームを作る時の製作時間、一日にどれくらいの学習が必要なのか・・etcをご指導いただけないでしょうか。また、参考になる書籍やHPなど、製作の残り期間が少ないという点を考慮した上で紹介していただければ嬉しいです。

尚、作成する予定のソフトは自機や敵機にドット絵を使用し、背景スクロール型、三ステージ構成の縦スクロールシューティングにしたいと考えており、現在二名(両名がグラフィックとプログラムの両方を担当)で製作をしています。
二人ともVB初心者なので現状は芳しくありませんが、夏休みを使ってどうにか・・・と思っています。
私の学習法としましては、昔までは学校で上級生が使用している教科書を借りてそれを見ながらやっていたのですが、グラフィック操作のサンプルが少なく、グラフィック関連を詳しく解説した本を購入し、それを見ながら学習しています。ですがその本は、とても初心者向けに書かれていて、基礎を学ぶには十分なのですが、実際に使えるようなソースは掲載されていませんでした。
迫る締め切りに対し、まだ基本形さえ完成していないので焦りを感じています。
・・・という状況なのです。
非常に身勝手な質問ですが、最後まで読んでいただきありがとうございました。
これを読んだ方の割いてくれた時間を無駄にしないためにも、製作には回答を生かして良い作品を作れるよう、摧心しようと思います。

初めまして。
私は現在高校生でして、文化祭の出し物として私はゲームを出展しようと考えています。
使用言語はVisualBasic6.0なのですが、生憎私はプログラミングソフトを初めて触る初心者でして、5月頃から少しづつ勉強していてもまったく成長が見られません。
確かに基礎は大事だと十分に理解していますが、残り期間も3ヶ月程度に迫った今、果たしてまだ基礎をやっていていいものなのでしょうか。
私の学習法で誤りのある点、や実際にゲームを作る時の製作時間、一日にどれくらいの学習が必要なのか・・etc...続きを読む

Aベストアンサー

正直な感想として、質問に書かれている現在の方向性のままでは実現は難しいと思います。

初心者のプログラミングでいちばん参考になるのは、既にあるプログラムの内容を見ることです。シューティングゲームを作るのであれば、同じシューティングゲームとまでは行かないにしても「リアルタイム性が高く、グラフィックを多用するプログラム」の内容を見ることが重要です。

もっとハッキリ言えば、ただ見るだけでなくコピーして使うことこそが重要です。コピーして、自分が望むのとは違う部分を改造していくわけです。そうすることで、改造したところだけでなく、改造していない部分の理解も深まります。(改造する場所を探すには、まだ改造していない部分をきっちり読んで、どこを改造しなければいけないか理解しないといけないので。)

そういう下敷きになるものなしで、いきなりまとまったものを作成するのは、不可能とは言いませんが、労力を要するばかりで非効率的です。

手がかりを探すとすれば、まずプログラミングの入門書や中級者向けの本のうち、最初からゲーム向けを謳っているものを片っ端から「立ち読み」して、たくさんソースが載っていそうなものを探すこと。そういうことのできる本屋が近くにない場合、次善の策としてはAmazon.co.jp等で書籍を検索してまず目次を見て内容を検討し、次にCD-ROMが付属しているかどうかを確認すること。CD-ROMが付属していればソースが入っている可能性が高いので。(ただし、その辺のフリーソフトばかりという可能性も考えられるので、なるべくCD-ROMの内容についての記述も探しましょう。)

次にウェブサイトの検索。VB、ゲーム、ソース等のキーワードで探しまくりましょう。"visual basic" game "source program" 等、検索キーワードを英語にするのも良いですね。ソースプログラム自体は日本語だろうと英語だろうとたいして変わりませんから。

正直な感想として、質問に書かれている現在の方向性のままでは実現は難しいと思います。

初心者のプログラミングでいちばん参考になるのは、既にあるプログラムの内容を見ることです。シューティングゲームを作るのであれば、同じシューティングゲームとまでは行かないにしても「リアルタイム性が高く、グラフィックを多用するプログラム」の内容を見ることが重要です。

もっとハッキリ言えば、ただ見るだけでなくコピーして使うことこそが重要です。コピーして、自分が望むのとは違う部分を改造していくわ...続きを読む

QVB.NETからエクセルを起動して、エクセルでVBを閉じたい。

こんにちは。
先日、エクセルのフォームを最前面に配置したいという
質問をさせて頂いたものでございます。
それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、
最前面にする事は出来たのですが、フォームを動かすと
ブックはその一つ下に現れてしまい、
ブックを最背面に配置するなどを試みてみたのですが、
どうもうまく行かないので、
エクセルから直に立ち上げることが出来ないようにして
VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。
それで、データを送る方法は何とかなりそうなのですが、
VB.NETのフォームからエクセルを起動して、
次にエクセルからそのフォームを出したり、隠したりしたいのですが、
その場合、VB.NETのフォームのなんと言うハンドルを取得すればよいでしょうか?
IDにも色々あるようで、どれを使えばよいのか分からなくなってしまいました。
そのIDはVBのフォームを起動した時に、エクセルと共有するiniファイルなどに、書き込んでおこうかと思っています。
よろしくお願いいたします。m(__)m

こんにちは。
先日、エクセルのフォームを最前面に配置したいという
質問をさせて頂いたものでございます。
それで、SetWindowPosのAPIで設定する方法を教えて頂いたのですが、
最前面にする事は出来たのですが、フォームを動かすと
ブックはその一つ下に現れてしまい、
ブックを最背面に配置するなどを試みてみたのですが、
どうもうまく行かないので、
エクセルから直に立ち上げることが出来ないようにして
VB.NETのフォームを作ってエクセルにデータを送ろうかと思いました。
それで、データを送る方...続きを読む

Aベストアンサー

まず
・Excelのバージョン
・.NETのバージョン(2005でしたっけ?)
を教えてください。

Excelのユーザフォームを開くときに、エクセル本体を最小化でもよいですか?

Qツールバーのプログラムの右クリックメニューをVBより実行?

こんにちは

ツールバーにあるプログラムの右クリックメニューをVBより実行できない
でしょうか?
例えば
"音量"のアイコンを右クリックすると"音量コントロールを開く"というメニュー
が出ますが、これをVBから実行できないでしょうか?

但し、現実に右クリックメニューから選択で実行させるプログラムに
該当するexeが見あたりません。
この右クリックで動く処理が単体のexeなら簡単なのですが
モジュール化されているのなら、無理な話ですよね
"その通り無理だよ"と言ってもらえるとすっきりするのですが
どなたか情報お持ちの方おられましたらご教授ください
よろしくお願いいたします。

Aベストアンサー

>この右クリックメニューの中にある、一つの処理をVBの中から
起動したいのです

Spy++でWM_COMMANDメッセージを監視してみると..
アプリのウンドウハンドルにメニュー項目のIDを投げます。
従って、同じメッセージをVBからSendMessageすればよいはずです。

QAプログラムの画面表示情報をVBより参照したいのですが....

最近VB2005をはじめた超初心者です。
Aと言うプログラムの画面表示上に通常0の数字が入っている項目があります、この項目が0→1になったときVB側で情報をつかみVB側で作成した処理をさせたいと思っています。
教えてgoo、ネット等で調べましたが同類の回答が見つかりませんどうぞよろしくお願いします。
現在わかったこと。
1.画面上の表示データを調べるにはウィンドウエックスプローラを使うらしい。
2.WIN32APIに対してGETを発行するらしい。
できましたら手順とサンプルを回答していただければ大変助かります。

Aベストアンサー

> 1については教えてgoo

できれば URL も明記して頂けると良かったのですが……

> 2についてはVB2005のヘルプ

GET に続く文字列はありませんでしたか?

> サンプルに関しては回答していただいた方にご迷惑がかかるかも

というより、あなたご自身が意味をわからずに使うのはよろしくないという意味です。

> ヒントに基づき自力で書籍等で調べたいと思います

ご質問の「Aと言うプログラムの画面表示上に通常0の数字が入っている項目」というのは文字列ですか?

DrawText などで描画された画像の場合は文字列として取れないと思われますが、次のような手順を
踏めば取得できるかも知れません。

(1) メインウィンドのハンドルを得る
 マウスカーソルの位置からであれば WindowFromPoint
 ウィンドキャプションの条件からであれば FindWindow
 または EnumWindows など、まだ他にもありますが……

これがおそらくあなたの仰る「A というプログラム」のウィンドハンドルを得る操作になると思われます。

(2) メインウィンドのハンドルから子ウィンドを列挙する
 EnumChildWindows など

これがあなたの仰る「項目」という子ウィンドハンドルを得る操作になると思われます。

(3) ウィンドの中から所望のテキストを得る
 GetWindowText など

ここで運が良ければあなたの仰っている「0」や「1」というテキストが得られることになります。

場合によっては 1 ~ 3 を組み合わせて所望のウィンドを探す必要があるかも知れません。

また WIN32API を使わず VB2005 のみでも (1) の列挙は出来ます。

@IT:.NET TIPS デスクトップ上のすべてのメイン・ウィンドウを列挙するには? - C# VB.NET
http://www.atmarkit.co.jp/fdotnet/dotnettips/233enumwin/enumwin.html

> 1については教えてgoo

できれば URL も明記して頂けると良かったのですが……

> 2についてはVB2005のヘルプ

GET に続く文字列はありませんでしたか?

> サンプルに関しては回答していただいた方にご迷惑がかかるかも

というより、あなたご自身が意味をわからずに使うのはよろしくないという意味です。

> ヒントに基づき自力で書籍等で調べたいと思います

ご質問の「Aと言うプログラムの画面表示上に通常0の数字が入っている項目」というのは文字列ですか?

DrawText などで描画された画像...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報