今、API関数GetOpenFileNameで「ファイルを開く」コモンダイアログを出して、
そこから選んだファイルのフルパスをテキストボックスに入れています。
さらにそのテキストボックスの中に入ったフルパスをAPI関数ShellExecuteで起動
させようとしているのですが、起動してくれません。
ちゃんとフルパスは入っています。
試しに新しいフォームを作ってShellExecute単独で、直接フルパスを
指定してやってみたところ起動できました。
問題は、パスではなく他の引数でしょうか??
ちなみに第1引数 : me.hwnd
第2引数 : "open"
第3引数 : フルパス
第4・5引数 : vbNullString
第6引数 : SW_SHOW
と指定しました。
第4と5の引数はvbNullCharや""と指定してみました。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
この回答への補足
戻り値は2でした。
参考URLへ行ったんですが、2なので
ERROR_FILE_NOT_FOUNDってことですよね??
ShellExecuteのみではちゃんと起動するんです・・・。
まだ、そのURLのプログラムを動かしていないのでこれから
やってみます。
引き続きおつきあいお願いします。
No.4
- 回答日時:
[仮説その1]
GetOpenFileName の処理で、文字列バッファからNull文字を取り除いていない。(Len関数で文字列長を検証可能)
修正例は、下記。
Dim lngRet As Long
lngRet = InStr(ofn.lpstrFile, vbNullChar)
Select Case lngRet
Case 0
strFullPath = ofn.lpstrFile
Case 1
strFullPath = ""
Case Is > 1
strFullPath = Left$(ofn.lpstrFile, lngRet - 1)
End Select
[仮説その2]
パスをダブルクォートで括っている。
ファイルのパスを扱うルーチンでは、スペースを含むパス、DOSの8.3形式を超える(いわゆるLongFileName)パスはダブルクォートで括るのが定石ですが、ShellExecute関数は例外で、ダブルクォートなしで動作します。
※ ダブルクォートがあると、NT4.0環境で動作しません。(Win9x環境および、Win2000以上の環境では問題なし)
いまどき、NT4.0でもないので、仮説(1)が有力だと思われます。
詳しいご説明ありがとうございました☆
実は・・・自分で解決いたしました。
報告が遅くなってしまって、お手数をおかけしました。
やっぱり問題になっていたところはパスの指定の仕方でした。
変数の中にフルパスが入ってたんですが、パスの中ではなく、後ろの方に
スペースが入ってたようです。
trimして入れたんですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) フォルダAから1つのファイルだけを、フォルダBへを移動するVBAについて 2 2022/07/25 11:45
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- 画像編集・動画編集・音楽編集 DVD Styler トラブル解決方法 6 2022/10/29 16:00
- Yahoo!メール yahooメールの起動について 1 2023/01/29 15:01
- 東北 10月に発売になるJR東日本のパスについて 2 2022/06/07 21:05
- Excel(エクセル) セルの値を別ブックのセルの値と突合する 1 2023/01/26 15:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
xcopyコマンドの進行状況を表示...
-
開いているファイルを削除し、...
-
ExcelVBAの使い方 ¥の使い方...
-
エクセルVBAで一つ上の階層...
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
【VB6】デバイスマネージャを表...
-
パスワード保護されたExcelファ...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
SaveAsの保存先について
-
fopenでのパス指定
-
コマンドプロンプトでファイル...
-
AccessからExcel最小化
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
Excel 相対パス
-
VBA★PDFをPDFアプリで印刷し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
初心者powershellのPS1ファイル...
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
パスワード保護されたExcelファ...
-
SaveAsの保存先について
-
ExcelVBAの使い方 ¥の使い方...
-
Windows PowerShellでscoopコマ...
-
開いているファイルを削除し、...
-
VBS パスに変数を入れたい
-
C#でのProcess.Startと変数path
-
コマンドプロンプトのコピー関...
-
EXCEL(VBA)で指定フォルダ内の...
-
実行ファイルのパスを取得したい
おすすめ情報