• 締切済み

VBA(or ある言語)でできること、できないこと

こんにちは、VBAについて質問させてください。 コンピュータの根本を理解せずにVBAをやっているので、どうしてもわからないことがあります。 一般的に言って、VBA(あるいはある言語)で実行できることとできないことは、どうやって判断するのでしょうか?(判断基準はありますか?) たとえば、Windows上で行なわれる全ての作業を、VBAで実行することができるのですか? たとえば、あるソフトウェアを買ってきて(たとえば翻訳ソフト)、それを自動的に起動させたり、そのソフト特有の操作(翻訳を実行する、など)を実行するプログラムを作ったりすることも可能なのですか? できないとすれば、どうしてできないと言えるのでしょうか? このまえ、はじめてVBAでIEを立ち上げることができることを知ったのですが、VBAを作る側が、それを実行できることをどうやって判断すればいいのですか?(抽象的な質問ですが意味がわかりますでしょうか。) 実行可能かどうかがわかっていれば、そのやりかたを調べるのはまったく苦でないのですが、そもそも実行可能でないかもしれないのに、闇雲に実行する方法を調べているようなレベルなので、効率が悪いです。どこで落としたのか分からないのに、落し物を探しているときのようないやな(漠然とした)感じです。何か一般的な基準はないでしょうか。 よろしくお願いします。

みんなの回答

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.4

#3です。 VBAの命令を受け取るかどうか…というわけではなく、外部からの(VBAであれ、C言語であれ)命令を受け取るように、最初から準備されている必要があります。 マイクロソフト社が開発した多くのアプリケーションソフトには、そのような仕組みが用意されていて、開発者はその仕組みを使って、相互に連携動作させています。 OSとアプリケーションがごっちゃになっているようですが、アプリケーションを起動させるのは、OSの仕組みです。その後、アプリケーションの動きは、アプリケーション内部の命令(とOSの命令が組み合わさって)動きます。 アプリケーションを起動させるのは、OS(Windows)の仕事ですが、そのアプリケーションの中で、ボタンを押した後の仕事を定義しているのは、アプリケーションです。 無理やり力ずくでやれば、VBAで、あるアプリケーションの画面位置を把握して、その中のボタンの位置などをすべて記述して、マウスを押して離す…というスクリプトを書けば、他のアプリケーションを動かすことは不可能ではありません。 ユーザーインターフェースの裏には、さまざまなFuncitonが用意されていて、VBAで直接動かすには、 それらのFunctionを呼び出すための仕組みが必要 なのです。 ActiveXとかDDEとかで調べてみるといいですよ。

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.3

VBAの問題というよりも、指令を受ける側の問題です。 外部からのコマンド入力を受け付ける入り口があれば、 そのアプリケーションはVBAと連携して動きます。 もしかして、電子レンジにLANケーブルなんかがついて、SDK(ソフトウェアの開発キット)などが公開されれば、 VBAで操作することは可能です。 指令を受ける側の外部インターフェースを調べれば、容易に判断できると思いますが…。。。

crooked_man
質問者

補足

ありがとうございます。 だんだん、わかってきました。 むずかしい単語が、さっぱりわからないのですが、つまり、受け入れる側に、VBAのコマンドを認識する能力があるかないか、ということなのでしょうか。 VBは、マイクロソフトの製品ですよね? で、Windowsはマイクロソフトの製品なので、Windowsで実行できる全ての作業は、VBからも実行できる、という道理にはならないのでしょうか? 

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

>そのソフト特有の操作(翻訳を実行する、など)を実行する そのソフト側の対応次第で出来たり出来なかったりしますし、一概には言えません。 一つ一つ調べていくしかありません。 どんなプログラムでもほぼ全てのことと言って良いほど出来ることは出来ます。ただすごく面倒なのか大した手間じゃないのかの違いがあるぐらいです。

crooked_man
質問者

補足

