他の環境(PC)で開発したOCXを、他の環境(PC)で作成使用とすると、
エラーメッセージ表示:「コンパイルエラープロジェクトまたはライブラリが
見つかりません」と表示されます。その後ファイル内のleft関数にフォーカス
されます。OCXの作成とは、VBPファイルを開き、「ファイル」→
「XXXX.ocx(exe)を作成」を指します。[開発環境]win98,VB6.0(SP3)
なにかライブラリなどを追加する必要があるのでしょうか?


  

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

A 回答 (2件)

他のPCでは、レジストリ登録がされていないので使用できません。



No.1さんの方法でレジストリ登録してもいいですし
開発環境があるなら参照設定で読み込むことによって
自動的にレジストリ登録されます。

それと注意点ですが VB6で作成したOCXを使用するには、OCX作成中に使用したコンポーネントを組み込まないと動作しません。インストールファイルを作成する場合も同様にコンポーネントを追加してあげる必要があります。

また、余談ですが、OCXを開発したマシンは、コンパイル時に作成した場所が
登録場所になります。
VB6に付属のインストーラー(ディストリビューション ウィザード)などで
作成されたセットアップディスクでは、OSのSystemにコピー登録されます。
    • good
    • 0

こんにちは。

itohhといいます。

レジストリ登録は行っていますか?

DOS窓でexeファイルが格納してあるディレクトリに移って
regsvr32 xxxxx.exe
してみてください。
あと、参照も設定しなければいけないかもしれません。
    • good
    • 0

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

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

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

Qexcel vba 他ファイルマクロ処理中断、自己ファイルマクロ処理後、再度他ファイルマクロ継続方法

excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい

他のEXCELファイルとして、フリーソフトを利用しています。
そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。)
そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保存することを、入力データファイルを変えながら、繰り返し行いたいです。
そこで、処理マクロを作成しています。その手順とVBAを説明します。

1)フリーソフト(違法なものではありません。)を開き、
2)そのフリーソフトのシート内のボタンを、VBAで、マウスカーソルを移動させて、マウスのキー操作で、「押す」「離す」を行い、
3)ファイルの初期化の問合せの警告が出るので、キー操作で、「Y」を押し、
4)データファイルの名称をクリップボードにコピーし
5)EXCELのカレントフォルダを、データファイルのあるフォルダに変えて
6)DoEventsとして、フリーソフトのデータファイル入力画面を開いています。
この時、画面のポインタは、データ入力画面のファイル名入力欄にあり、
この後、データファイル名をクリップボードから入力したいので、
キー操作で、「crtl+v」としたいのですが
フリーソフトのマクロが起動中で、作成している処理マクロに制御が移らないためと思いますが
入力できません。(人手での入力は可能ですが)、自動化したいので、どの様にすれば良いか教えて下さい。
マクロは長いので、抜粋して記載します。

sub a()
(宣言文省略します。)
Workbooks.Open freesoft
Dim mPSet As Long
mPSet = SetCursorPos(b,c)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
keybd_event VK_Y, 0, fKEYDOWN, 0
keybd_event VK_Y, 0, fKEYUP, 0
Application.CutCopyMode = False
Dim d As New DataObject
With d
.SetText e
.PutInClipboard
End With
ChDrive f
ChDir g
DoEvents
(ここで、止まります。)
With d
.GetFromClipboard
.GetText
End With
keybd_event VK_RETURN, 0, fKEYDOWN, 0
keybd_event VK_RETURN, 0, fKEYUP, 0
DoEvents
Dim mPSet2 As Long
mPSet2 = SetCursorPos(h, i)
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
Workbooks(freesoft).SaveAs FileFormat:=xlNormal, Filename:=k
Workbooks(k).Close
End sub

excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい

他のEXCELファイルとして、フリーソフトを利用しています。
そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。)
そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保...続きを読む

Aベストアンサー

フリーソフトに関する詳細が分からないのですが、たぶん、MsgBox、InputBox、または、モーダルのUserFormが表示されたタイミングで、動作待ちになっているものと思われます。動作待ちになるトリガーは、Workbooks.Open freesoftでしょうか?(Open直後にUserFormが表示される?)

