• ベストアンサー

命令文を外部から取得してVBで実行

設定ファイル(テキスト形式)などに、例えば A=Mid(stringA,StartNo,lengthNo) のような式(命令文)を書いたとき、VBからその設定ファイルの式(命令文)を読み込み、そのまま実行することができないでしょうか。 MIDだけなら条件文で対応もできるのですが、使いたい文字列関数や変数がたくさんあり、また使い方もそのときによって違うので、できれば式(命令文)を設定ファイルから取得したいのです。 是非ご教授ください。よろしくお願いします。 なお、Visual Basic 6でプログラミングしています。

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

  • ベストアンサー
  • ese_ee
  • ベストアンサー率48% (68/139)
回答No.2

そういう思想に向かうときは、設計がおかしい場合も多々ありますので、 できれば、そうならない設計を考えてみてください。 といってもそんなに大げさな話ではなく、可能は可能です。 VBScriptのEval関数を呼ぶとか、 http://homepage2.nifty.com/Dee/vb/tips/vb/vbscripteval.html .NET Frameworkであれば、その場でコード書いてコンパイルして実行とかも出来ますが、 VBCodeProvider Class http://msdn2.microsoft.com/en-us/library/microsoft.visualbasic.vbcodeprovider.aspx あえてお薦めはしません(理由は上述)。

hayakiku
質問者

お礼

ご回答ありがとうございます。 設計がおかしい場合も・・・!?そうなのですか、思いもしませんでした。 Eval関数も見てみましたが、まず、設計からどう作るべきか考えてみます。 ありがとうございました!!

その他の回答 (1)

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

そんなことは大掛かりな仕組みの中でやれるようにしないと出来ませんよ。言語開発経験でもなければ。 よく素人がエクセルなんかでも、関数体系に従ったテキストで文字列をセルに書くと実行してほしい夢想する質問が時どきある。 それだけプログラマーの夢みたいなところがあるが。 いまある言語の実行中に別言語を作るとか実行することに当たると思うが、並みのプログラマに出来るはず無い。 簡単なケースでEVALUATEなんて仕組みをつくったりしているソフトがあるようだが。 http://www.famlog.jp/article.php?id=687 コボルのEVALUATEは別 http://www16.plala.or.jp/hiyokogumi/dic/a_evaluate.html それと我々が使わせてもらっている、メソッドやプロパティがそれに当たるといえる。本格的に突き進めると、トランスレーター的言語を内包するようなことになる。 プログラム基礎論として、コンパイルの関連をもっと一生かけて勉強したら。

hayakiku
質問者

お礼

早速の回答ありがとうございます。 使えそうな関数やAPI、あるいはうまいアルゴリズムでもあればと思ったんですが、やはり大掛かりな仕組みがいるのですね。 ちょっと面倒ですが、Midなら、Instrならと関数ごとに条件文を作り、対応する変数を取得して実現することにします。 ありがとうございました。

