• ベストアンサー

VB4でパスが見つかりません

すみません、また教えて下さい。 VB4でプログラミングをしています。 VB4の入っているPCでは、期待通りに動くのですが、 セットアップウイザードで標準で配布されるファイルを付けて、 (次へ次へとクリックして)配布用ディスクを作り、 別のVB4の入っていないPCにセットアップして、 実行しようとすると、 「実行時エラー’76’パスが見つかりません」と出て動きません、 これは、何のパスが見つからないのでしょうか? PCは共にWin98seです。 単純な画面とやり取りして、ファイルを作るプログラムです。

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

  • ベストアンサー
  • yochi
  • ベストアンサー率25% (17/66)
回答No.4

#2の補足ですが、参考になるかどうか自信はありません f(^_^) APIからのフォルダ参照によるフルパス取得です。 下記コードを御参考下さい。VB精通者から見ると ”なんじゃこりゃ” ってなお粗末なコードですがご勘弁下さい m(_ _)m また、毎回指定を回避するには指定内容をレジストリに記録するか設定ファイル(iniファイル)に記録して参照する方法があります、いずれもやはりAPI使用により可能です。 お勧めは後者(設定ファイル作成方法)です・・・理由>>不必要になった場合レジストリにゴミを残さない為です。(レジストリ内容も削除はできますが) レスが長くなりましたが参考になれば幸いです。 'API宣言 Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long Private Const MaxP = 260 Private Type yochi Own As Long Roo As Long Nam As String Tit As String End Type Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal PointerToIdList As Long, ByVal pszPath As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBROWSEINFO As yochi) As Long Private Declare Function CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long) As Long Dim Z As Integer '------------------------------------------------------------------------------------------------ Sub Folder() 'フォルダの選択 Dim Path As String Dim Hw As Long Dim Ro As Long Dim Dr As String Z = 0 Dr = "フォルダを指定して下さい." Ro = GetFo(Hw, Dr, Path) If Ro = 0 Then If Z = 1 Then MsgBox "このフォルダは指定出来ません。" Exit Sub End If MsgBox Path ElseIf Ro = 1 Then End 'Exit Sub End If End Sub '------------------------------------------------------------------------------------------ Private Function GetFo(ByVal Hw As Long, ByVal Msg As String, ByRef Path As String) As Long Dim bi As yochi Dim pidl As Long Dim iRo As Long On Error GoTo ErrorHandler bi.Tit = Msg pidl = SHBrowseForFolder(bi) If pidl = 0 Then Exit Function End If Path = String$(MaxP + 1, Chr$(0)) If SHGetPathFromIDList(ByVal pidl, ByVal Path) = 0 Then iRo = CoTaskMemFree(pidl) Z = 1 Exit Function End If Path = Left(Path, InStr(Path, Chr$(0)) - 1) iRo = CoTaskMemFree(pidl) If iRo <> 0 Then End If Exit Function ErrorHandler: If pidl <> 0 Then CoTaskMemFree pidl End Function

yuzu2004
質問者

お礼

長い長いコードをありがとうございます。 訳のわからない質問に、こんなに時間を掛けて・・・ 敬意を表します。 一行一行勉強します。 自分が情けない(・_・、)

その他の回答 (3)

  • Good-S15
  • ベストアンサー率33% (149/439)
回答No.3

こんにちは。 プログラマで6年程勤務した者です。 ご参考程度でありますが、情報を提供します。 質問内容として、以下でよろしいのでしょうか? ・インストールFDを作成し、VB4が入っていない PCにインストールを行う。 だとすると、DAO等のVBで使用するファイルを 新規のPCにレジストリ登録しなければ、 このようなエラーが出たような気がします。 あと、参考になるかわかりませんが、URLを添付します。

参考URL:
http://www1.harenet.ne.jp/~unaap/
yuzu2004
質問者

お礼

ありがとうございました。 DAO? ううぅぅ~~恥かしい限りです。 勉強し直します。

  • yochi
  • ベストアンサー率25% (17/66)
回答No.2

おそらく先答者の言われる通り 実行ファイルまでのパスが合っていないのではないでしょうか? このプログラムがどう言った趣旨のものかわかりませんが、任意でパスを通すのであればダイアログから取得するAPIを使ってみてはいかがですかこれだとまず間違いなく当エラーは回避出来るはずですが・・・。

