• ベストアンサー

VB6:クラス名(文字列)からインスタンス

VB6でクラス名から実体化させることは可能でしょうか。 たとえば、clsTestというクラスがあったとして Dim objTest as Object Set objTest = New ("clsTest") のような感じです。 .NetであればGetTypeでいけそうなのですが・・ よろしくお願いいたします

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Eval関数はどうですか? Set obj = Eval("new clsTest")

Neko4x
質問者

お礼

ありがとうございます。 やりたいことは教えていただいたEval関数そのものでした。 ただ、Eval関数はVBS等のスクリプトやPerl等の機能で、 どうもVB6や.NET、Cには存在しないようです。 Evalの代わりになる機能はないですよね。

Neko4x
質問者

補足

調べたら、使えるようですね。失礼しました。 ▼文字列の計算式の計算結果を取得する http://dobon.net/vb/dotnet/programing/eval.html MSScriptControl等を参照することで使えるようになる、ということ? できたら参照など無しで使う方法がありがたかったのですが、 実現しようとしたらこれくらいしないと実現出来ない、ということですね・・・ ありがとうございました。

その他の回答 (1)

  • hoopcup
  • ベストアンサー率27% (6/22)
回答No.1

set obj = CreateObject("ADODB.Connection") でいかがでしょう?(↑はADOのコネクションオブジェクトを作ってます)。 ただ、インテリセンスはききませんが。

Neko4x
質問者

お礼

ありがとうございます。 CreateObjectですが、COMオブジェクトやActiveXに限定されるので使えなさそうです。 今回はただのクラスオブジェクトなのです・・・

