• ベストアンサー

BCB5でVBAのActiveXコントロールを作る

Borland C++ Builder5にて、ActivXコントロールを作っています。 今までは、自分の環境下で思ったとおり(VCLを使って、Serverにあるファイルを扱うだけなのですが)動いていました。 ちなみにそれは、MSAccessのVBAで動くものです。 今回、それを他の環境下で試験してみると、VCLの部分がまったく表示されない状態になり、ホトホト困ってしまいました。 必要なDLL群もインストールしたもつりなのですが、他に要因が推察されるようでしたら、ご教授お願いします

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

なかなか原因がつかめないので、問題の切り分けからやり直してみましょう。 1.ActiveXコントロールが正しく登録されているか? ・・・regsvr32.exeを使って手動でレジストリ登録してみてください。 2.ActiveXコントロールが使えるか? ・・・Access以外で作成したコントロールを使用するアプリを作成し、動かないPCで動かしてみてください。 3.AccessでActiveXコントロールを使ったフォームが作成できるか? ・・・新たなmdbを作成し、ActiveXをフォームに貼り付けて見てください。 てな感じですかねぇ。 あとは、Access側とすると、OfficeのSPの違いとか、 MDACのバージョンとかですかねぇ。

KAZUMI2003
質問者

お礼

なんか、勘違いというか、特殊な調子悪い環境に騙されてしまった状態に、つき合わせてしまったようで、申し訳ありません。根気強くお付き合いいただいて、感謝しております。またの機会がありましたら、よろしくお願いいたします。このたびはありがとうございました。

KAZUMI2003
質問者

補足

再び寝込んでしまって、申し訳ございません。 先日やっと、実験してみました。 結果的には、動かない環境は特別な状態になっているのがわかり、その他の環境では動いていました。 特別な環境とは、Win98から、Win2000にUPグレードしたもので、¥Windowsと¥Winntが両方あって、regsvr32 target.ocxとしても、Target.ocxが見つかりません。というメッセージが出てしまいます。また、スタートからのファイル検索にもなぜか、そのファイルが見つからない状態なのです。でも、¥WINDOWS¥SYSTEM32のDIRをとると、表示されるのです。そんなことって起こりうるのでしょうか?

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>ひょっとして、マトが外れているでしょうか? >全然、違う要因が他にあったりするのでしょうか? cc3250mt.dll borlndmm.dll これらが使用するDLLはすべて動作しないマシンでもありますか? OCXが使用するDLLだけではなく、DLLが使用するDLLも必要ですけど。 で、肝心のOCXはレジストリ登録してますか? もしくは、できるようにインストーラを作成しましたか?

KAZUMI2003
質問者

補足

風邪で寝込んでいて返事が遅くなってすみません。 cc3250mtとborlndmmの使用するDLLは、すべて、前述したものの中に入っていました。 レジストリ登録は自動的にするようにインストールシールドで、設定してあります。 正直、かなり参っています。 今の延長に解決があるのかどうか?でも、なぜ自分の環境だと動くのか?

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>必要なDLL群もインストールしたもつりなのですが、 つもりではわからないので、どのように? あとAccessのバージョンは同一?

KAZUMI2003
質問者

補足

以下のDLLが必要なのをTDUMPにより確認し、インストールシールドで、<WinsysDIR>に入れるようにしました。 (但し、米印のファイルは、もともと相手環境にあったので入れていない。インストール後これら全部が存在することを確認) VCL50.bpl borlndmm.dll advapi32.dll * kernel32.dll * mpr.dll * gdi32.dll * user32.dll * ole32.dll * oleaut32.dll * olepro32.dll * cc3250mt.dll で、Accessのバージョンは2000です。 ひょっとして、マトが外れているでしょうか? 全然、違う要因が他にあったりするのでしょうか?