であれば、次のように、Shell関数でブックを開くようにすれば良いと思います。
Dim FreeSoft
FreeSoft = Shell("Excel " & "C:\xxxxx\フリーソフト.xlsm",1)
MsgBox "フリーソフトが開くまでの時間稼ぎ!!"
AppActivate FreeSoft

その後は、SendKeysステートメントでフリーソフトを操作することになります。たぶん、mouse_eventやkeybd_event も使えると思います。
ただし、Workbooks(freesoft).SaveAs 等は使えなくなるので、SendKeysによるキーボード操作で保存動作を行う必要があります。

QRightとLeft関数のライブラリがみつからなくなった

VB6.0で開発しています。
TIFF-XChangeとPDF-XChangeなどいろいろお試し版をインストールして
サンプルを実行しようとしたら
Right関数とLeft関数、Space関数などが
見つからないとエラーが出るようになり
コンパイルできなくなってしまいました。
どうやったら直るのでしょうか。

Aベストアンサー

参照不可になっているもののチェックを外してみてください。

QWMP.OCX(Windows Media PlayerのOCX)の使用し方について

色々と参考書や雑誌などに目を通しましたが、
WMP.OCXのコンポーネントについての使い方が記載されたものが全く無く大変悩んでおります。
もし分かる方が、おられましたらお願い致します。

Aベストアンサー

そのファイルは名前からしてWindows Media Playerのものだと思いますが、どうやら、一般プログラマが自分のプログラムに利用するためにあるカスタムコントロールではないようです。
とくにVBで使うためのものではないようで。
おそらく、再配布ライセンスもありません。

ちょっと古い話ですが、Active Movieコントロールである、amovie.ocxについても同様でした。
それでも個人ユースで、色々と作ってしまいましたが。

使い方とまではいきませんが、プロパティやそのちょっとした説明だけなら、F2を押して現れるオブジェクトブラウザで確認することができるはずです。
私もamovie.ocxについてはそれでなんとか解析しました。

チャレンジあれ。

はぽるんでした。

QVB2008によるOCX作成、またはHTMLからのDLL呼び出しは可能でしょうか?

こんにちは。
はじめての投稿になります。

私は現在、「ファイルを開く」のコモンダイアログボックスを起動できるHTML画面を作りたいと思っております。

その画面ではサーバ側のファイルを閲覧させたいのですが、認証やセキュリティなどの観点から、
ダイアログボックスの起動はクライアント側で動作するようにしたいです。

それにあたって、ダイアログボックスを呼び出すオブジェクトをAxtiveXコントロール(OCX)で作成し、
そのOCXをHTMLから呼び出すことで実現できないかと考えました。


そこで、以下のことを調べております。
(1)無償のVB開発環境を使ってAxtiveXコントロールを作成することができるか?
(2)AxtiveXコントロールを作成できないなら、AxtiveX DLLをHTMLから呼び出せるか?

ちなみに現在使用している「無償のVB開発環境」は、Visual Studioの Visual Basic 2008 Express Edition です。

(1)に関しては、VB6ではAxtiveXコントロールを作成できたと聞きますが、どうもVB2008では(.Netでは)作成できないようです。(現在までに見つけた情報に、「.Netで作成できる」というものがないため)

(2)に関しては、VB2008 Express Edition を使って、ダイアログボックスを呼び出す AxtiveX DLL を作成することには成功しています。

VBのCOMクラスのテンプレートにダイアログボックス起動の関数を記述し、ビルドしてdllを作成。

別途VBによるWindowsフォームアプリケーションを作成し、「参照の追加」で上記dllを登録してダイアログボックス起動の関数を呼び出す。

という方法で、ダイアログボックスを呼び出せました。

ですので、HTMLの画面からも同じようにdll呼び出しができないかと思ったのですが、現在のところ方法が見つかりません。

ダイアログボックスを開く機能さえあればよく、ユーザーインターフェースは不要なので AxtiveX DLL でもよいと思ったのですが、HTMLからの呼び出しにはDLLではなくOCXを用いるという情報しか見つけられませんでした。


以上のことから、VB2008ではHTMLからダイアログボックスを呼び出すActiveXを作れないのではないか?と思える状態なのですが、それが可能であるという話がもしありましたら、お教えいただきたく思います。


