• ベストアンサー

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