仕事の都合なのですが、ずいぶん昔に作成したプログラム(VB2で作成)が
Windows2000 Professionalで起動するかどうかを確認することになりました。

動かしていると、「Grid.vbxがロードできない」という内容のエラーが出ました。

Gridは"winnt\system\"に入っています。ここにない場合は「Gridがない」というメッセージが表示されていたので、
ファイルの存在は認識しているのだと思われます。

以上の状況から、次の2点を教えてください。
(1)ロードできない原因
(2)このエラーを回避できるのか否か

よろしくお願いいたします。

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

A 回答 (2件)

こんにちは。

itohhといいます。

不確かなことばかりで申し訳ありません。

>OSが32ビットだと16ビットのコントロールは動かないかもしれない、
>ということでいいのでしょうか。

そのとおりです。

また、grid.vbxをどこからかコピーしてきても対応するDLLがなくてはいけません。
基本的にWindows2000上では16ビットのDLLは動作しないと思ってください。

VB6.0でビルドすることをお勧めします。ただし、修正しないとビルド出来ないと
思われます。
    • good
    • 0

こんにちは。

itohhといいます。

わたしは、VB2.0のアプリケーションをWindows2000上で動作させようとしたことがないので
確かなことは言えないのですが。
Windows2000上では、VB2.0で開発した16ビットアプリケーションは動作しない可能性があります。
vbxファイルは、16ビットコントロールなので32ビットコントロールのocxファイルに
置き換えなければいけないと思います。

動作させるとしたらば、VB6.0でビルドしなおせば良いかもしれません。この場合、ある程度のソース
の修正が発生することを覚悟しなければいけないと思います。

参考になるマイクロソフトのページを載せておきますので一度覗いてみてください。

・Visual Basic の旧バージョンのコントロールのアップデート
URL:http://www.microsoft.com/JAPAN/developer/library …

参考URL:http://www.microsoft.com/JAPAN/developer/library …
    • good
    • 0
この回答へのお礼

ご回答いただき、ありがとうございます。

VBXは16ビット用、OCXは32ビット用という話は聞いたことがあります。
OSが32ビットだと16ビットのコントロールは動かないかもしれない、ということでいいのでしょうか。

お礼日時:2002/02/08 09:54

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

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

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

QVisual Studio 6.0 Professional → Visual Studio 2005 Professional

質問1

現システムで下記開発環境を用いて、開発したシステムがあります
本システムをVisual Studio 2005 Professional のみで再開発することは可能でしょうか?

現システム
 1.Visual Studio 6.0 Professional
  Visual Basic 6.0 Visual C++ 6.0
 2.Borland C++ Builder 6 Professional

質問2
 Visual Studio 6.0 Professional(Visual Basic 6.0 Visual C++ 6.0)で開発したプログラムを
Visual Studio 2005 Professionalでコンパイルすることは可能なのでしょうか?

Aベストアンサー

お世話になります。

> 質問1
再開発というのは、
アップフレードウィザードを用いるという事でしょうか。

であれば、ですが。
一度、アップグレードウィザードを実行してみると
お解かりになるかと思いますが、
あまりアップグレードウィザードをアテにしすぎると
酷い目に遭うと思います。
例えば、.NET では Nothing を代入するだけではだめでも VB6 で Set hoge = Nothing
でオブジェクトが解放されていたものに関して、
アップグレードウィザードは全て
hoge = Nothing の形に変換をして、
アップグレード結果のレポートに
ワーニングかノートという形か何かで警告を出していた
記憶があります。
結局自分で修正は必要です。

> 質問2
VS2005 で開く時、
VS2005 の形に開く時にコンバートするか
否かを聞いてきます。
コンバートし、ビルドエラー(VS6 の時はあったが
VS2005 では廃止された構文などはビルドエラーになるものもあります)
がなければ、コンパイル可能と思います。

参考URL:http://www.microsoft.com/japan/msdn/vbasic/migration/tips/

お世話になります。

> 質問1
再開発というのは、
アップフレードウィザードを用いるという事でしょうか。

であれば、ですが。
一度、アップグレードウィザードを実行してみると
お解かりになるかと思いますが、
あまりアップグレードウィザードをアテにしすぎると
酷い目に遭うと思います。
例えば、.NET では Nothing を代入するだけではだめでも VB6 で Set hoge = Nothing
でオブジェクトが解放されていたものに関して、
アップグレードウィザードは全て
hoge = Nothing の形に変換をして、
...続きを読む

QGridコントロールにCheckBoxを表示