関連するQ&A

  • VBで作成した実行形式をASPを用いて実行したい

    VBで作成した標準EXEをWEBサーバ上で実行しようと考えていまして現在苦悩しています。 BASP21を使用してEXEを実行したところ、PROCESSには起動したEXEが表示されているので実行はされてはいるのですが処理が適切になされていない状況です。 VBで作成した実行形式をASPを用いて実行する場合には、何か方法があるのでしょうか? よろしくおねがいします。 [動作環境] OS:Windows2000 ServerSP3 ブラウザー:IE6.0 VB6.0+SP5 実行形式の処理内容 SUB MAINを起動関数に設定し、OPEN関数でFILE書き込みを行う。 なお、このファイルはサーバー上に作成される。

  • VBでFORTRANの制御ができない

    Visual Basic(2003)でFORTRANの実行ファイルを制御したいと考えております. しかし,ただ実行するだけならできたのですが,FORTRANにおいてOPEN文を用いると,制御ができなくなります. 具体的には,実行ファイル単体を実行すると作成されるTextファイルが,VB上で実行すると作成されません. どなたか原因が分かる方がいらっしゃいましたら,教えてください.

  • プログラム実行時の、一時停止の命令文

    初心者ですが、Visual C++6.0での、 プログラム実行時の、一時停止の命令文が、存在しますか? 返答、お願いします。

  • VB6で、変数の値を別ファイルの変数に引き継ぎたい

    AというVBのソースファイル(.frm)内に関数の呼び元があり、 その関数がBというファイルにあります。 その関数内で値が設定される変数を、Bファイルのグローバル変数とし、 また、Aファイルのグローバル変数として同じ名前の変数を宣言したとしても、 やはりB内で関数の実行が終了し、Aに戻った際には、変数は別のものとみなされている ようで、B内関数で設定された値がAファイル内での同名変数に引き継がれません。 どのようにすればよろしいでしょうか? ご存知の方、お願いします。

  • VBで作成した実行形式の戻り値を作成したい

    VBで作成した実行形式の戻り値を作成したいと考えています. たとえば,A.exeという実行形式をVBで作成します. このA.exeを別のプロジェクトでshell関数などで起動します. 処理が終了した時に, A.exeの処理が成功した場合に1 A.exeの処理が失敗した場合には0を返すようにしたいと考えています. 可能でしょうか? 環境:Windows2000+SP3 Visual Basic 6.0+SP5

  • VBで文字検索

    VBで文字列検索するとき たとえば 借り物商品001,1 仕入商品005,3 上記のようなテキストがあったとき sWk(1) = 借り物商品001 sNo(1) = 5 sWk(2) = 仕入商品005 sNo(2) = 3 上記のように.(カンマ)の前後で項目を分けたいのですが MidやLen関数を使ってもうまくいきません 全角半角が混在のせいで文字数は取れるのですがMid関数がうまくできないのです VB初心者のためこんなことで悩んでます どうかよいアドバイスお願いします

  • ファイルを読み込んで変数へ

    VB初心者です。 ファイルの文字列を読み込んで、変数に格納し、SQL文のテーブル名に指定したいのですが、どうすればよいのでしょうか? テキストから文字列を取得するところまではできたのですが、変数にもって、SQL文に組み込むことができません。実行すると「テーブル名が無効です。」とエラーになります。 どうか、皆様ご教授ください。

  • VB6.0 特定の文字列の取得方法

    環境:WINDOWS 2000 Visual Basic 6.0 (1)htmlファイルをInbutB関数で読み込み、変数AAAに代入 (2)Instr関数を使用して Instr(htmlが格納された変数,"<td")などと特定の文字位置を検索 (3)mid関数などで特定の文字位置から文字位置を抜き出す  例:mid(AAA,<TD>開始位置A,文字列開始位置B) 上記のようなことをやりたいと考えています。 今回困っていることは<TD>開始タグの文字位置の検索です。 <td valign="top" align="right" width="600"> width="600"のtd開始タグの位置を検索したいと思っています。 ファイルは複数あり、<td と width="600" の間に入っているものも異なり、またシンプルに<td width="600>というパターンも存在します。 こういった場合、どの用に特定の条件を満たした<TD>タグの位置を検索すればよいでしょうか?

  • VB6.0でダブルクォーテーション

    こんばんわ! VB6.0でダブルクォーテーション「”」←これをテキストファイルに書き込みたいのですが、うまく出来ません。 いくつかのサイトを見てダブルクォーテーションを重ねればOKとあったので、 Write #fileno, "文""字""列" とやると、テキストファイルに "文""字""列" とそのまま書き込まれてしまいます。 最終的には下記のようにテキストファイルに書き込みたいです。 文"字"列 アドバイスのほどよろしくお願いいたします。 もしくは、どこか参考になるサイトのご紹介をお願いいたします。

  • VB.NETでExcelの数式バーの処理をさせたい

    Excelのセルにいろいろな数式が入っていて、 この数式を書き出したテキストファイルを読み込ませて、 VB.NETで処理をしたいのですが、 VB.NETで、Excelの文字列関数を含んだ式を処理するには どのように記述すればよいでしょうか。 単なる計算式であれば  Dim xlApp As New Excel.Application  Dim str1 As String  Dim x As Integer  a = "3600 / 60 + 5000"  x = xlApp.Evaluate(a) でできるのですが文字列だとうまくいきません。 例えば、ExcelのシートのA1セルを選択して 数式バーに =MID("ABCDE",2,3) と入力すると その結果のBCDがA1セルに得られますが VB.NETで、 =MID("ABCDE",2,3) から BCD を得るにはどのようにすればよいでしょうか。 なお、=MID("ABCDE",2,3) の式は一例であって、 以下のように、この式をVB.NETで記述する 仕方を知りたいのではありません。  Dim str1, str2 As String  str1 = "ABCDE"  str2 = str1.Substring(2, 3) よろしくお願いします。 (VisualStudio2010 , Excel2003 , WindowsXP SP3)