Visual Basic Tips


「ファイル名を指定して実行」と同じようにアプリケーションを起動する(API)


拡張子docのファイルを指定して実行すればWordが起動し、xlsのファイルを指定して実行すればExcelが起動します。URLを指定して実行すればブラウザが起動して該当ページを表示します。


'---------------------------------------------------------
' ShellExecute使用
'---------------------------------------------------------
Private Sub Command1_Click()
  Dim lngRet As Long
  Dim strFilePath As String

  strFilePath = App.Path & "\テスト.txt"

  lngRet = ShellExecute(0, "open", strFilePath, vbNullString, CurDir$, SW_SHOWNORMAL)
End Sub

'---------------------------------------------------------
' ShellExecuteEx使用
'---------------------------------------------------------
Private Sub Command2_Click()
  Dim sdtSEXI As SHELLEXECUTEINFO
  Dim lngRet As Long
  Dim strFilePath As String

  strFilePath = App.Path & "\テスト.txt"

  With sdtSEXI
    .cbSize = Len(sdtSEXI)
    .fMask = SEE_MASK_NOCLOSEPROCESS
    .hwnd = Me.hwnd
    .lpVerb = "open"
    .lpFile = strFilePath
    .lpParameters = vbNullChar
    .lpDirectory = vbNullChar
    .nShow = SW_SHOWNORMAL
    .hInstApp = 0
    .lpIDList = 0
  End With

  lngRet = ShellExecuteEX(sdtSEXI)
End Sub

'-------------------------------------------------------
' Module
'-------------------------------------------------------
Public Declare Function ShellExecute Lib "shell32" Alias "ShellExecuteA" _
(
ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

'-------------------------------------------------------
Public Declare Function ShellExecuteEX Lib "shell32.dll" Alias "ShellExecuteEx" (SEI As SHELLEXECUTEINFO) As Long

'ShellExecuteEXで使用する構造体
Public Type SHELLEXECUTEINFO
  cbSize As Long
  fMask As Long
  hwnd As Long
  lpVerb As String
  lpFile As String
  lpParameters As String
  lpDirectory As String
  nShow As Long
  hInstApp As Long
  lpIDList As Long
  lpClass As String
  hkeyClass As Long
  dwHotKey As Long
  hIcon As Long
  hProcess As Long
End Type
'ShellExecuteEXで使用する定数
Public Const SEE_MASK_NOCLOSEPROCESS = &H40

Public Const SW_SHOWNORMAL = 1
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOW = 5
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_SHOWDEFAULT = 10


DownLoad vbtips040.lzh 2KB (VB6.0)