DataGridやMSFlexgridにチェックボックスを表示することは出来ないでしょうか。
DataGridにはプロパティの形式のところで指定できるようですが、いくら試してみても表示されません。
DataGrid及びMSFlexGridにCheckBoxを表示させる方法を教えてください。

Aベストアンサー

VB6に付属するGridは、市販コンポーネントを機能制限したものです。
機能的にしょぼいし、一部のプロパティが働かないのは、わざとそうしています。
不満なら製品版を買えというこどです。

QGridのカウントについて

データセットにテーブルをつくり、それをグリッドに表示した後、グリッドの中身を一行削除して、グリッドをカウントしても正しい数が帰ってきません。
例えば、テーブルに

ID|名前
01|aaaaa
02|bbbbb
03|ccccc

となっており、それをGrid1に表示します。
その後、

ID|名前
01|aaaaa
03|ccccc
のように1行削除した後、

MessageBox.Show(Grid1.DataSource.Rows.Count)

を行うと、「3」と表示されます。
「2」と表示するための方法を教えてください。

Aベストアンサー

使用言語の情報がないため、MessageBox.Showというコマンドが
ありましたので、Vb.netと仮定してお話を進めさせて頂きますm(__)m

DataTableのRowを削除した後、AcceptChangeされてますか?
もし削除されてないのでしたら、削除が反映されません。
AcceptChangeしないと、内部的に削除フラグがたっているだけのような
状態になっていますので、Countをとっても件数は、変わりません。

仮定の上に回答をさせて頂きましたので、見当違いな回答になって
おりましたら申し訳ございません。

Qオートシェイプの削除時のエラー回避法

エクセルのVBで教えてほしいんですが、
以下のもので
実行時エラー'1004':
指定したコレクションに対するインデックスが境界を越えています

とエラーがでます

Sub delgrf()


Sheets("断面図").Select
For i = 1 To 1000
ActiveSheet.Shapes.Range(Array(1)).Delete
On Error GoTo 10
Next i
10 Sheets("入力").Select

End Sub

sheet断面図に何もないときに実行すると
ActiveSheet・・・でエラーします(当然だけど;^^)

「断面ありませんよ~」みたいなダイアログ表示して
実行時エラーを回避できるにはどうしたらいいですか?
ご教授お願いします。

Aベストアンサー

こんな感じでしょうか?

Sub delgrf1()

Dim sp As Variant

Sheets("断面図").Select
If ActiveSheet.Shapes.Count = 0 Then
MsgBox "シェイプはありません。"
Else
If MsgBox("シェイプを削除しますか?", vbYesNo) = vbYes Then
For Each sp In ActiveSheet.Shapes
sp.Delete
Next
End If
End If

Sheets("入力").Select

End Sub


単なる削除ならこちら
Sub delgrf0()

Dim sp As Variant

Sheets("断面図").Select
For Each sp In ActiveSheet.Shapes
sp.Delete
Next
Sheets("入力").Select
End Sub

QData gridについてなのですが、、、

またまたお世話になります<(_ _)>VB6にて、社内の生産計画補助ソフトを作ってる素人です(>_<)パーツ名と個数を入力し、追加ボタンを押すと、アクセスに追加されていくようにしました。しかし、これでは何てパーツを追加したかそこではわかりませんので、これはマズイと思い、Data gridの存在を知り、見よう見まねで表示させようと思いました。しかし、実際には一旦メインフォームに戻って登録フォームに入ると表示されてるのですが、そのフォームで追加しても反映されません(>_<)これを追加してすぐにData gridに反映させる方法ってあるのでしょうか?追加ボタンおしたらすぐにData gridに表示させたいのですが、わかりません(>_<)できるのかどうかすらわかりません。Data grid以外でも良い方法があるのなら教えてください<(_ _)>

Aベストアンサー

こんにちは。

私がやっているのは、SQL文での検索結果をMSFlexGridに表示させるということです。
Data gridは使用したことないので、MSFlexGridの使用例を参考までに。

再描画というのは、任意のタイミングでSQL文を発行して、その結果を表示させるという意味で、接続しなおすということではありません。

テーブルの中身がそのまま表示されるのではなく「自分で文を発行して表示」ということをしています。

たとえば、form_load時に"SELECT * FROM emp"の結果をグリッドに表示させているとしたら、データを入力した時にもう一度、SQLを発行してその結果を表示させるということです。

参考URL:http://www.bcap.co.jp/hanafusa/VBHLP/MSFlexind.htm


人気Q&Aランキング

おすすめ情報