ありがとうございます。 とてもわかりやすい答えでした。 ただ、相手側が対応するかどうかで、こちら側が制御できるかどうかが決まってしまう(????)という点がわかりません。(おそらく僕は、一般の人間よりかなりコンピュータの知識がないままVBAをやっています。根本的なところがわかってません…)なぜ無理やりこちらから制御できないのか、ということです。 たとえば、翻訳をするには、その翻訳ソフトを開いてメニューのところの「翻訳」をクリックするだけでいいのですが、その「翻訳」というところにマウスを持っていくという作業、そしてそこでクリックをするという作業が、Windows中でどんな処理になっているのか、ということすらわからずにやっています。 ですから、VB(A)で何ができるのかできないのかも、さっぱりわからないのです。そもそも、IEを起動する、といっても、「起動」って何なの?という状態です。多くの人は、IEを「起動」するにはIEのマークをダブルクリックして、IEのウィンドウが表示されれば「起動した」で納得するのですが、そもそもなんでダブルクリックすると起動するのか、とか、それがVBからなぜ制御できるのか、という点がわからないんです。 コンピュータを学ばないといけないし、一言で答えられるような質問ではなかったような気がしますが。

  • FLA-SE
  • ベストアンサー率32% (33/103)
回答No.1

VBScriptをクライアントで動かしたことがないのでなんとも言えませんが分かる限りで。 IEを立ち上げるというのはIEの実行ファイル(.exe)を呼び出せば良いんですよね? EXEを呼び出す方法を調べれば、基本的にはどんなEXEも呼び出せるということになりますよね。 出来ること、出来ないことって一概には言えません。 備わってる命令、機能で実現可能であれば出来る。 そうでなければ出来ない。それしか言えません。 どうやって調べるかについては、あたりをつけて調べていくしかないですよ。これが出来れば動かせるんだけどなーーっていうのを考えてそれを調べていく。 IEの話を例にとると、マウスでダブルクリックしたら起動するんだから、同じことがVBAで出来ればいいのになーー。すなわち、EXEを呼び出す方法があれば動くんじゃないか?と考えますよね。その方法を調べていく。 経験が大きいとは思いますが。 ですから自分ひとりでやる場合、最初はもちろん苦労します。 会社などでは経験豊富な先輩に聞いたりして、人の知識も活かせるので効率は良いですよね。 やっているうちにだんだんと分かってくると思います。あきらめずに頑張ってください。

crooked_man
質問者

補足

ありがとうございます。 IEを動かすためにEXEを呼び出す方法があれば、、、というように下の下までたどっていって、ものすごい遠まわしで複雑な長いプログラムを作った後に、実はVBAの機能として、たった1行でIEを呼び出せる、なんてことがわかったりして、投げ出したくなるときがあります。 それもやはり経験で身に付けていくものなのでしょうね、、、 ただ、そういうところは納得なのですが、僕のいまいちわからない点は、たとえば、VBAで、うちにある電子レンジのスイッチをオンにすることはできないですよね? それがなぜできないのか、ということなんです。(ほんとうに抽象的な質問ですね……)それはできないというのがあたりまえですが、ただそれをコンピュータ・レベルで考えてみたとき、ある問題を単に記述レベルで解決できるのか、それとも根本的に(環境的に)できないものなのかを判断する方法があるのかどうか、ということなんです。コンピュータのことを学ぶべきなのかもしれませんが。

