6846
VBAで<開く>ダイアログボックスから選択したファイルのパスを取得する方法についての質問です。

VBAで<開く>ダイアログボックスからファイルを選択は、下記のように実現しました。

```

     strFileName = MacScript("Choose File")
    
```

ファイルパスを取得しようとしたのですが、構文エラーとなり、パスが取得できません。

```

     MsgBox strFileName
     intFF = FreeFile
     Open strFileName For Input As #intFF　　←ここでエラー
    
```

strFileNameをウォッチ式で確認すると、下記のようになりました。

![strFileName](https://i.stack.imgur.com/WqaUW.png)
CC BY-SA 3.0
2015-02-20T07:19:15.763
6829
2015-02-21T00:03:55.847
7590
question
macos vba excel
VBAで<開く>ダイアログボックスから選択したファイルのパスを取得するには
VBA自体でもファイル選択ダイアログを出す事ができますので以下の様にすれば取得することができます。  
Falseが返った場合、ダイアログでキャンセルされています。

```

    Dim strFilename As Variant
    Dim intFF As Integer
    
    strFilename = Application.GetOpenFilename
    Debug.Print strFilename
    
    if strFilename = False then Exit Sub
    
    intFF = FreeFile
    Open strFilename For Input As #intFF
    Input #intFF, strLine
    Debug.Print strLine
    Close #intFF
    
```

AppleScriptを利用するのであれば、`as text` か `as string`
を指定するとOpenでも使用できる形式で結果を取得する事ができます。  
キャンセルされた場合エラーとなるので、AppleScript側で対処するか、VBAで On Error を利用して対処してください。

```

    Err.Clear
    On Error Resume Next
    
    strFilename = MacScript("choose file  as String")
    If Err.Number <> 0 Then
        On Error GoTo 0
        Exit Sub
    End If
    
    Debug.Print strFilename
    
    intFF = FreeFile
    Open strFilename For Input As #intFF
    Input #intFF, strLine
    Debug.Print strLine
    Close #intFF
    
```

なお、Debug.Print の結果は `表示` メニューから `イミディエイトウィンドウ` で開ける、イミディエイトウィンドウ上で確認できます。
CC BY-SA 3.0
2015-02-20T23:57:28.000
6846
2015-02-21T00:03:55.847
2015-02-21T00:03:55.847
728
728
6829
answer