yuzu2004
質問者

お礼

ありがとうございました。 勉強不足で申し訳ございませんでした。 それと、上の詳細なコード記述を感謝します。

yuzu2004
質問者

補足

ありがとうございます。 >ダイアログから取得するAPIを使ってみてはいかがですか すみません、意味がわかりません。(・_・、) もう少し具体的に、教えて下さい。

  • inoue64
  • ベストアンサー率29% (334/1115)
回答No.1

プログラムの中で、 作ったパソコンにあって、実行するパソコンにはない ドライブやフォルダを指定していませんか? それをチェックして、直してみてはどうですか。

yuzu2004
質問者

お礼

ありがとうございました。 拡大鏡を使うみたいに、チェックしたのですが・・・ もう一度、チェックして見ます。

関連するQ&A

  • VB6ディストリビューション

    VB初心者です。 作成したシステムをディストリビューションウィザードを使用して 配布用のCABファイルを作成しました。 開発機ではセットアップできたのですが 他のPCでセットアップしようとしたところ  「Path or File Not Found」 というメッセージが2回出た後に  「次のラベルのディスクを挿入してください。   'ディスク0' ドライブE」 というメッセージが出てセットアップできません。   環境は Windows2000     VB6.0(SP5) どなたか原因・対処法をご存知の方、ご教示ください。 よろしくお願いいたします。

  • フォルダのパスが見つからない

    VB6のプログラムで単純にパスを定義しています。 Folder_Name = "C:\TEMP\TEST" の様に。 ところがWinXP,Win2000Proでは正常に動作するの ですがWin98SEでは実行時エラーでパス名が見つかりません。 確実に定義したパスはPC内にあります。 なぜかお教えお願いします。 (ファイルシステムのNTFSとFAT32で違いがあるのでしょうか)

  • vb2008 有料版と無料版を一つのPCにインストール。

    質問させていただきます。質問タイトルのようなことは可能なのでしょうか? なぜ上記のことが必要かいうと、 1.プログラムを配布する際は、ClickOnceやセットアッププロジェクトを使用せず、プロジェクトをまるまる配布先のPCにコピーして使いたい。(配布先PCにはVB2008EEをインストールする。開発もEEで行う。) 2.外部コンポーネントを使用した場合は、セットアッププロジェクトでプログラムの配布を行いたいので、その時に限りvb2008SEで開発を行いたい。 基本は1の方法でプログラムの配布を行いたいと思っています。 VB2008SEでプログラムの作成をしていて、万が一vb2008SE固有の機能を使用してしまい、VB2008EEで開けなかったということがないようにしたいため、開発用のPCにもEEをインストールしたいと思っています。 それと、SEがインストールされているがために、EEからでもSEの機能が使えてしまうのでは意味がないのでその辺も知っている方がいましたら 助言をお願いしたいと思っています。 以上、宜しくお願いします。

  • vb2005で作成したプログラムはどこに?

    vb2005で作成したプログラムはどこに? vb2005で作ったプログラムをビルド後に、 他のPCにsetup(インストール)したとします。 その場合、実行ファイル(.exe?)はどこにあるのでしょうか  また、コマンドプロンプトで実行ファイルを起動することは可能でしょうか

  • VB6(SP5)のインストーラ

    VB6(SP5)で、プログラミングをしております。 配布マシンへのインストール時に、特定のファイルをコピーしたり、 独自のプリンターの設定をしております。 これを、自動的に(インストール時に)実行出来る様な、インスートラは、 無いのでしょうか? 秀インスートルは、どうなのでしょうか? 宜しくお願い致します。

  • VB6.0 パスが見つかりません

    いつもお世話になってます。 タイトルの通りで、過去の質問も見たんですが該当するものが無かったかと思われますので質問します。 VB6.0を使用してます。 PCAで実行し、サーバPCBにフォルダ・ファイル作成する処理なのですが、タイトルの「76:パスが見つかりません。」エラーが出て止まってしまいます。 PCBへのパスの渡し方ですが、Pathという名のフォルダを共有にして[\\PCB\Path\]として先月まで半年以上、稼動してました。 しかし最近になって急にエラーが出ています。 思い当たる節があるとすれば、1度IPアドレスでPCAからPCBへアドレス指定で飛んだことくらいです。 (\\12.345.678.90\Pathとして参照した) 時間指定で起動するよう設定していまして、10:00の時点でエラーが出た後、\\PCB\Pathで参照したあとに再度手動でexeを実行すると、今度はきちんと作動します。 ここからは余談ですが、解決策として3つの案が出てます。 (解決策といっても他にも改善することになり、新規として作ることになったのです。結局はパス指定するので…) 1.現在のを原因究明し、同様にコンピュータ名で指定する。 2.パス部分をIPで指定する。 3.ネットワークドライブに割り当てる(Z:\...など) 2.だとIPを変更した際にまたエラーになってしまうこと。 3.は起動時に1度は割り当てたドライブへアクセスすること。 として考えています。 長くなりましたが、まずは原因としてIPで指定したのがまずかったのでしょうか? そして解決するにはどのようにすればいいでしょうか。 ご教授願います。

  • VB5で依存ファイルが最新ではありませんがでます

    VB5で次のような症状で困っていますお助けください。 セットアップウイザードでセットアップデスクを作成しょうとしましたが次の様 なエラーが出て困っていますどのようにすれば出なくなるのでしょうか。 『以下のコンポーネントの依存ファイルが最新ではありません。 ここでウィザードを終了し、このウィザードを使用してこれらのコンポーネント の依存ファイルを再作成する必要があります。』 COMDLG32.OCX MCL32.OCX のメッセージが出ます。ヘルプで調べると 『一覧に表示されたファイルが Microsoft Visual Basic で作成したコンポー ネントである場合は、セットアップ ウィザードを使用して、依存ファイルを作 成できます。 まず、セットアップ ウィザードを再起動して、目的のコンポーネントのプロジ ェクト ファイル (.vbp) を選択し、[依存ファイルのみを生成] をクリックし ます。セットアップ ウィザードのすべてのステップを実行して、古くなった依 存ファイルを作成します。その後、セットアップ ウィザードを再起動し、現在 のプロジェクトについてもう一度実行します。』 このヘルプ通りに[依存ファイルのみを生成] を行い再度セットアップ ウィザー ドの再起動ったのですが同じエラーが出てしまいます。 どうかどのように対応すれば良いかお教え下さい。

  • VB5.0とVB6.0

    ご教授お願いします。 VB4.0で開発を始め、VB5.0に。主にDBはDAOを使っています。いくつかのアプリを配布し(セットアップウィザードを使い)、その後VB6.0がリリースされましたが、配布済みアプリに影響があると思いB6.0へのUpをあきらめていました。VB5.0は98でしか認められていず、2000でも試しましたが、確かに一部の動作でエラーが起こったりしました。使用しているマシンが不安定になったので、中古PCに98をインストールし、開発環境を移しましたが、セットアップウィザードが「予期せぬエラー」とかで動きませんでした。以上が経過です。 ようやくVB6.0を入手し、とりあえず2000で、2,3のアプリで試したところ、そのまま(何の手も加えず)OKでした。ちょっと気がついた点といえば、作成されたEXEのサイズが1割ほど小さくなっていました。 質問ですが、VB5.0→VB6.0では何が変わったのでしょうか?(当時はある程度読んだ気がしますが、覚えていません) そして、アップ後、注意しなければならないことは何でしょうか? よろしくお願いいたします。

  • VB6とAccess

    VB6(SP5)で、プログラミングをしております。 Jetを使ってAccessのファイルを読み書きしています。 配布先のPCにAccessがインストールされていない場合、サポートで、 内部のデータを見る必要があります。皆さん、どうしているのでしょうか ? また、何か良い方法があれば教えて下さい。 宜しくお願い致します。

  • VB教えてくださいm(__)m

    VBでプログラミングしてるのですが、ある変数”A”には(パス+ファイル名)が入っているのですが、この中からファイル名だけを取得するにはどうすればよいのでしょうか? (d:\aaa\bbb\ccc\ddd.txt → ddd.txt)

専門家に質問してみよう