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

2022年6月15日水曜日

Excel Mac VBA

t f B! P L





過去に書いた以下の記事が未だにアクセスがあるようなので、改めてここでも書いておきます。





MacBook Air (M1, 2020)でも動作するか

ひとまず、2014年の記事なので、2022年現在のわたしの環境(MacBook Air (M1, 2020))でも動作するのか試してみました。

Excelの新規ブックを立ち上げて、VBEにコードを貼り付けます。

① VBEを立ち上げる。


② VBEに以下のコードを貼り付ける


コード

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


③ 実行してみる

コードを貼り付けたら実行してみます。ここでは、コードをsheet1の中に貼り付けていますが、どこでも大丈夫かと思います。
実行するとExcelファイルを選択する画面が現れるので、Excelファイルを選択します。


④ 取得したファイルパスを確認する

選択したExcelファイルのファイルパスがExcel上に記載されているか確認します。




2022年現在でも普通に動作する

コードをコピペして実行したところ、普通に動作しました。
AppleScriptの内容を書き換えてあげれば、ファイル名を取得する以外の処理も可能かと思います。




このブログを検索

最近のTOP10

QooQ