関連するQ&A

  • STATICコントロール

    質問があります。 CreateWindowで作ったSTATICコントロールなのですが サブクラス化をして処理をしようと思っていたのですがWM_LBUTTONDOWN、その他マウスイベントメッセージが返ってきません。 これは仕様なのでしょうか? 環境はBorlandです。

  • BCBで作成したDLLを、VC++で静的リンクさせる方法

    BCBで作成したDLLを、VC++で静的リンクさせる方法 Borland C++ Builderで作成したDLLを、VC++アプリケーションで利用できるように LIBファイルに変換したいのですが、上手くいきません。 下記の手順を踏みました。 1. BCBでDLL作成   「VC++スタイルのDLL」で作成、   「VCLを使う」「CLXを使う」「マルチスレッドを使う」はチェックせず 2. コマンドラインで「IMPDEF.exe」を使用して、dllからdefファイル作成   (IMPDEF.exeは、\Borland\CBuilder6\Binに格納されていた) 3. コマンドラインで「LINK.exe」「LIB.exe」を使用して、defからlibファイル作成   (LINK.exeとLIB.exeは、\Microsoft Visual Studio\VC98\Binに格納されていた) 4. VC++プロジェクトファイルを保存したフォルダに、DLLファイルとlibファイルをコピー 5. VC++の「プロジェクト」-「設定」-「リンク」-「オブジェクト/ライブラリモジュール」に   作成したlibファイルを追加 VC++プロジェクトをビルドすると、下記のエラーメッセージが表示されます。 ///////////////////////////////////////////////////////////////////////////////// dllread.obj : error LNK2001: 外部シンボル "__imp__(関数名)@0" は未解決です LIBC.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です Release/dllread.exe : fatal error LNK1120: 外部参照 2 が未解決です。 link.exe の実行エラー ///////////////////////////////////////////////////////////////////////////////// BCBとVC++のバージョンは、下記の通りです。 BCB Professional 6.0 VC++ 6.0 ちなみに、同じDLLを動的リンクで利用することは出来ました。 初心者の質問で申し訳ございませんが、解決策が分かる方がいらっしゃいましたら 教えていただけないでしょうか?

  • EXCELでactivexコントロールを挿入できな

    お世話になります。 環境はWindows8.1+EXCEL2010です。 タイトルの通り、ワークシート上にactivexコントロールのラベルやテキストボックスなどを挿入しようとすると「オブジェクトを挿入できません」というエラーが表示されてしまいます。 月並みな表現ですが、まさに昨日まで特に問題なく使用できていたため、原因がわからず非常に困惑しております。 ちなみに昨日まではVBAにてワークシート上に正常に配置できていたラベルコントロールが、本日では「実行時エラー1004: オブジェクトを挿入できません」というエラーを表示して正常に配置できなくなってしまい、異常が発覚した次第です。"Microsoft Forms 2.0 Object Library"への参照設定がなされていることは確認しています。 他に確認すべき点などございましたら、ぜひご教授いただければ幸いです。 よろしくお願いいたします。

  • ActiveX コントロールでのセル選択

    Excel VBA独学中の初心者です。 目的:ActiveX コマンドボタンをクリックして他のSheetのセルを選択する 環境例:シートが2個(Sheet1、Sheet2) Sheet2にActiveXコントロールのコマンドボタンを置く 【プログラム1】:コマンドボタンには次のようなVBAコードを記述 ---------------- Private Sub 別シートセル選択_Click() Worksheets(1).Activate Range("A5").Select End Sub ---------------- 結果:この時次のようなエラーが出ました。 '実行時エラー'1004 'アプリケーション定義またはオブジェクト定義のエラーです。 -------------------------------- -------------------------------- 【プログラム2】:コマンドボタンには次のようなVBAコードを記述 ---------------- Private Sub 別シートセル選択_Click() Worksheets(1).Activate Worksheets(1).Range("A5").Select End Sub ---------------- 結果:OK ---------------- ---------------- ところが次の【比較1】【比較2】の場合、「Range("A5").Select」だけでOKでした。 ---------------- 【比較1】 コントロールの存在するSheetのセルを選択する場合は「Range("A5").Select」だけでOKでした。 ---------------- 【比較2】 Subマクロで記述する場合も「Range("A5").Select」だけでOKでした。 プログラムは以下 -------- Sub セル選択() Worksheets(1).Activate Range("A5").Select End Sub ---------------- 【質問】 ActiveX コントロールを置いているSheetとは別のSheetのセルを選択する時は、選択しようとするセルの「Sheet名」から記述しなければならないのでしょうか。 「Range("A5").Select」だけでOKだった【比較1】【比較2】との違いを教えていただきたくお分かりの方宜しくお願いします。 (用語の使い方に誤りがありましたらすみません。)

  • 優れもののI.D.E.があれば教えてください

    C#のI.D.E.(統合開発環境)としてVisual Stadioを使っていますが、 使い勝手の悪さに閉口しています。 特にコンパイル速度の遅さにはうんざりです。 以前、Borland C++ Builder を使っていたのでどうしても その差が気になります。 もっと開発効率を上げるため他のI.D.E.を使うことを検討しているのですが、 C#BuilderやEclipseなど他の開発環境をお使いの方、 どうか意見を聞かせてください。

  • C++のDLLが見つからないVBAから見つからない

    こんにちは。質問させてください。 Visual C++ 2008 Express Editionで自作DLLを作成しました。 このDLLが、開発環境(WindowsXP、Excel2002)の Excelマクロで呼び出したところ、うまく動いたのですが、 WindowsVista、Excel2007のPCで同じマクロを実行すると 実行時エラー '53' ファイルが見つかりません [ファイル名] というエラーが出て実行できません。 どちらの環境でもDLLファイルはフルパスで指定していて ファイルはちゃんと存在しています。 原因が、Vistaなのか、Excel2007なのか またはその他の要因なのか、わからずに悩んでいます。 どなたか心当たりがある方がいらっしゃいましたらご教授願います。 よろしくお願いします。 その他詳細 ・DLLはdefファイルを使ってEXPORTしました。 ・Vistaのユーザーアカウント制限をoffにしてます。 ・Declear部分のソースコードは Declare Sub Prepare Lib "C:\test\API_test.dll" (ByVal FileName As String)です。

  • Office2007のVBAのDLLファイル?

    全社的にOffice2000(又は97)からOffice2007に移行する作業中です。 NotesデータベースからExcelデザインフォーマット使用して印刷できる市販のソフトを導入していますが、Office2007環境では、実行する際、以下のエラーが出ます。 「このファイルのVBAプロジェクトを開くには、現在インストールされていないコンポーネントが必要です。詳細については、「Microsoft Office on-lineでVBAコンバータと検索して下さい」と小窓が開きます。 小窓を閉じると、もう1つ小窓が開き、 「このブックにある、VBA プロジェクト, ActiveX コントロール, およびその他のプログラミング関連の機能は失われています。」と表示されます。 類似質問をこの相談箱で見つけました。 Excel2003と2007の違い? http://questionbox.jp.msn.com/qa2776712.html 上記では『マイクロソフトに連絡し、VBAのDLLファイル(Hot Fix版)を入手すれば直りました。(無料)』と回答がされていますが、詳細がわからず困っています。 最終的には有料サポートに聞くしかないのかも知れませんが、上記DLLファイル はどのようなものなのでしょうか?どこかで手に入りませんでしょうか? よろしくお願いいたします。

  • VBAのActiveXコントロールを元に戻したい

    漸く自動記録を覚えたばかりのマクロ初心者です。 入門書を片手にユーザーフォームを練習しています。 ツールボックス上で右クリックした時に「削除 項目」というコマンドが出現したので「選んだらどうなるのだろう」と思いクリックしたら、そのコントロールが消えてしまいました。元に戻そうとヘルプを読んだり、それらしきものを探したりしていますが、まるで復旧しません。 Officeのマニュアルを読んで「プログラムの追加と削除」から変更を選択し再インストールを試みましたが、やはり復旧しません。 初心者が子供地味た好奇心でトンでもない事をしてしまったと思いますが、後の祭になっています。 お恥ずかしい質問ですが、どなたかお知恵を拝借できないでしょうか。宜しくお願いします。

  • スタンドアローンベースのアプリで使用するDB

    10年以上前に開発されたシステムのDBがParadoxだったのですがサポートがなくなった為に他のDBにのせかえることになりました。 それでどのDBにのせかえるのが良いか検討しているのですがどのようなDBが考えられますか? <開発環境> WindowsXP SP2 Borland C++ Builder6 <条件> ・DBの配布が無料であること ・インストーラーに組み込めること ・ODBC接続が可能なこと 僕自身、Accessが良いのではと考えています。

  • エクセル2007のVBAについて

    エクセル2007のVBAについて エクセル2003にて、セルの右クリックメニューにコンボボックスを作成するマクロ 「CommandBars("Cell").Controls.Add(Type:=msoControlComboBox)」を使用していましたが、 エクセル2007に変更したところ、使用できなくなりました。 (エラーも出ないかわりに、メニューも追加されません) 他の2台のPCでも試したところ、同じ結果でしたので、環境のせいではない気がします。 (Type:=msoControlComboBox) のプロパティーが、2007では使えなくなったのでしょうか? もしそうなら、代替プロパティーはあるのでしょうか? 考えられる原因等ご存じの方がおられましたら、ご教授いただけませんでしょうか? どうぞ、よろしくお願いいたします。

専門家に質問してみよう