VBの万年初心者です。VB4(32bit版)の不具合について、どなたかヒントだけでもけっこうですので、よろしくお願いします。
症状は次のとおりです。
VB4でプログラムを組んで、EXEファイルを作成すると、そのたびにレジストリに次のように追加されてしまいます。

○マイコンピュータ\HKEY_CLASSES_ROOT\TypeLib\{0512...}\1.0
 名前 (標準)
 データ "project1"
○マイコンピュータ\HKEY_CLASSES_ROOT\TypeLib\{0512...}\1.0\0\win32
 名前 (標準)
 データ "C:WINDOWS\TEMP\pub4280.TMP"

中括弧{512...}内の部分と、pub4280の部分は、追加されるごとに違う値になります。
また、
○マイコンピュータ\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{0512...}\1.0
以下にも同様に追加されてしまいます。

EXE作成後に、レジストリの[データ]として表示されているパス"C:\WINDOWS\TEMP\"を探してみても、上記のようなファイルは既に存在していません。

これを回避する方法はないのでしょうか。レジストリにどんどん追加されていくのは、気持ちが悪いものですから。
VB4を再インストールでもすればいいでしょうか?

関係があるかどうか分かりませんが、不具合が発生するのは次の組み合わせです。
Windows95 Ver.4.00.950a
Visual Basic Ver.4.0 スタンダードエディション
また、次のソフトが、VBAごと同一OS下にインストールしてあります。
Access95 Ver.7.00a
Excel2000 Ver.9.0.3821 SR-1

ちなみに、Excel2000VBAのメニューから「参照可能なライブラリファイル」を表示させたところ、"project1"という項目が並んでたくさん表示されたことで、この不具合に気付きました。
レジストリに関する知識は皆無ですが、ヒントだけでもいただければ、勉強してみたいと思います。

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

A 回答 (1件)

>VB4でプログラムを組んで、EXEファイルを作成すると、そのたびに


>レジストリに次のように追加されてしまいます。

初めて知りましたが、私の所(Win95+VB4)でも確かにその通りです。
数千回コンパイルしているので、 膨大なレジストリが登録されています(泣)。
困ったものです。


>EXE作成後に、レジストリの[データ]として表示されているパス
>"C:\WINDOWS\TEMP\"を探してみても、上記のようなファイルは既
>に存在していません。

.tmpファイルはコンパイル中に一時的に作成されるファイルです。
    • good
    • 0
この回答へのお礼

お礼が遅れまして申し訳ありませんでした。回避策がないものか、締め切らずに少し待ってみました。
この現象が私だけではないと知っただけでも、何か安心するものがありました(^^;
また、いろいろ質問する予定ですので、よろしくお願いいたします。

お礼日時:2002/04/08 21:36

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

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

QExcelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。
なのですが、ExcelのデータをVBに読み込む方法がわかりません。
ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。

どなたか教えてください。

Aベストアンサー

Open/Close では実質的に言って無理です。
( Excel のファイル構造がわかればできるかもしれませんが・・・)
VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと

Dim eb As Object
Dim es As Object
Dim strFileName As String

strFileName = "C:\Temp\Book1.xls"
eb = GetObject(strFileName)
es = eb.Sheets(1)
MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
eb = Nothing

のような感じで Excel のような感じで内容を読むことができます。
(上の例では 1番目のシートの A列 2行目のセルの内容をメッセージボックスに表示します。)
並び替えですが、Excel 上で並び替えをすることも可能ですが、
読み込んでから並び替えをするなら、
VB6の場合:並び替え関数を自作(並び替えのアルゴリズムはクイックソートやヒープソートなどいろいろありますので、検索して調べてみてください。どこかに VB のサンプルがあるかも。)
VB.NETの場合:Array.Sort が使用可能です。

Open/Close では実質的に言って無理です。
( Excel のファイル構造がわかればできるかもしれませんが・・・)
VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと

Dim eb As Object
Dim es As Object
Dim strFileName As String

strFileName = "C:\Temp\Book1.xls"
eb = GetObject(strFileName)
es = eb.Sheets(1)
MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information)
eb ...続きを読む

