【Mac】ExcelVBAで日本語ファイルのパスを指定する方法

2014年2月10日月曜日

Excel mac vba

t f B! P L

Th Excel2

MacでExcelVBAを使う際にもっとも基本的なことなのに難しいことのひとつに日本語のファイルのパス指定があります。

Macでも、Applescriptを使うと、日本語のパスでも取得可能でしたので、忘備録のため記載します。




コード

Public Sub Main_Proc()

     MyPath = GetFilePathForMac("Excelを選んでください", " {""xls"", ""xlsx""}")
    ActiveSheet.Range("C9").Value = MyPath

End Sub

Rem Mac用にファイルパスを取得する(1つのファイル)
Private Function GetFilePathForMac(mypronpt As String, myfiletype As String) As String
    Dim MyPath As String
    Dim MyScript As String
    Dim MyFiles As String
    Dim Fname As String
    
    On Error Resume Next
    'ローカルファイルのパスをデフォルトのパスとする
    MyPath = MacScript("return (path to documents folder) as String")
  
    'AppleScriptを設定する。
    MyScript = _
    "set applescript's text item delimiters to "","" " & vbNewLine & _
               "set theFiles to (choose file of type " & _
             myfiletype & _
               "with prompt """ & mypronpt & """ default location alias """ & _
               MyPath & """) as string" & vbNewLine & _
               "set applescript's text item delimiters to """" " & vbNewLine & _
               "return theFiles"

    
    'AppleScriptを使用してファイルのパスを取得する。Finderが立ち上がります。
    MyFiles = MacScript(MyScript)
    
    'エラーが起きたらスルーします。
    On Error GoTo 0

    'ファイルのパスが取得できたら以下を処理する。
    If MyFiles <> "" Then
        GetFilePathForMac = MyFiles
       Else
        MsgBox "ファイルが取得できませんでした"
        GetFilePathForMac = ""
    End If

End Function

解説1

Public Sub Main_Proc()

     MyPath = GetFilePathForMac("Excelを選んでください", " {""xls"", ""xlsx""}")
    ActiveSheet.Range("C9").Value = MyPath

End Sub
GetFilePathForMacでファイルのパスを取得します。
引数として、ダイアログに表示する文字と、ファイルの拡張子を渡します。

返ってきたパスをExcelのセル上に描写しています。

解説2

MyScriptとして、AppleScriptを指定します。
ここは、AppleScriptエディタでいろいろとやってみると、複数のファイルを指定したりなど変えることができます。

MacScript関数を使って、ExcelからAppleScriptを実行します。


Rem Mac用にファイルパスを取得する(1つのファイル)
Private Function GetFilePathForMac(mypronpt As String, myfiletype As String) As String
    Dim MyPath As String
    Dim MyScript As String
    Dim MyFiles As String
    Dim Fname As String
    
    On Error Resume Next
    'ローカルファイルのパスをデフォルトのパスとする
    MyPath = MacScript("return (path to documents folder) as String")
  
    'AppleScriptを設定する。
    MyScript = _
    "set applescript's text item delimiters to "","" " & vbNewLine & _
               "set theFiles to (choose file of type " & _
             myfiletype & _
               "with prompt """ & mypronpt & """ default location alias """ & _
               MyPath & """) as string" & vbNewLine & _
               "set applescript's text item delimiters to """" " & vbNewLine & _
               "return theFiles"

    
    'AppleScriptを使用してファイルのパスを取得する。Finderが立ち上がります。
    MyFiles = MacScript(MyScript)
    
    'エラーが起きたらスルーします。
    On Error GoTo 0

    'ファイルのパスが取得できたら以下を処理する。
    If MyFiles <> "" Then
        GetFilePathForMac = MyFiles
       Else
        MsgBox "ファイルが取得できませんでした"
        GetFilePathForMac = ""
    End If

End Function

最後に

これだけのことなのに、日本語で解説してくれるサイトが少ないために意外と苦労します。

何かのお役にたてば。

以上です。

過去の記事

ラベル

アプリ (545) iPhone (485) mac (244) 買い物 (89) 番外 (87) ブログ (74) 書評 (68) 写真 (64) Blogger (63) 仕事 (55) webサービス (51) 生活 (50) todo (38) tips (36) rss (33) DVD (24) DraftPad (23) music (19) 外食 (14) 機種変更 (14) メール (13) ニュース (12) お出かけ (11) まとめ (11) アクセス解析 (11) HTML (9) ドラマ (8) vba (7) 絵本 (7) Excel (6) Textwell (6) web (4) libreoffice (3) twitter (3) 勉強 (3) basic (2) 素材 (2)

ブログを検索

QooQ