関連するQ&A

  • VBのクラスの利用

    VBの初心者ですが、FormにTextBoxとコマンドボタンを配置して、ボタンクリックでTextBoxに"ABC"と表示させるものをクラスを使ってやろうと思っています。WriteAクラスを作り、その中にkakikomiメソッドを作り、引数を(TextA AS TextBox)とし、メソッド内部でTextA.Text="ABC"としました。 コマンドボタンクリックメソッド内部で、  Dim obj As WriteA  Set obj=New WriteA  obj.kakikomi(Text1)//Text1はTextBoxのオブジェクト名 とすると、[引数の型が違う]でコンパイル出来ません。どうしたら良いのでしょうか?

  • VB.NET2003のDataGridでコンボボックス

    こんにちは。 最近VB.NET(2003)を始めたばかりの初心者です。 DataGridにコンボボックスを作成する方法を探してまして、 http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html に書いてあるようにDataGridTextBoxColumnクラスからの派生クラスを作成して呼び出してみました。 そうしたところ、コンボボックスが表示され、データのセットもきちんとできました。 しかし、そのコンボボックスで選択している値を取得する方法がわからなく困ってます。 たとえば Dim comboSorce As New DataTable("ComboBox") comboSorce.Columns.Add("DisplayMember", GetType(String)) comboSorce.Columns.Add("ValueMember", GetType(Integer)) comboSorce.Rows.Add(New Object() {"OK", 0}) comboSorce.Rows.Add(New Object() {"NG", 1}) というデータをコンボボックスにセットした場合 OK,NGという表示上の値は CStr(DataGrid1(row,col)) で取得できますが、実際の値を取得する方法がわかりません。 ご存知の方いらっしゃいましたら、ご教授ください。 それと、行毎に違う値(リストデータ)のコンボボックスを作成することはできますでしょうか? 以上です。よろしくお願いします。

  • VB6.0上でExcelオブジェクトを生成

    VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と その2 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と、どちらが良いのでしょうか? 開発環境は  Windows2000  VB 6.0  Excel 2003 です。

  • VB6.0のクラスで、自分自身のインスタンスを作成するメリット

    クラスのメソッドで、自分自身のインスタンスを作成している、コードをよく見かけます。 どんなメリットがるのでしょうか? 簡単に、クラスファイルのコードを書きました。 【A.cls】 Option Explicit Dim pstrID As Long Dim pstrName As String Public Function fncCreate() As Object     Set fncCreate = New clsA  '★自分自身のインスタンスを作成する End Function Public Function fncID() As Boolean     pstrName = "ID" End Function Public Function fncName() As Boolean     pstrName = "STRING" End Function Private Sub Class_Initialize()     pstrID = 0     pstrName = "" End Sub

  • vb6でCultureInfoオブジェクトをSet

    vb6でCultureInfoオブジェクトをSetしたいのですが、うまくできません。 Visual Basic 6.0 SP6 WindouwsXP Professional Microsoft .NET Framework 2.0 参照設定でmscorlibを追加し、下記コード作成。 Dim calendar as Calendar Dim culture as CultureInfo Dim format_info as DateTimeFormatInfo Set calendar = New JapaneseCalendar Set culture = New CultureInfo("ja-JP") ←ここでエラー(Newキーワードの使用法が不正です。) Set format_info = New DateTimeFormatInfo format_info = culture.Datetimeformat format_info.Calendar = New JapaneseCalendar() … 最終的には元号コード1~4の元号名を自動で取得したいと思っています。 (新元号対策として) そもそも、vb6ではCultureInfoクラスは使えないのでしょうか? それとも、違う方法で元号自動Getできるんでしょうか? どなたか教えて頂けたら幸いです。。。

  • クラスの設定について

    変数をクラスに設定するときのコードの書き方ですが、 sub プロシージャー名() dim m as クラス名 set m = new クラス名 ・・・・ end sub と sub プロシージャー名() dim m as new クラス名 ・・・・ end sub とかいても(簡単なプログラムでは)同じ働きをするのですが 違いはあるのでしょうか。

  • クラス?オブジェクト?インスタンス?何がなんだか・

    一般的なオブジェクト指向の 定義として下記で合っているのでしょうか お願いします クラス:第2実体(人間) インスタンス:第1実体(例:山田) オブジェクト:色々なインスタンスをさして、抽象的に総称としてオブジェクト 例えば・・クラス:人間、インスタンス:山田 クラス:犬、インスタンス:ゴン 違うクラスのインスタンスをまとめて呼ぶ際にオブジェクト? よく分からなくなっています、よろしくお願いします

  • VB 提供されているクラスの使い方は?

    VB初心者です。 提供クラスを利用する宣言方法を教えて頂けませんでしょうか? ■背景 提供されているクラスを利用したく、調べているとそのクラスそのものの使い方は、沢山出て来るのですが、そのクラスを宣言する?方法が判らないためビルドエラーになってしまいます。 しかし、提供クラスを利用する前宣言の方法を調べても出て来ないのです。 例えば・・・ https://dobon.net/vb/dotnet/form/folderdialog.html 'FolderBrowserDialogクラスのインスタンスを作成 Dim fbd As New FolderBrowserDialog ここでエラーとなってしまいます。 FolderBrowserDialogクラスの宣言方法が何処を調べても出て来ないのです。 アドバイスの程宜しくお願い申し上げます。

  • 戻り値がクラスオブジェクト

    VB初心者でわからないので教えてください。 ある関数を呼び出して戻り値を取得するのですが、その戻り値がクラスオブジェクトとなっています。いろいろ調べてみましたが、いい結果にヒットしなかったので今回質問してみました。 言語はVB6.0です Function 関数A(A as String, B as String) dim C as Class1 set C = new Class1 Class1で宣言された変数に値を入れる処理     関数A = C end Function イメージはこんな感じです。 すみませんが解決策を教えてください。。。。

  • VB初心者なのでわかりづらい説明になってしまっていますが、宜しくお願い

    VB初心者なのでわかりづらい説明になってしまっていますが、宜しくお願いいたします。 ソリューションに含まれる全クラスのメソッド一覧を取得したいと考えています。 考えている処理は以下の通りです。 For i As Integer = 1 To プロジェクト数   For j As Integer = 1 To クラス数     ' クラスオブジェクトの取得     Dim typ As Type = GetType(プロジェクト名.クラス名) ※     ' クラスが持つメソッドの取得     Dim methods As MethodInfo() = typ.GetMethods()     ' 出力処理   Next Next ソリューションの例 Solution   ├Project1   │  ├Class1_1   │  └Class1_2   ├Project2   │  ├Class2_1   │  ├Class2_2   │  └Class2_3   └Project3      └Class3_1 ただ、ソリューションに含まれるプロジェクトの数、プロジェクトに含まれるクラスの数 の取得方法とプロジェクトに含まれているクラス名の取得方法がわかりません。 よろしければ、教えていただけないでしょうか。 また、他に良い方法があれば教えていただけないでしょうか。 宜しくお願いいたします。 環境はVB2008です。

専門家に質問してみよう