他の実行形式(*.EXE)ファイルの実行
                                                        玄関へお回り下さい。
VB上からほかの実行可能プログラムを起動します   (052)
   記述
  Shell(プログラム名,ウィンドウスタイル)
  プログラム名はフルパスで
  ウィンドウスタイルは省略可能

戻値
  実行中のプログラムを識別する重複しない番号(タスクID)このタスクIDは AppActivate
  ステートメントで使用される

使用例
Private Sub Command1_Click()
  Dim Ret As Long
  Ret = Shell("C:\WINDOWS\CALC.EXE", vbNormalFocus) ' 電卓を実行します。
  '     Shell "C:\WINDOWS\CALC.EXE"         'これでも可
End Sub


Private Sub Command2_Click()
  Dim Ret As Long
  Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE", vbNormalFocus)
End Sub


上記の方法で起動できない機種は下記を試して下さい。

Private Sub Command3_Click()
  Dim Ret As Long
  Dim MyFile As String
  MyFile = Chr$(34) & "C:\Program Files\Accessories\MSPAINT.EXE" & Chr$(34)
  Ret = Shell(MyFile, vbNormalFocus)
End Sub


   ご注意
  c:\My Documents のような空白を使用したフォルダー等はShell関数
  では使用できません。(MS-DOS 流ルールにより)
  そこでファイル名にChr(34) & "ファイル名" & Chr(34) を追加することで
  空白入りファイルが使えるようになります。
  但し、最近の機種は使用可能のようです。(Win98 SE 以降??)

この場合は必要です

Private Sub Command4_Click()
  Dim Ret As Long
   'Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE C:\My Documents\inu.bmp", vbNormalFocus)
  '   ↑  これでは起動しない
  Dim MyFile As String
  MyFile = Chr$(34) & "C:\My Documents\inu.bmp" & Chr$(34)
  Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE " _
                    & MyFile, vbNormalFocus)
End Sub

DOSの内部コマンドを実行する
      'ファイル等の表示
Shell "command.com /c dir /w", 1
'バッチファイルの実行
Shell "command.com /c MyBat.bat", 1
'ファイルのコピー
Shell "command.com /c copy c:\OldFile c:\NewFile", 1


'テキストファイル同士の結合(Cファイル=Aファイル+Bファイル)

  Shell "command.com /c copy c:\AFile + c:\BFile CFile", 1

これだけのことでテキストボックスにAFileを表示し、BFileを続けて表示し、その内容をCFileに書き出し保存したのと同じ状態になる。
Txt ファイルと CSVファイルとの結合もOKです。


ウィンドウスタイル
定       数 ウ イ ン ド ウ の 状 態
vbHide        フォーカスを持ち、非表示にされるウィンドウ
vbNormalFocus フォーカスを持ち、元のサイズと位置に復元されるウィンドウ
vbMinimizedFocus フォーカスを持ち、最小化表示されるウィンドウ
vbMaximizedFocus フォーカスを持ち、最大化表示されるウィンドウ
vbNormalNoFocus 最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。
vbMinimizedNoFocus 最小化表示されるフォーカスを持たないウィンドウ現在アクティブなウィンドウは、アクティブのままです。




2002/05/12