関連付けされたファイルを起動 |
関連付けされたファイルを起動(*.Xls 等) (050) 色々とやり方がありますので、あなたの環境に合ったやり方で試してください (ファイルのパス等はご自分の環境に合せて書き直して下さい。) |
|
構文 Call Shell("start.exe 起動ファイル名") 使用例 1 Private Sub Command1_Click() Call Shell("start.exe test.xls") 'Call Shell("start.exe c:test.xls") 'こちらは起動しない 'start.exe は Win95・98用です。WindowsXP では使用できません End Sub Private Sub Command5_Click() 'こちらはWindowsXPでも可 Call Shell(Environ("ComSpec") & " /c start test.xls") End Sub ルートディレクトリにある”c:\test_1.xls”がエクセルとともに立ち上がる 使用例 2 Private Sub Command2_Click() '空白を使用したフォルダー名用 'Call Shell("start.exe c:\My Documents\test.xls") ' ↑ これでは起動しない Dim MyFile1 As String MyFile1 = Chr$(34) & "c:\My Documents\test.xls" & Chr$(34) Call Shell("start.exe " & MyFile1) ' ↑ 1文字空白を入れる End Sub 又は Private Sub Command3_Click() '関連付けがなくても起動できるが環境に影響される Dim MyFile1 As String Dim MyFile2 As String Dim MyFile3 As String Dim ret As Long MyFile1 = "c:\My Documents\test.xls" '拡張子を照合して(大文字小文字の区別せず)合っていれば起動 If StrComp(Right$(MyFile1, 3), "xls", 1) = 0 Then MyFile2 = "C:\Program Files\Microsoft Office\Office\Excel.exe " MyFile3 = Chr$(34) & MyFile1 & Chr$(34) '後は通常のEXEファイルを起動する要領で ret = Shell(MyFile2 & MyFile3, vbMaximizedFocus) End If End Sub これでもエクセルファイルが立ち上がります。 |
|
ちょっと便利な使い方 | |
上記の例で c:\My Documents のような空白を使用したフォルダー等はShell関数 では使用できません。(MS-DOS 流ルールにより) そこでファイル名にChr$(34) & "ファイル名" & Chr$(34) を追加すること で空白入りファイルが使えるようになります。 |
|
Win32 API関数を使ったやり方 | |
宣言セクションに記入 Option Explicit '拡張子に関連付けられたプログラムを実行する (P699) Private Declare Function ShellExecute Lib "shell32.dll" _ 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 Private Const SW_SHOWMAXIMIZED = 3 'ウィンドウをアクティブ化し最大表示する Private Sub Command4_Click() 'APIを使って関連付け起動 Dim ret As Long Dim MyFile1 As String MyFile1 = "c:\My Documents\test.xls" 'MyFile1 = "test.xls" ret = ShellExecute(Me.hwnd, "Open", MyFile1, _ vbNullString, vbNullString, SW_SHOWMAXIMIZED) End Sub 他のウィンドウの表示方法は定数を別途調べて下さい。 |
2003/04/27