関連するQ&A

  • Excel VBAにてFFT

    Excel VBAにておよそ5万点のデータをFFTする方法についての質問をさせてください。 いつもはあるソフトを用いて実験データのFFTを行っているのですが、作業効率を改善したいと考えExcel VBAにてFFTをしたいと考えています。 私はC言語を少しですが学習したことがあるので、FFTWのようなFFT を実装したフリーソフトウェアが存在しているのを知っています。 時間節約のためExcel VBAにてFFTのコードを位置から書くのではなく、FFTWのアルゴリズムでExcel VBAで利用できるプログラムを使いたいと考えています。 この場合、自分でFFTWのコードを見ながらExcel VBA用にコードを書きかえるしか手はないのでしょうか。私はC言語もExcel VBAも未熟であるため、この作業を行うことができそうにありません、、、 Excel VBAで利用することのできるFFTのコードはあるのでしょうか。 なお、FFTするためのデータ点数は約5万点、多いと10万点ほどで、データ点数が2の累乗に限定しないものを使いたいと考えています。

  • ソフトの開発言語を調べる方法

    ソフトウェアがどの言語で開発されているかを調べる方法はありますか。 有名なソフトとかならば、ネットとかで検索すればわかることも有ると思うのですが、 vectorとかでダウンロードできるような個人が作っているソフトなどの 開発言語を知る方法があれば教えてください。 あと、同じ意味の質問かもしれませんがソースコードからコンパイルした後の実行ファイルから、どのようなコンパイラが使われたのかを知る方法があれば教えてください。

  • VBAとマクロの違い

    こんばんは。エクセル初心者です。 VBAとマクロの違いについて教えてください。 VBAというのは、プログラミング言語のことで よろしいのでしょうか? そのVBAで記述されたものをマクロとよぶ といったイメージでよろしいのでしょうか? たとえば、あるエクセルにはいってるマクロを 実行する、ということを作業マニュアルに記述 する場合 「○○マクロを実行する」というのが 正しいのでしょうか?それとも 「VBAを実行する」というのが正しいのでしょうか? まったく見当違いのご質問だったら申し訳ありません。 教えてください。

  • プログラム言語の選択基準

    こんばんは。 私は現在、社内の小規模な在庫管理システムを作成しようと考えています。 その為に、どのプログラミング言語を使用するか悩んでいます。 以前ソフトウェア会社で働いていたときは、ただ漠然と提示されたプログラミング言語でプログラムを作成していたため、なぜこの言語で開発するのか? という点が理解できていませんでした。 そこで今回在庫管理システムを作るにあたり、みなさんはソフトを作成する際、どういった基準でプログラミング言語を選択しているかを知りたいと思いました。 一般的、個人的など、どういった基準でも構いません。 ちなみに私は今回、漠然ではありますがJAVAでSwingを使用し、GUIアプリケーションとして作成しようと考えています(よく分かっていない点もあるため、変な事を言っていたらごめんなさい)

  • windows上で動く言語の中で、市場価値の高い言語は?

    私はSEの端くれなのですが、最近プログラミングから遠ざかっているので、趣味的に何か勉強しようかと思っています。 どうせ勉強するならばなるべく自分の値段が高くなるものを、と思いまして、windows上で動く言語の中で、市場価値の高い言語を知りたいと思っています。 お勧めはどの言語でしょうか。 判断基準は、 (1)市場価値 (2)習得の容易さ (3)一般の利用頻度(フリーソフト等での利用率の高いもの) です。 なお、私のプログラミング経験ですが、 ExcelVBA:5年 Sql(not PL/Sql):5年 JAVA:初心者講習程度 です。

  • Excelの開発言語ってなんですか?

    この間、Excelのマクロについて、質問したときに、VBAのコードをわざわざ作って記述してくださった方がいて、VBAで検索いろいろしていったら、そこで改めて疑問をもったのですが、Excelの開発言語ってなんですか?VBAなんですか? 関連しそうなサイトを一通り見てみたんですが、検索の仕方が悪いのか、意味がよくわからなかったので教えてください。 もともと、VBAを、Excelの開発言語で使ってたんだけど、便利がいいので、マクロに代用するようにした、というような形に書いてあるみたいに読めるんですが、読解力なさすぎでしょうか? 私のイメージだと、VBAは、マクロを記述しておくための言語なんですよね(-_-;) 調べ始めたばかりなので、ぜったいどっかに大幅な勘違いがあるとおもうんですが、わかる方にはあたりまえの質問なのかもしれませんが、VBAのコードを書いていただいたことで、Excelなどのアプリケーションソフト自体がどのように開発されているのか、大変興味を持ちました。 不正コピー防止などの理由で、開発言語は公表されていない、などもありましたら、そういうのも、ぜひ、教えてください。 よろしくお願いいたします。

  • AndroidStudio 多言語化

    AndroidStudioで以下のURLを使用して多言語化する場合、すべての言語を自分で翻訳して結果を手入力するしかないのでしょうか? 時間がかかってしまうので他に効率のいい方法がないかと質問いたしました。 Locale locale = Locale.getDefault(); if (locale.equals(Locale.JAPAN)) { str = "ボタンが押されました。"; } else { str = "Tapped the button."; } https://akira-watson.com/android/localize.html

    • ベストアンサー
    • Java
  • 個人におすすめのプログラム言語

    自分でプログラムを組んでWindous上で使えるツールを作れるようになりたいと考えています。 一番やりたいことはトレード関係で、決まった時間や条件で証券会社に自動でログインして発注をかけたり、別のソフトウェア上での単純作業を自動化したりなどです。 プログラム経験といえば、ExcelでのVBAを1年ほどかじったぐらいで、一般的なexeファイルから単品で実行させるようなものは作ったことがありません。 お聞きしたいのは、どの言語を勉強した方が良いのか?ということと、それに関連するお勧めの書籍やサイト、勉強方法などです。 有名なC言語から始まって、C++、C#、Delphi、JAVA、PHP、Rubyなど他にもいろいろありますが、どれがお勧めでしょうか? Cならなんでもできると聞いたことがあるので、これだけ覚えてしまえば何とかなるかなとは思いましたが、Cだけだと厳しいという声もあったりして混乱しています。 プログラムなんて一つ極めるだけでもとんでもない時間がかかるそうですから、これを覚えて駄目ならこれ、というようなやり方は僕の頭脳レベルでは厳しいので、なんとか一つに絞りたいです。 詳しい方、よろしくお願いいたします。

  • プログラミングとコンピュータについて

    プログラミングとコンピュータについて 大学でプログラミング(C言語)を勉強をしててふと思いました プログラミングでどうやってCPUとかメモリとか、そういったコンピュータの深い部分を操作できるのでしょうか? すみません 抽象的でどう説明したらいいかわかりません 簡単なプログラミングだったらカレンダーとか電卓とか作れますが、これらのプログラムってCPUとかメモリとかOSとかの根本的な部分があればこそ成り立つものですよね 例えばCPUの状態を表示するソフトウェアだったりレジストリを削除するツールだったり、こういうプログラムってプログラムが直接コンピュータの根本的な部分と直結してるってことですよね? つまりハードとソフトの境目がどのような構造なのかよくわからないって感じですかね ソフトを作るのはプログラミングだけどソフトとハードを繋げるのもプログラミング ゲームとかスクリーンセーバーとか電卓とかを作っても、これでどうやってwindowsやLinuxは作れたんだろう?って思ってしまいます C言語や他のプログラミング言語を学んでいけば自ずと理解できるものなんでしょうか? 無知は承知で質問します どうにも不思議で、しかし腹立たしくてむずがゆいです 誰か教えてください、お願いします

  • 言語が「できる」とは?

    前々から思っていたのですが、海外の方って外国語が少ししか話せなくても「できる」と言いませんか?日本人は謙遜してか、外国語ができる人でも、「できる」とはあまり言いませんよね。私も大学で外国語(英語と中国語)を学んでいて、英語は普通の人よりはできてるみたいですが、その「できる」レベルがよく分からないので、自信を持って「できる」とは言えません。TOEICや英検など、自分の言語能力が分かるテストを受けたこともありますが、あの「~できるレベル」という基準のようなものはアテになるのでしょうか? そこで質問ですが、言語が「できる」というレベルは一般的にどんなことができれば良いのでしょうか?またその感覚は、日本人と外国人だとどのように違いますか?

専門家に質問してみよう