最低限「クライアント側からのダイアログボックス起動ができるHTML」「ダイアログボックス起動はVBで作成」という条件を満たせればよいので、(1)(2)で実現できなければ別の方法を探すことにします。

最後に
必要かどうかわかりませんが、(2)で試しに作ったダイアログボックス呼び出しのCOMクラスのソースを載せておきます。
ご回答の参考になりますでしょうか。

Imports System.Windows.Forms
<ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)> _
Public Class ComClass1

Public Const ClassId As String = "2bdd38a4-f946-44e2-af47-5b9cbd2c24d5"
Public Const InterfaceId As String = "fcd22890-f4cd-4e2a-b8c0-ae83f290c250"
Public Const EventsId As String = "86c74809-966a-47cf-9324-adce776030eb"

Public Sub New()
MyBase.New()
End Sub

Public Function subOpenFile(ByVal inFilePass As String) As Boolean
subOpenFile = False

'OpenFileDialogクラスのインスタンスを作成
Dim ofd As New OpenFileDialog()

If inFilePass = "" Then
ofd.InitialDirectory = "C:\"
Else
ofd.InitialDirectory = inFilePass
End If

ofd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"
ofd.FilterIndex = 2
ofd.Title = "開くファイルを選択してください"
ofd.RestoreDirectory = True
ofd.CheckFileExists = True
ofd.CheckPathExists = True

'ダイアログを表示
If ofd.ShowDialog() = DialogResult.OK Then
Console.WriteLine(ofd.FileName)
End If
subOpenFile = True
End Function
End Class


(呼び出し側では以下の記述で呼び出しに成功しました)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Test As New COMTest1.ComClass1

Call Test.subOpenFile("C:\WINDOWS")
End Sub

以上、よろしくお願いいたします。

こんにちは。
はじめての投稿になります。

私は現在、「ファイルを開く」のコモンダイアログボックスを起動できるHTML画面を作りたいと思っております。

その画面ではサーバ側のファイルを閲覧させたいのですが、認証やセキュリティなどの観点から、
ダイアログボックスの起動はクライアント側で動作するようにしたいです。

それにあたって、ダイアログボックスを呼び出すオブジェクトをAxtiveXコントロール(OCX)で作成し、
そのOCXをHTMLから呼び出すことで実現できないかと考えました。


そこで...続きを読む

Aベストアンサー

> HTMLからのDLL呼び出しは可能でしょうか?

EXEなら可能(だだし、色々制限があり)

ノータッチ・デプロイメント
http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/ntdeploy_01.html


> その画面ではサーバ側のファイルを閲覧させたいのですが、認証やセキュリティなどの観点から、
> ダイアログボックスの起動はクライアント側で動作するようにしたいです。

クライアント側からサーバ側のファイルを任意に参照??
どんな方法でも無理でしょう。

> Call Test.subOpenFile("C:\WINDOWS")

これはクライアント側のフォルダを開いているだけです。


サーバ側のフォルダをWebで公開したいのであれば、

フォルダを右クリック→Web共有
IISマネージャでフォルダを右クリック→ディレクトリ参照をオン。
HTMLからそのフォルダにリンク。

または

WebアプリをASP.NETなどで自作する。

QVB6で作成したOCX(ActiveX)について

お世話になります。
下記項目に対しての知識が無くて困っております。

VB6.0で作成したOCX(ActiveX)についてですが、VC++やVB以外のプログラム言語で使用できるのでしょうか?
今回はDelphiでの使用を検討しておりますが、環境が無い為試すことができません。

ご存知の方がいたら、ご教授お願いいたします。

Aベストアンサー

DelphiはActiveXを利用するためのインターフェイスを持っています。

メニューの、「コンポーネント」→「ActiveX コントロールの取り込み」を使うと、通常のVCLコンポーネントのように使えます。
VBとはメソッドやプロパティの呼び出し方が若干違ったりするところもありますので戸惑うかもしれませんが、ほとんどの場合、取り込んだActiveXの全ての機能を利用できます。

参考URLをどうぞ

参考URL:http://www.wakhok.ac.jp/~tetsuo/delphi/text/chap_a/pb_a03.html


このカテゴリの人気Q&Aランキング

おすすめ情報