Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13435 / 13644 ツリー ←次へ | 前へ→

【5405】Shell関数で重複起動を避けてファイルを開く カンセツ 03/5/10(土) 14:58 質問
【5412】Re:Shell関数で重複起動を避けてファイル... パピー 03/5/12(月) 9:52 発言
【5433】Re:Shell関数で重複起動を避けてファイル... カンセツ 03/5/13(火) 17:14 発言
【5440】Re:Shell関数で重複起動を避けてファイル... パピー 03/5/14(水) 8:58 発言

【5405】Shell関数で重複起動を避けてファイルを開...
質問  カンセツ  - 03/5/10(土) 14:58 -

引用なし
パスワード
   こんにちは。

Shell関数を使用して、あるアプリケーションの複数のファイルを開きたいのですが、
既にそのアプリケーションが起動済みの場合は、そのアプリケーション上に
次々にファイルを開いていきたいのですが。

****************************************************
AP_PATH  : アプリケーションEXEのパス
FILE_NAME : 開きたいファイル名

  ret = Shell(AP_PATH & " " & FILE_NAME)
****************************************************

アプリケーションの重複起動防止は、そのハンドルを取得し取得できたら
既に起動済みとし、アプリケーションを起動しないというのはわかるのですが・・・
さらにファイルを開く方法はないでしょうか?


  ShellExecuteは、このアプリケーションはバージョン違いが存在し(拡張子は同じ)、
  AP_PATHのアプリケーションで必ず開けるとは限らないのでshell関数を使用しようと
  思っています(レジストリ変更は使用したくないな〜。)

【5412】Re:Shell関数で重複起動を避けてファイル...
発言  パピー  - 03/5/12(月) 9:52 -

引用なし
パスワード
   ▼カンセツ さん:こんにちは。
>既にそのアプリケーションが起動済みの場合は、そのアプリケーション上に
>次々にファイルを開いていきたいのですが。
そのアプリケーションが、どの様な物か不明ですが?
( >そのアプリケーション上に次々に開いていきたい・・・・)

そのアプリケーションが重複起動を自らが、防止していないのであれば
単純にshell起動できるのではないのでしょうか?

例えば、メモ帳を例にすれば
Sub test()
  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file1.txt", 1)
  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file2.txt", 1)
  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file3.txt", 1)
End Sub
で三つのファイルが開きます。

カンセツさんが、お知りになりたいのは、こんな事では無いですよね?
的を外しているようですが、ごめんなさい。

【5433】Re:Shell関数で重複起動を避けてファイル...
発言  カンセツ  - 03/5/13(火) 17:14 -

引用なし
パスワード
   ▼パピー さん:こんにちは。

>Sub test()
>  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file1.txt", 1)
>  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file2.txt", 1)
>  ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file3.txt", 1)
>End Sub
>で三つのファイルが開きます。

上記だとメモ帳が3本起動すると思いますが、
1つのメモ帳内で三つのファイルを開きたいのです。
文章がわかりずらかったですね・・・・m(__)m

【5440】Re:Shell関数で重複起動を避けてファイル...
発言  パピー  - 03/5/14(水) 8:58 -

引用なし
パスワード
   ▼カンセツ さん:こんにちは。

>上記だとメモ帳が3本起動すると思いますが、
>1つのメモ帳内で三つのファイルを開きたいのです。

そうですか、と言う事は、やはり、『あるアプリケーション』の作り(仕様)に
依存するのではと思いますが。
shellで起動されて、コマンドラインを受け取った後の『あるアプリケーション』
がどの様にするかですよね。
エクセルのVBA側では、コントロールはできないのではないかと思えます。

例えばですよ、
Sub test2()
ret = Shell("C:\WINDOWS\NOTEPAD.EXE D:\work\file1.txt D:\work\file2.txt", 1)
End Sub
としても、これは、メモ帳がコマンドラインで引数を受け取った時にfile1.txtと
file2.txtを連続して開いてくれれば良いわけですよね。
しかし、メモ帳は"D:\work\file1.txt D:\work\file2.txt"を一つのファイル名
として処理をしますね。
メモ帳の仕様では、一つのファイルしか処理をしないようになっているのでは・・・

お役に立てず、すいません。

13435 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free