QVB6の _ExtentX, _ExtentY

VB6 アプリケーションのメンテナンスをしています。
修正前後で FRM ファイルのソース差分をとって確認したところ、_ExtentX, ExtentY の値が変わっていました。

今回の修正ではいじっていないのですが、変わってしまいまってました。
名前から、水平方向と、垂直方向の領域に関するプロパティと思われるのですがどこで設定されているのか分かりません。

そこで、質問ですが

(1) このプロパティの意味は何でしょうでしょうか
(2) このプロパティ値が変わることによりどのような影響があるのでしょう
(3) このプロパティは意識する必要があるのでしょうか。

以上、ご教示願います。

Aベストアンサー

全くの素人ですが、

1 コントロール(フォーム?)のHIMETRIC単位によるwidthとheight
http://www.xtremevbtalk.com/showthread.php?t=10994
2 フォームのサイズが変わっているのではないでしょうか?
3 フォームは普通意図的にサイズ指定しているはずですので、意識の必要は無いと思います。

QForm_Load と Form_Activate のタイミング

あるデータ入力アプリを作っています。
親フォーム(Form0)で番号を決め、子フォーム(Form1,Form2,Form3,Form4) でデータ入力し、それぞれの子フォームを出るとき(Unload Me) に、変数にsaveしています。それを親フォーム(Form0)で登録を選択したとき、入力データをチェックしてDBに格納しています。
すでにDB格納済のデータの場合、親フォームでDBから変数に読み込み、子フォームのForm_Loadで展開しています。
そこで困っているのは、親と子のフォームを行き来するときにデータの表示で前のが残っていたり、消えてしまったりします。
Form_LoadとForm_Activateを通過するタイミングが、ちゃんと理解できていないためコードの記述位置が不適切なのだと思います。

Form_Load と Form_Activate の実行タイミングについて、お教えください。

Aベストアンサー

Form_Loadは、フォームがロードされたときです。
ロードされる条件は、
1.フォームがスタートアップに指定されているとき、アプリが実行された直後。
2.Show メソッドが呼ばれたとき
3.Loadメソッドが呼ばれたとき
4.フォームに貼り付けられたコントロールのプロパティが参照されたとき
5.フォームに貼り付けられたコントロールのメソッドが呼ばれたとき
です。

ただし、一度ロードされると、Unloadされるまで呼ばれません。


Form_Activateは、フォームがアクティブになったとき、つまり、キャプション(ウィンドウのタイトルバー)の色が変わったときです。

QForm_LoadでDB接続ではなく、Form_Load完了でDB接続したい

VB.NETです。

現在、Form_LoadにDB接続のコードを記述していますが、Form_Load完了後に、DB接続の命令を実行することはできますでしょうか?
つまり、Form_Loadが完了したら、DB接続のコードが実行されるようにしたいのです。

理由は、DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。
また、DB接続エラーとなった場合、Form_Loadによる画面が出る前に、エラーメッセージがポップアップされてしまう。
これらを回避したいのです。

良い方法ご存知の方がいましたら、ご教授下さいませ。
よろしくお願い致します。

Aベストアンサー

こんにちは、じゃんぬねっと です。

Activate イベントは、TopMost にしていると、
FormLoad イベントより先に発生することがあり、お勧めできません。
フラグも必要になりますし。

> DB接続に時間がかかる場合、Form_Loadによる画面がなかなか出てこない。

非同期に実行しては如何でしょう? スレッドを使用するとか。
また、別の画面を表示しておく手もあります。

Q名前に_が入っているとエラーがでるので_の特殊文字を教えてください。

お世話になります。

VBAを使用しています。

名前に_が入っているとエラーがでるので_の特殊文字を教えてください。
改行はChr(10)とかはわかったのですが、_がわからないのです!!

Aベストアンサー

Chr(95) かな


人気Q&Aランキング

おすすめ情報